我只是修改了.bash_profile
文件,以便它可以显示我当前的git
分支。它可以工作,但我只是想改进一下格式。
下面是我正在做的:
export PS1="${COL1}u: ${COL2}w${COL3} $(git branch 2>/dev/null | grep '^*' | colrm 1 2)${NCOL} > "
如果直接中存在分支,则正常工作。如果没有分支,2>/dev/null
将消除错误,但是,在空git分支之前和之后会出现一个尴尬的额外空间,因为它是空的。
是否有一种简单的方法使这个空间只出现,而不必创建一个单独的函数,将包含/不包含相应的空间?
与其将空格作为PS1
的无条件部分的一部分,不如将它们作为git
替换的一部分?
export PS1="${COL1}u: ${COL2}w${COL3}$(git branch 2>/dev/null | grep '^*' | colrm 1 1 | sed 's/$/ /')${NCOL}> "
colrm 1 1
而不是colrm 1 2
保留了分支的前导空间,例如* master
。
sed 's/$/ /'
用空格(和行尾)替换行尾。如果git branch
出错,则没有行,因此这里也没有空格。
从PROMPT_COMMAND
中构建PS1
的值比在PS1
中嵌入一个小脚本更容易。
prompt_cmd () {
PS1="${COL1}u: ${COL2}w${COL3}"
git_info=$(git branch 2>/dev/null | grep '^*' | colrm 1 2)
if [[ $git_info ]]; then
PS1+="$git_info "
fi
PS1+="${NCOL} > "
}
PROMPT_COMMAND=prompt_cmd
在显示提示符之前,执行存储在PROMPT_COMMAND
中的代码(在本例中为单个函数调用)。prompt_cmd
每次都从头构建PS1
的值。