trash
=====
About
-----
Terrence's Re-Borne Again Shell (trash) is a new shell aimed at significantly improving the command-line experience.
Status
------
Still in-development.
Goals
-----
These features are required for the basic level of shell functionality and will be present for the first release.
- Fast-to-parse, easy-to-learn, minimal syntax:
Everything you need to use a shell interactively with none of the weighty syntax needed to make the shell a full, yet, hideous language. Seriously, don't program in shell -- it's never worth it. You'll just hate youself in 6 months when you have to fix it. Just use python or perl. If you _have_ to program in shell, use bash or tch. Bash's parse.y is 5,600+ lines of language implementation. Trash's parser is under 500 lines and it's going to stay that way.
Things that are supported: chaining (;), piping (|), background jobs (&), conditional evaluation (&& and ||), subshells (()), glob and homedir expansion (*,?,~), and the full suite of file redirections that bash supports (<, >, >>, >&-, etc).
- Improved and expanded current-directory support. It's 2010, why do we still have to use pushd if we want to be able to go back? Tracking a list of visited directories is trivial; this gives us a full suite of web-browser-like features:
- back: go to prior path, like popd, but for cd
- forward: undo a back
- up: enter the parent of the current directory
- down: enter the first (alphabetically sorted) child directory under the current directory
- next: enter the next (alphabetically sorted) sibling directory next to the current directory
- Fully interactive command completion. No more 30 second pauses in the shell while all the disks in your local network spin up because you accidently hit tab under /mnt. If you can type faster than trash can think, it's not going to stand in your way.
- Inline, visible completions. Pushing tab is always an adventure -- it shouldn't be. We will try to show you what you will get if you push tab, or what is keeping tab from making the completion you think it should be making.
- Fast, inline, history searches. Ctrl+R can be a rather difficult bash feature to use successfully. We will provide fish-like inline history searching -- type part of a command and push 'up' to search backwards. We will also allow regexes in this position so that you can find even the wackiest, hard-to-remember history quickly.