我正在尝试说服我的bash提示添加着色当我的当前仓库有任何类型的未提交更改。
git_status() {
printf "%s : %s" $(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short=10 HEAD)
}
has_changed() {
if [[ -n `git diff HEAD` ]]; then
printf " - %s Δ %s" ${Green} ${Color_Off}
fi
}
PS1=${Purple}"\w"${Color_Off}" @ \$(git_status) \$(has_changed)\n \$ "
这部分有效,但是has_changed函数返回转义字符而不是颜色:
~/projects/project @ master : 8675309 - \033[0;32m Δ \033[0m
版本的bash:GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
,在OSX Mavericks上。
答案 0 :(得分:1)
为了使状态进入提示,您需要使用PROMPT_COMMAND
环境变量。
PROMPT_COMMAND
If set, the value is interpreted as a command to execute before the printing of each primary prompt ($PS1).
这是一个简单的例子(测试和工作),您可以根据自己的需要进行调整:
PROMPT_COMMAND='echo -ne $(if [[ -n `git diff HEAD` ]]; then echo true; fi)'