zsh
prompt. I could describe it, but a picture covers it better:The code behind this, to be stuffed in your
$HOME/.zshrc
, is:
autoload colors
colors
precmd()
{
PREV_RET_VAL=$?
if [ "$TERM" = "dumb" ]
then
PS1="%n@%m %% "
return
fi
if [ $EUID -eq 0 ]
then
USER_COLOUR=red
else
USER_COLOUR=green
fi
BASIC_COLOUR=cyan
# Basic prompt: 'user@host [history-number'"
PS1="%{${fg[$USER_COLOUR]}%}%n@%m %{${fg_bold[$BASIC_COLOUR]}%}%1~%{${fg[$BASIC_COLOUR]}%} [%!"
# Possibly append '/job-count', if the number of jobs is > 0
if [ $#jobstates -ne 0 ]; then
PS1="${PS1}/%j"
fi
# Possibly append '/error-status', if $? wasn't 0
if [ $PREV_RET_VAL -ne 0 ]
then
PS1="${PS1}/%{${fg_bold[red]}%}$PREV_RET_VAL%{${fg_bold[$BASIC_COLOUR]}%}"
fi
# Close off the brackets for the status section, and finalise.
PS1="${PS1}] %% %{${fg_no_bold[default]}%}"
}
This uses only shell built-ins, so is suitably fast for running at every prompt.
One variant I used at work was to colour the prompt based on the
DEPLOYMENT_STATUS
environment variables that the SAs set (one of 'prod', 'test', 'dev', 'cont'): red for production, purple for contingency, blue for test, and green for development, but that's not quite as useful at home. :-)
No comments:
Post a Comment