【问题标题】:How do you automatically colorize program outputs in a bash shell?如何在 bash shell 中自动为程序输出着色?
【发布时间】:2009-07-06 04:33:21
【问题描述】:

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

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

对比

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

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

编辑:对不起,应该已经很清楚了。我不想仅仅为 shell 脚本输出着色。

【问题讨论】:

  • 试试 Pete 的建议:yourprogram|ack --passthru --color "(keyword1|keyword2|keyword3)"

标签: bash colors pipe


【解决方案1】:
#!/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。带有后缀-m(例如ansi-m)的$TERM 表示屏幕是单色的,但只要颜色有效,以下字符串功能应该是非空的:

enter_bold_mode 粗体 md 打开粗体(额外 明亮)模式 enter_italics_mode sitm ZH 进入斜体模式 enter_reverse_mode rev mr 打开反向 视频模式 orig_pair op op 将默认对设置为 它的原始值 set_a_background setab AB 设置背景 颜色为#1,使用 ANSI 转义 set_a_foreground setaf AF 设置前景 颜色为#1,使用 ANSI 转义

颜色 0-7 非常标准:黑色、红色、绿色、黄色、蓝色、洋红色、青色、白色。除此之外可能不存在或可能更多变。

【讨论】:

    【解决方案2】:

    ack 程序是 grep 的一个版本,它在其输出中对正则表达式匹配进行颜色突出显示。你可以用它来为你着色,或者你可以研究它的 Perl 代码。

    另一种选择是使用--color=always--color=auto 参数传递到GNU 的grep。

    【讨论】:

      【解决方案3】:

      您可以编写着色脚本。这里有一个很棒的指南 http://www.faqs.org/docs/abs/HTML/colorizing.html

      【讨论】:

      • 呃...真的不应该告诉人们手动使用 ANSI 或 VT10x 转义。 termcap 和 terminfo 已经存在了 eons,目的是保存各种终端特定的信息。
      • @ephemient,除了几十年来没有人使用真正的终端,现在它只是一个软件标准:假设终端仿真器兼容 VT10x 是可以的,以避免ncurses 问题。
      • 顺便说一下,一些很好的参考资料:ftp.cs.utk.edu/pub/shuford/terminal
      【解决方案4】:

      您可能想查看colorex 之类的内容,或a similar question on unix.SE 上的建议。

      【讨论】:

        【解决方案5】:

        尝试简单而精彩的generic colouriser (homepage):

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

        它在 Debian 中可用,并且为许多工具预配置:

        $ grc traceroute www.linux.org
        

        $ grc tail -25 /var/log/syslog
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-02
          • 2019-11-27
          • 2017-09-08
          • 2021-12-03
          • 2020-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多