My Bash Prompt

Posted by Leask on November 22, 2012

有人在 twitter 上问我的 bash prompt 是怎么写的,简单解说无效,直接把代码贴出来吧:

git_inspect_branch() {
git branch 2> /dev/null | grep ^* | sed 's/^\* \(.*\)$/:\1/g'
}

git_inspect_added() {
[[ $(git status 2> /dev/null | grep 'Untracked files:') != '' ]] && echo '+'
}

git_inspect_modified() {
[[ $(git status 2> /dev/null | grep 'modified:') != '' ]] && echo '*'
}

git_inspect_deleted() {
[[ $(git status 2> /dev/null | grep 'deleted:') != "" ]] && echo "-"
}

git_inspect_dirty() {
echo "$(git_inspect_added)$(git_inspect_modified)$(git_inspect_deleted)"
}

NME="\u"
HST="\h"
DIR="\w"
PMT="\$"
RED="\[\033[31m\]"
GEN="\[\033[32m\]"
YEL="\[\033[33m\]"
OFF="\[\033[m\]"
MOD="\`if [ \$? = 0 ]; then echo :\); else echo :\(; fi\`"
GIT="\`git_inspect_branch\`"
DIF="\`git_inspect_dirty\`"
PMT="\`if [ "$(id -u)" = "0" ]; then echo '#'; else echo '>'; fi\`"
PS1="$MOD $NME@$RED$HST$OFF:$DIR$GEN$GIT$OFF$RED$DIF$OFF$PMT "


PS: Prompt 不包括那头小牛,那头小牛其实是这样写的: alias cowtune='fortune | cowsay'

-------   -------   -------

Updated[Dec 5, 2012]: 放到 Github 上了 https://gist.github.com/4153091