我想要不同的颜色来表示终端返回:
例子:
$ pwd //when return key is hit
$ /home/user/tools //return value printed in different color, say: grey color
此要求并非特定于pwd
命令,但对于抛出到终端的任何命令,我的日志将:
- $black //输入
- $灰色//输出
希望它是清楚的。
答案1
您通常必须捕获命令的输出,并用行前的颜色代码包装在 echo 语句中。完成后,您还需要将颜色恢复到“正常”模式,以保持提示看起来正常。以下是实现您想要的功能的大致一种方法:
$ echo -e '\e[1;30m'`pwd`; echo -en '\e[0m';
代码\e[1;30m' is gray, the code
\e[0m` 将显示屏恢复到正常模式。
因此,您可以将其放入脚本中,或者创建一个别名,将命令名称作为参数并将其传递到echo ... ; echo
上面的构造中。
例子
这是一个非常基本的示例,但只是为了让您了解如何在 Bash shell 中实现这一点:
$ c () { echo -e '\e[1;30m'`\$1`; echo -en '\e[0m'; }
这将创建一个名为 的函数c
。您可以向其传递参数,例如pwd
:
$ c pwd
/home/saml
不过,您必须谨慎使用它。你不能向它传递诸如 之类的东西ls
。
答案2
shell 实际上与颜色无关,它是处理它们的终端(模拟器)设备。在 Linux 上,这是标准化的,几乎所有这些(VT、xterms 等)都会响应ANSI 转义序列。 可持续发展管理的答案展示了它们的基本用法。
如果您想要可以用作管道的东西,我有一个我编写的 C 实用程序,用于多路复用来自一个控制台后台的多个异步进程的输出,使用不同的颜色,这对于调试相互关联但独立的事物很方便。
http://cognitivedissonance.ca/cogware/utf8_colorize/utf8_colorize.tar.bz2
tarball 中有一个 README。基本示例:
ls | utf8-colorize -1 3 -b
输出ls
将以粗体黄色显示。您也可以设置背景;别名也可能很方便,例如;
alias green='utf8-colorize -1 2'