目前我的终端提示符包含git信息。
示例清理目录:michaelespinosa:~/Sites/example.com [git:master]
脏目录示例:michaelespinosa:~/Sites/example.com [git:master*]
我还想给git信息着色(如果它是干净的,则为绿色;如果它是脏的,则为红色)。
我想我可以添加一个函数(parse_git_color),并根据星号是否存在,使用if else语句相应地设置它的颜色。
问题是,它总是为干净和脏目录返回绿色。我相信这个问题与if语句parse_git_dirty ==“”有关,该语句将parse_git_dirty的值与“"进行比较。
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_color {
if [ parse_git_dirty == "*" ]; then
echo '\033[0;31m\'
else
echo '\033[0;32m\'
fi
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/$(parse_git_color)[git:\1$(parse_git_dirty)]/"
}
字符串
任何帮助都很感激!谢谢
1条答案
按热度按时间wsewodh21#
请注意PS1中的
\$(...)
。这很重要,因为只有\$()
在每次打印提示符时才会调用命令。$()
只调用一次(当PS1初始化时)。字符串