bash提示符中“master”git branch name的特殊颜色

时间:2017-12-04 21:24:55

标签: git bash

我的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

1 个答案:

答案 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` \$ '