我想通过不同的颜色轻松地将我的命令与Shell输出的其余部分区分开。但是我在定制bash shell方面没有太多经验,因此我不知道如何(在输入之后)重置颜色。
我当前的PS1变量如下所示:
export PS1="$red\u$green\$(__git_ps1) $turk\w
$white$ "
# '\$(__git_ps1)' git status prompt (generates a space before it even if empty)
所以我的输入是白色的。但是,即使命令的输出也为白色,因为它不会被重置。此外,如果命令本身对输出进行颜色编码,则它本身会重置颜色,从而导致白色和灰色的某种丑陋混合。
那么如何在输入命令后重新设置颜色?
该DEBUG
陷阱每个命令之前运行,所以你可以滥用它重置的颜色,如果你有彩色的命令行输入。(“滥用”,因为这不是调试。)
有了这个:
$ promptcol="$(tput sgr0)$(tput setaf 3)"
$ cmdcol="$(tput sgr0)$(tput bold)"
$ normalcol="$(tput sgr0)"
$ trap 'echo -n "$normalcol"' DEBUG
$ PS1="\[$promptcol\]\w\$ \[$cmdcol\]"
我得到这个:
请注意,您需要在\[...\]
周围加上颜色代码,以便外壳程序知道如何正确计算提示的宽度。另外,请注意,您不能将放在\[...\]
变量内,外壳程序首先处理提示转义,然后才处理变量扩展。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句