bash在终端底部滚动后将背景颜色复制到下面的整行。 (例如,提示背景色)

时间:2018-03-22 17:01:59

标签: bash ps1

for loop

按住enter键直到您到达终端的底部并按住enter键。你会看到提示的背景颜色开始超过提示。

为什么?

什么是修复?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据@chepner的建议,我通过电子邮件发送了bug-bash@gnu.org

到目前为止,这似乎是bash中的一个错误(即使最新版本4.4也有)

他们给我的解决方法,到目前为止似乎工作是

$(tput el) 

之后

$(tput sgr0)

所以问题中的例子变成了

prompt="@$host \\w : \[$(tput bold)$(tput setab 1)$(tput setaf 7)\]${git_branch}\[$(tput sgr0)$(tput el)\]\$ "

我会粘贴我为完整性而收到的电子邮件

  

我也和“4.4.12(1) - 发布”一样,但似乎没有   与Bash或提示有关。我只能用printf来获得它   彩色部分只需要在行尾处包裹。

     

printf“%100s $(tput setab 1)彩色部分$(tput sgr0)再次正常\ n”

     

如果屏幕滚动,则会显示最后一个字符的背景颜色   复制到下一行。至少有一种方法可以解决这个问题   是在彩色部分结束后清除线的末端   在“$(tput sgr0)”之后添加“$(tput el)”。你可能没有   光标右边的任何东西,所以它只会重置   颜色。

对监控bug-bash@gnu.org的人表示赞赏,因为他们的回复非常快