当我tput sgr0
这样做时,它将我的终端字体和颜色更改为白色(应该是黑色)并且看起来是块状的。
请看截图:
我该如何阻止这个?
为了更简洁,任何echo
之后tput sgr 0
似乎都输出为粗体白色,我的终端文本颜色是黑色。
更新:
我的~.bashrc
:
export LC_ALL="en_GB.UTF-8"
export BASH_SILENCE_DEPRECATION_WARNING=1
branch() {
git branch 2> /dev/null | \
grep \* | \
awk '{print$2}' | \
sed '
s#^#(#g;
s#$#)#g
'
}
colo() { tput setaf $1; }
PS1='`tput bold``colo 5`\W: `tput sgr0``colo 0``branch``colo 0` \n λ '
答案1
代码sgr0
描述man terminfo
为“关闭所有属性”。
代码sgr
描述为“定义视频属性#1-#9 (PG9)" 并采用一个值1
.. 9
;序列sgr 0
未定义。您在问题中同时使用了sgr0
和。sgr 0
答案的其余部分假设sgr0
,因为其他序列无效。
如果使用tput sgr0
将您的终端重置为黑色和白色,那么这些颜色是默认(重置)模式的一部分。因此,我假设您不是将终端应用程序配置为使用您喜欢的颜色方案作为默认颜色,而是将指令放入 shell 初始化文件之一中以设置特定的前景色和背景色。这些(正确地)被sgr0
代码重置。
我想到了两种可能的解决方案,
- 直接配置终端应用程序以使用您喜欢的颜色,而不是在 shell 配置文件中设置它们,因此它们成为默认重置值
- 修改 shell 提示命令以在每次打印时设置您首选的前景和背景属性