fish
fish is a non-POSIX commplient shell which I find to be really good for day to day use.
Managing fish plugins
fisher - plugin manager
Miscellaneous tips
Directory variables
# Useful directories set -x Dropbox $HOME/Dropbox set -x Projects $Dropbox/Projects
This makes it pretty easy to run commands regardless of the current working directory. Example, to search for all files with
__main__
in projects directory,rg '__main__' $Projects
Alt+Back
- to go back in directory history andAlt+Right
to forward.Alt+v
- to edit command with shell's default editor. This is looked up via the$EDITOR
environment variable.Alt+f
,Alt+b
- to go forward adn backward in currently editing command. These are Emacs readline keys which fish prompt support out of the box.
Useful functions
Run in directory
# Mnemonic - Run in Directory function rd --description "run given commands in directory without changing current directory" set dir $argv[1] set --erase argv[1] if test -n "$dir" # Run in a sub shell so that we do not change directory stack fish -c " pushd $dir eval $argv " end end
This is pretty useful to run a command in a different directory from the one you are currently working in. For example, I use this frequently to check the
git status
of the notes directory with -rd $Notes git status
, where$Notes
is a directory alias to the Notes directory. Since the subcommands run in a fish shell, you can use usual conviniences such a abbreviations and aliases. Thus above command can be shortened to,rd $Notes gs
in my configuration.Create directory and
cd
into it,# From - http://unix.stackexchange.com/questions/125385/combined-mkdir-and-cd function mkcd --argument-names 'path' if test -n "$path" mkdir -p -- "$path"; and cd "$path" end end
Find out the ID of the running container for given search term
function container-id set search $argv[1] set --erase argv[1] if test -n "$search" docker ps | grep "$search" | cut -f1 -d' ' end end
Usage example: To find out currently running Postgres instance -
container-id postgres
.
Last updated