From WTFwiki
Jump to navigation Jump to search

Zsh is a very configurable UNIX shell. Here's some tricks to make it do some handy stuff:

Display your TODO file on login

How about showing your TODO file (so you can remember to get shit done) every time you open a new shell?

 # print contents of TODO file :) - stolen from jon
 if [ -f ~/TODO ]; then
         echo ""
         echo " ---- TODO ----"
         cat TODO


How about doing some fancy things with the prompt?

 #set a fancier prompt if we're root (the 'root' part becomes red)
 #The prompt begins with ^ if the last command was a success, _ if it failed
 if [ `whoami` = root ]
         PROMPT=$'%(?,^,_)%{\e[0;31m%}%n%{\e[0;36m%}@%m%{\e[0;37m%}:: '
         PROMPT=$'%(?,^,_)%{\e[0;36m%}%n@%m%{\e[0;37m%}:: '
 #set the right edge prompt with the pwd

The prompt's format is [^_]username@host:: with some color tags..., the RPROMPT is shown at the right side of the line(it vanishes if the input line gets too long).

For a related prompt hack, see OpenBSD CARP router/firewall zsh shell prompt

Home/End keys

If your home/end keys don't do what you want, try this:

 #make home/end work in as many places as possible
 case $TERM in
         bindkey "\e[7~" beginning-of-line
         bindkey "\e[8~" end-of-line
         bindkey "\e[1~" beginning-of-line
         bindkey "\e[4~" end-of-line
         bindkey "\e[H" beginning-of-line
         bindkey "\e[F" end-of-line


 export red=$'%{\e[0;31m%}'
 export RED=$'%{\e[1;31m%}'
 export green=$'%{\e[0;32m%}'
 export GREEN=$'%{\e[1;32m%}'
 export blue=$'%{\e[0;34m%}'
 export BLUE=$'%{\e[1;34m%}'
 export purple=$'%{\e[0;35m%}'
 export PURPLE=$'%{\e[1;35m}'
 export cyan=$'%{\e[0;36m%}'
 export CYAN=$'%{\e[1;36m}'
 export WHITE=$'%{\e[1;37m}'
 export white=$'%{\e[0;37m}'
 export NC=$'%{\e[0m%}'

--Andrew 22:55, 28 September 2006 (EDT)