我使用的终端具有白色/浅色背景,但我使用的命令的输出包含白色文本(即前景色 = 白色)。有什么办法(例如,使用shell脚本?)将所有白色前景映射到黑色前景,并保持其他颜色不变?
答案1
your_script | perl -pe 's/\e\[((?:0;)?)97m/\e[${1}30m/'
将脚本输出提供给上面给出的 Perl 代码,该代码将所有转义颜色序列转换为白色前景 => 黑色 fg。
答案2
您的终端的具体功能因版本和实现而异。一些传统终端很少提供单独窗口自定义功能,而许多桌面操作系统都有漂亮的终端,您可以通过打开首选项来自由调整单独窗口的颜色。
作为一种快速而肮脏的解决方法,用鼠标选择文本通常会应用不同的调色板,这可能会有所帮助。如果没有,将文本粘贴到另一个具有所需颜色的窗口中通常是一个小的额外步骤。
答案3
这取决于终端。在 xterm 中,您可以使用以下命令更改颜色编号到颜色名称的映射转义序列 OSC 4 ; NUMBER ; NAME BEL
。显式白色是颜色 7,因此:
printf '\e]4;7;black\a'
无论颜色用作背景还是前景,这都会影响颜色。它是一个渲染设置,即它影响过去和未来的所有输出。
很少有其他终端支持这一点。