Have you ever casted and had your newly baited line get caught on a unforgiving shell? Me too.
Consider fish:
Out of the box you get
Autosuggestions based off of history
Substring history search
Advanced tab completion
Syntax highlighting
Native 256 color support
The friendly interactive shell (fish) is a command line interpreter like Bash, Zsh, tcsh, etc. Fish is fast and gives you a lot of feedback, because everyone loves feedback.
At liquidfish, we spend a good amount time on the command line. Maybe a little too much time. So, while I’m smashing on the keyboard, I like to know my computer is actually catching what I am saying. Fish seems to get me, you know?
Some of the details that are intriguing in fish are:
Syntax highlighting
red == invalid
blue == valid
grey == suggestion
Arguments that are valid paths will be underlined.
Parameter completion
git checkout [tab][tab] will show you your branches and tags that you can check out denoting tags and branches.
Filtered history
Start typing a command in the shell and use your up and down keys to navigate through your history.
Helpful error messages
bdavis ~/D/cloverfield (master) : foo=bar
fish: Unknown command 'foo=bar'. Did you mean 'set foo bar'? See the help section on the set command by typing 'help set.’
Throw your fears overboard and install fish:
Mac:
brew install fish
Other:
http://fishshell.com/#get_fish_linux
If you don’t have brew, install it: http://brew.sh
To set fish as your default shell:
chsh -s /usr/local/bin/fish
If you get an error, you’ll most likely need to add /usr/local/bin/fish to your /etc/shells file.
You can always change it back later with: chsh -s /bin/bash
To get started, you really need to go through the fish documentation . Please, take your time ...
If you are writing any custom functions for your shell, you can put them in:
~/.config/fish/functions
Fish will autoload all the files in that directory. Check out my dotfiles repository for some helpful functions.
As with every shell, a good prompt can give you vital information about your environment. I’ve currently customized my prompt to show my user, hostname (if I am in an ssh session), my current directory and its write status, git repository information, execution time, and exit status.
Here are a couple examples:
bdavis /www :
bdavis /var :
bdavis ~ (master) 1.05s :
bdavis ~/.config (master ⚡) 128 :
At the end of the day, the out-of-the-box features make fish great. You can probably pull off most of fish’s functionality with a lot of configuration in some other shells, but honestly, why waste your time? Get more stuff done.
Downloads:
Panic’s Terminal Theme
Billy’s dotfiles