我在.bash_prompt中使用以下颜色代码/功能(来自Paul Irish),在Windows上的Git bash中显示分支名称和状态。
MAGENTA="\033[1;31m"
ORANGE="\033[1;33m"
GREEN="\033[1;32m"
PURPLE="\033[1;35m"
WHITE="\033[1;37m"
BOLD=""
RESET="\033[m"
function git_info() {
# check if we're in a git repo
git rev-parse --is-inside-work-tree &>/dev/null || return
# quickest check for what branch we're on
branch=$(git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||')
# check if it's dirty (via github.com/sindresorhus/pure)
dirty=$(git diff --quiet --ignore-submodules HEAD &>/dev/null; [ $? -eq 1 ]&& echo -e "*")
echo $WHITE" on "$PURPLE$branch$dirty
}
该功能可以正确显示信息,但不是将两个部分着色,而是打印出如下颜色代码:
\[\033[1;37m\] on \[\033[1;35m\]working*
$
这是使用以下(简化说明问题)PS1行:
PS1="\$(git_info)\n$ "
我应该注意,如果将代码直接添加到PS1行,颜色可以正常工作,即:
PS1="\[$PURPLE\]\w\n$ \[$RESET\]"
我正在摸索所有这些bash定制,所以可能会做一些明显愚蠢的事情!
答案 0 :(得分:0)
也许echo -e
。来自man echo
:
-e enable interpretation of backslash escapes
此外,您可以在双引号内使用变量:
echo "$WHITE on $PURPLE$branch$dirty"