我的https://photos-3.dropbox.com/t/2/AAAVbXWztTiaGBvbN9xqj45gyFxFW5mWFPViVRMhUliZNQ/12/182502757/jpeg/32x32/3/1512439200/0/2/WeVnWhite-1.JPG/ELW71YoBGOvEAiAHKAc/9MJyVOom1Qyql6ewIOrAZsfC6JAzz2BaPAdgIgJvS7o
中有以下内容,当我在使用Git的目录中时,我的提示显示~/.bashrc
为绿色。
示例:
(branch_name) $
我想要的是,只有当我在主人身上时,才会以黄色显示分支名称而不是绿色。
这就是我目前所拥有的:
yoshi@x1carbon:~ $ cd /path/to/git/project
yoshi@x1carbon:/path/to/git/project (master) $
# ^^^^^^^^ this part only in green
问题它始终显示git_branch() {
branch=$(__git_ps1 2> /dev/null)
if [ "$branch" = " (master)" ]; then
echo "\[\033[33m\]\${branch}\[\033[00m\]" # yellow
elif [ "$branch" = "" ]; then
echo "\[\033[31m\] (no git)\[\033[00m\]" # red
else
echo "\[\033[32m\]\${branch}\[\033[00m\]" # green
fi
}
export PS1="\u@\h:\w$(git_branch) \$ "
,即使目录中的(no git)
返回正确的当前分支名称。似乎__git_ps1
总是等于一个空字符串,无论我是否在使用git的dir中。
以下作品,但对所有分支名称应用相同的颜色:
$branch
我在这里缺少什么?如何将git_branch_simple() {
echo "\[\033[33m\]\$(__git_ps1 2> /dev/null)\[\033[00m\]"
}
export PS1="\u@\h:\w$(git_branch_simple) \$ "
的结果存储在局部变量中,然后对其进行测试?
编辑:感谢@ElpieKay,我发现了我在剧本中遇到的不同问题:
我不应该逃避__git_ps1
指令中的$
符号:
echo
echo "\[\033[33m\]\${branch}\[\033[00m\]"
# ^ removed that backslash
必须使用选项echo
才能打印颜色
-e
答案 0 :(得分:2)
试试这个代码段
git_branch() {
branch=$(__git_ps1 2> /dev/null)
if [ "$branch" = " (master)" ]; then
echo -e "\033[33m${branch}\033[00m" # yellow
elif [ "$branch" = "" ]; then
echo -e "\033[31m (no git)\033[00m" # red
else
echo -e "\033[32m${branch}\033[00m" # green
fi
}
PS1='\u@\h:\w`git_branch` \$ '