Have you ever casted and had your newly baited line get caught on a unforgiving shell? Me too.
Out of the box you get
Autosuggestions based off of history
Substring history search
Advanced tab completion
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:
red == invalid
blue == valid
grey == suggestion
Arguments that are valid paths will be underlined.
git checkout [tab][tab] will show you your branches and tags that you can check out denoting tags and branches.
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:
brew install fish
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:
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.
Panic’s Terminal Theme