我有一个自定义的 PS1 颜色,其中我有不同颜色的实际 shell 命令,这样我就可以快速查看我键入的命令并将其与命令输出本身分开。
假设 PS1 中的颜色在命令提示符下设置为“蓝色”,而我的 shell 中的默认颜色是白色。
我想要的是命令后的所有输出都是“白色”。
另一个例子:
我希望输出为“白色”,同时保持我输入的“蓝色”命令提示符
在某些命令上,它很好,其他命令,相同的颜色溢出到输出的第一行,然后默认颜色开始和其他一些命令,整个输出(例如 cat)具有相同的颜色。
有没有办法只保留我以一种颜色输入的命令,而将其余命令保留为默认值?
我在 OSX 上。
这是@derobert 在评论中链接到的屏幕截图,显示了我正在寻找的内容。

phe*_*mer 14
您基本上想在 bash 执行命令之前重置终端颜色。这可以通过一个trap.
例如:
trap '[[ -t 1 ]] && tput sgr0' DEBUG
Run Code Online (Sandbox Code Playgroud)
BashDEBUG在命令之前立即执行陷阱,因此这将导致tput sgr0(重置格式属性)在每个命令之前运行。
这[[ -t 1 ]]是一项安全检查,以确保 STDOUT 实际上是一个终端。在某些情况下,bash 的 STDOUT 未连接到终端(管道、远程 ssh 等),因此您不想tput发送终端转义码。