如何自动为bash shell中的程序输出着色?

时间:2009-07-06 04:33:21

标签: bash colors pipe

我希望将任何输出到屏幕的程序,捕获输出,并在将某些关键字输出到屏幕之前将其着色。例如,这是正常的程序输出:

bash# <program>
blah blah blah       <-- this output has no color

VS

bash# <program>
blah blah blah       <-- this output is colorful

理想情况下,程序是什么并不重要。我正在寻找一种将更多颜色融入我的konsoles的好方法。

编辑:对不起,应该很清楚。我不是要尝试着色shell脚本输出。

5 个答案:

答案 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 colouriserhomepage):

  

Generic Colouriser是另一个用于美化日志文件或输出命令的着色器(用python编写)。

它在Debian中可用,并且已针对许多工具进行了预配置:

$ grc traceroute www.linux.org

enter image description here

$ grc tail -25 /var/log/syslog

enter image description here