我更新了我的bash文件,以便按照here说明显示当前的Git分支。我最终使用的是
PS1="\u@\h \W \$(__git_ps1)\$ "
...然而
(branch)
替换为[branch]
,即在括号内显示分支名称而不是括号。 原始版本有颜色:
PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ "
但是当我使用它时,我没有看到任何颜色。我怎样才能看到颜色以及shell使用的标准设置?
答案 0 :(得分:4)
以下是.git-prompt.sh
文件的相关段落(在现代Git版本中,包含__git_ps1
函数的定义):
# 3a) Change your PS1 to call __git_ps1 as
# command-substitution:
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
# the optional argument will be used as format string.
__git_ps1
接受一个可选参数,您可以使用该参数自定义字符串的格式。在您的情况下,您应该使用
PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ "
您可以在问题的代码中使用颜色,但需要确保定义了相关变量。将以下行放在~/.bashrc
文件中的某处:
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
WHITE=$(tput setaf 7)
RESET=$(tput setaf 0)
在获取~/.bashrc
文件后,您将能够使用这些颜色。
例如,以下是您的提示的简化版本,其中当前分支名称(和周围的括号)以红色突出显示:
PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "
答案 1 :(得分:1)
您正在使用的__git_ps1
函数将格式字符串作为参数。因此,您可以使用%s
传递所需的任何内容,以便显示分支名称。例如:
PS1="\u@\h \W \$(__git_ps1 '[%s]')\$
对于颜色没有任何线索,抱歉。
答案 2 :(得分:0)
这有效:
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] " # Display date
PS1=$PS1"\[$Yellow\]\@:" # Display time
PS1=$PS1"\[$BGreen\]\w" # Display a green pwd
PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)' # Display a cyan git-branch
PS1=$PS1"\[$Color_Off\]$ " # Turn off color and end prompt
export PS1=$PS1
它产生这样的东西:
[Thu Sep 18] 12:44 PM:~/repos/test[master*]$