Lev*_*sky 5 colors bash prompt
我有PS1
一个开头的颜色序列(如\[\e[0;32m\]
)结束,使终端中的所有文本都着色(在这种情况下为绿色)。但是,当我使用诸如ls
(ls --color=auto
在 my 中的别名.bashrc
)之类的命令时,输出中的颜色有点混乱:绿色直到第一个“彩色”单词,并且以下未着色的文本是白色而不是绿色。
有没有办法在所有情况下都有干净的输出?当输出有颜色时,我可以将白色作为“默认”文本颜色,但我希望它保持一致。
当然,我最想要一个可以自动应用于所有命令并且不需要我改变调用它们的方式的解决方案。
就个人而言,我没有任何想法。也许可以做些什么来“即时”在输出中搜索转义序列并执行一些替换?不过,我不知道如何实现这一点,尤其是在“幕后”完成时。
原因是因为你做错了。
你说你在提示的末尾有一个“开放”的颜色序列。这是错误的。颜色不嵌套。没有“打开”和“关闭”。它是“切换到...”或“重置为默认值”(实际上是“切换到0”)。因此,当ls --color=auto
完成某事切换颜色时,它将发出序列以重置为默认值。这不是“回到以前的样子”。
将终端设置为使用您希望为“默认”的文本颜色(即调色板编号 0)。然后,如果您希望提示使用不同的颜色,请在开头设置它并在结尾设置一个重置。
有关更多信息,请阅读 Bash Prompt HOWTO第 6 章。ANSI 转义序列:颜色和光标移动文档。