3

我将我的bashrc文件设置如下(对于Git Bash

source ~/git-prompt.sh
source ~/git-completion.bash
export GIT_PS1_SHOWDIRTYSTATE=true
PS1='\[\e[0;37m\]\342\224\214\342\224\200[\[\e[0m\]\[\e[1;32m\]\u\[\e[0;37m\]:\[\e[1;34m\]\h\[\e[0;37m\]]\342\224\200[\[\e[33m\]\W\[\e[0;37m\]]\342\224\200[\[\e[1;33m\]\@\[\e[0m\]]$(__git_ps1)\n\[\e[0;37m\]\342\224\224\342\224\200\342\224\200\[\e[1;36m\]\$\[\e[0m\] '

忽略八进制字符,它缩短为:

PS1='\[\e[0;37m\]-[\[\e[0m\]\[\e[1;32m\]\u\[\e[0;37m\]:\[\e[1;34m\]\h\[\e[0;37m\]]-[\[\e[33m\]\W\[\e[0;37m\]]-[\[\e[1;33m\]\@\[\e[0m\]]$(__git_ps1)\n\[\e[0;37m\]-\[\e[1;36m\]\$\[\e[0m\] '

这工作得很好,除了当我尝试使用以下段获取命令状态符号时(如在ArchWiki上看到的):

\$([[ \$? != 0 ]] && echo \"[\[\e[1;31m\]X\[\e[0;37m\]]-\") # again, shortened the octal codes for readability

我注意到的唯一不同是在 ArchWiki 上使用双引号和在我的例子中使用单引号。所以,我也在我的文件中使用了双引号:

PS1="\[\e[0;37m\]\$([[ \$? != 0 ]] && echo \"[\[\e[1;31m\]X\[\e[0;37m\]]-\")-[\[\e[0m\]\[\e[1;32m\]\u\[\e[0;37m\]:\[\e[1;34m\]\h\[\e[0;37m\]]-[\[\e[33m\]\W\[\e[0;37m\]]-[\[\e[1;33m\]\@\[\e[0m\]]$(__git_ps1)\n\[\e[0;37m\]-\[\e[1;36m\]\$\[\e[0m\] "

然后包括上述代码段:

PS1="\[\e[0;37m\]-[\[\e[0m\]\[\e[1;32m\]\u\[\e[0;37m\]:\[\e[1;34m\]\h\[\e[0;37m\]]-[\[\e[33m\]\W\[\e[0;37m\]]-[\[\e[1;33m\]\@\[\e[0m\]]$(__git_ps1)\n\[\e[0;37m\]-\[\e[1;36m\]\$\[\e[0m\] "

这很好用,只是我的 git-auto-completion 不再起作用。如果我进入 git 存储库,则$(__git_ps1)不会返回任何内容。如果我从 git repo 中重新启动 bash,它会显示当前分支,但在我离开目录或切换分支时再次无法执行。

以下陈述是否有区别:

x="yzx"
x='yzx'

附言

Windows 7 中的环境,以防有人疑惑。

4

1 回答 1

2

在您的情况下,您有许多使用\. "..."和之间的区别在于'...',shell 在双引号内窥视以解释转义序列,而在单引号的情况下,它从字面上看反斜杠。尝试以下操作:

echo '\$foo'
echo "\$foo"

你会看到区别。

于 2014-01-19T15:59:14.420 回答