有没有办法让我的终端的所有输出都以个性化的方式着色?例如:如果我发出命令:sudo apt-get update
- 我将得到一列文本,并且我想要的是如果此文本中有任何像“ERROR”这样的字词则将其着色为红色,并且将任何像“DONE”或“FINISHED”这样的字词着色为绿色。
这只是一个例子,我知道这可能会搞乱其他程序的彩色输出,只是好奇这是否可能。
我目前正在使用 ZSH,但接受每个终端仿真器的答案。
答案1
您可以使用sed
将单词边界分隔的“ERROR”、“DONE”和“FINISHED”字符串替换为括在ANSI 颜色转义序列(为了方便起见,您可以为该命令添加别名~/.bashrc
;正如您所见,这在 Zsh 中有效,但由于它是解释转义序列的终端,因此它可以在运行在 ANSI / VT100 兼容终端中的任何 shell 中工作):
sudo apt-get update |& sed 's/\bERROR\b/\x1B[1;31m&\x1B[0m/; s/\bDONE\b/\x1B[1;32m&\x1B[0m/; s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/'
sudo apt-get update |&
sed '
s/\bERROR\b/\x1B[1;31m&\x1B[0m/
s/\bDONE\b/\x1B[1;32m&\x1B[0m/
s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/
'