Zsh

From WTFwiki
Revision as of 09:27, 8 November 2009 by Jontow (talk | contribs) (add link to openbsd/carp zsh prompt hack page)
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
 fi

Prompt

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 ]
 then
         PROMPT=$'%(?,^,_)%{\e[0;31m%}%n%{\e[0;36m%}@%m%{\e[0;37m%}:: '
 else
         PROMPT=$'%(?,^,_)%{\e[0;36m%}%n@%m%{\e[0;37m%}:: '
 fi
 #set the right edge prompt with the pwd
 RPROMPT=$'%{\e[0;37m%}[$green%.%{\e[0;37m%}]'

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
     *xterm*|*rxvt|(dt|k|E|a)term)
         bindkey "\e[7~" beginning-of-line
         bindkey "\e[8~" end-of-line
     ;;
     screen*)
         bindkey "\e[1~" beginning-of-line
         bindkey "\e[4~" end-of-line
     ;;
     cons25)
         bindkey "\e[H" beginning-of-line
         bindkey "\e[F" end-of-line
     ;;
 esac

Colors

 #Colors
 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)