如何将 STDOUT 和 STDERR 颜色永久更改为灰色?

use*_*197 7 osx shell colors terminal

这个问题类似于 Can I configure my shell to print STDERR and STDOUT in different color?

但我正在寻找一种解决方案,可以让我将STDOUT 和 STDERR 都更改为一种颜色。我不想为 STDOUT 和 STDERR 设置不同的颜色,因为这有问题并且可能会产生问题,在上面链接的答案中提到。

我很抱歉,因为我对 Unix 和 Linux 不太了解。我要寻找一个解决方案,可以让我加几行我.bashrc还是.bash_profile永久改变输出和错误的颜色。

gol*_*cks 8

STDOUT 和 STDERR 没有颜色。有颜色的是你的终端(模拟器);它一次设置一个前景(和一种背景颜色)。

还应该注意的是 STDOUT 和 STDERR 不是单一的——它们是每个进程的输出流。没有适用于所有程序的全局 STDOUT。这些流被路由到您的终端,但它们对于每个进程都是不同的。

终端仿真器通常有办法通过菜单设置面板,使得默认的前景(适用于通过接收到的数据STDOUT和STDERR流)可能是什么。您还可以应用ANSI颜色代码在你的提示如果不恢复颜色\[\033[0m\]在年底,将继续适用。请注意,某些应用程序使用这些和重置,因此这不是一个非常理想的方法,因为重置将返回到终端的默认设置。

如果设置终端前景不是你想要的,你可以在每个进程的基础上过滤 STDOUT/STDERR;请参阅此处建议


Sté*_*las 7

zsh支持 16 色或更多 à la 的终端上xterm

preexec() printf '\e[90m' # set foreground color to grey before running
                          # the command

precmd() printf '\e[m' # reset the foreground color before issuing the
                       # next prompt.
Run Code Online (Sandbox Code Playgroud)

请注意,命令本身可能会更改终端的前景色。

  • @user1769197,`.bashrc` 用于`bash` shell。此解决方案适用于 `zsh`。 (2认同)