我希望将任何输出到屏幕的程序,捕获输出,并在将某些关键字输出到屏幕之前将其着色。例如,这是正常的程序输出:
bash# <program>
blah blah blah <-- this output has no color
VS
bash# <program>
blah blah blah <-- this output is colorful
理想情况下,程序是什么并不重要。我正在寻找一种将更多颜色融入我的konsoles的好方法。
编辑:对不起,应该很清楚。我不是要尝试着色shell脚本输出。
答案 0 :(得分:7)
#!/bin/sh
redf=$(tput setaf 1)
redb=$(tput setab 1)
reset=$(tput op)
echo "${redf}red${reset} in front, ${redb}red${reset} in back"
有关终端功能的详细列表,请参阅terminfo。带有$TERM
后缀的-m
(例如ansi-m
)表示屏幕是单色的,但只要颜色有效,以下字符串功能就应该是非空的:
enter_bold_mode bold md turn on bold (extra bright) mode enter_italics_mode sitm ZH Enter italic mode enter_reverse_mode rev mr turn on reverse video mode orig_pair op op Set default pair to its original value set_a_background setab AB Set background color to #1, using ANSI escape set_a_foreground setaf AF Set foreground color to #1, using ANSI escape
颜色0-7非常标准:黑色,红色,绿色,黄色,蓝色,品红色,青色,白色。除此之外可能不存在或可能更多变。
答案 1 :(得分:5)
ack程序是grep的一个版本,它在输出中对正则表达式匹配进行颜色突出显示。您可以使用它为您进行着色,或者您可以研究它的Perl代码。
另一种选择是使用--color=always
或--color=auto
参数传递给GNU的grep。
答案 2 :(得分:3)
您可以编写着色脚本。这里有一个很好的指南 http://www.faqs.org/docs/abs/HTML/colorizing.html
答案 3 :(得分:2)
您可能希望查看colorex之类的内容或a similar question on unix.SE上的建议。
答案 4 :(得分:0)
尝试简单而精彩的generic colouriser(homepage):
Generic Colouriser是另一个用于美化日志文件或输出命令的着色器(用python编写)。
它在Debian中可用,并且已针对许多工具进行了预配置:
$ grc traceroute www.linux.org
$ grc tail -25 /var/log/syslog