0
我对BASH的经验有限,我正在寻找一些关于如何进行的指导,请耐心等待。bash如果按功能设置变量
我试图改变命令提示符,当我在git仓库里面,我可以使用这个post我在谷歌上找到了,但是我也想根据仓库的当前状态添加颜色(干净,未跟踪的文件,已修改的文件)。
目前我有这个在我的.bashrc文件的末尾:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/'
}
modified() {
git status 2> /dev/null | grep -q modified
}
untracked() {
git status 2> /dev/null | grep -q Untracked
}
clean() {
git status 2> /dev/null | grep -q clean
}
NO_COLOR="\[\033[0m\]"
GREEN="\[\033[0;32m\]"
YELLOW="\[\033[0;33m\]"
RED="\[\033[0;31m\]"
set_color() {
if untracked ; then
echo $RED
elif modified ; then
echo $YELLOW
elif clean ; then
echo $GREEN
else
echo $NO_COLOR
fi
}
PS1="\u:\w\$(set_color)\$(parse_git_branch)$NO_COLOR> "
命令提示符的变化,但就像我认为它应该不会改变颜色。
这里是我所得到的,而不是:
外混帐回购协议arod:~\[\033[0m\]>
一个git回购arod:~/tos\[\033[0;32m\][dev]>
我不确定如何让色彩来评价,我认为,只是在寻找一些指导内从比我有更多BASH经验的人。
示例:'echo -e“\ 033 [31m Hello World”'。检查此链接:http://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux – Noproblem
这是我正在寻找的解决方案。谢谢 –
使用'printf'(由POSIX定义)比'echo -e'更好(除了使用'-e'输出外,bash实际上违反了标准。 –