更改任何命令的 tcsh 输出的颜色

更改任何命令的 tcsh 输出的颜色

我想要不同的颜色来表示终端返回:

例子:

$ 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'

相关内容