是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
当前回答
你正在寻找的工具可能是supercat(这是Linux Journal发布的一个快速介绍)。
我意识到这个答案晚了,并且没有完全满足OP的要求。所以我添加它只是为了参考(它可能对其他寻找如何为文本文件输出着色的人有用)。
其他回答
如果你只想用一行代码将cat输出设置为给定的颜色,你可以追加
几只猫=“回音非code' | cat - "
致你的~/。rc (basename壳美元)
这里有一个颜色代码的要点:https://gist.github.com/chrisopedia/8754917
我喜欢“\e[1;93m”,它是高强度的黄色。它是这样的:
这个问题非常古老,但我还是无意中发现了它。为了完整起见,问题是“是否有一种方法让cat对其输出进行着色?”是的,对于ansi编码的输出,你可以将这些导出添加到你的.bashrc:
# colorful less output
export LESS_TERMCAP_mb=$'\e[1;32m'
export LESS_TERMCAP_md=$'\e[1;32m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[01;33m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;4;31m'
这将使ansi编码文本的输出上色,如terraform plan:
然而,这与bat不同,bat可以更好地解析json,显示行号,通常用户体验更好。
据我所知,二进制本身并不负责颜色。它是壳。
这不对。终端只是解释输出到终端的颜色代码。根据其能力,它可以忽略某些格式/着色代码。
从手册页来看,cat似乎不支持对输出进行着色。即使它像grep一样支持上色它在文本文件中应该给什么上色呢?语法突出显示所需的底层语言知识,这不在简单实用程序(如cat)的范围内。
如果你的目标是看到突出显示的代码,你可以在unix平台上尝试更强大的编辑器,如vim,emacs, gedit等。
2018年4月底起:
Bat -一个带有语法高亮显示和Git集成的猫(1)克隆。
该项目是一个cat克隆,支持用Rust编写的颜色和自定义。它不仅提供了多个主题的语法高亮显示,还提供了Git集成。如文档所述:
Bat努力实现以下目标: 提供漂亮、高级的语法高亮显示 与Git集成以显示文件修改 是(POSIX)猫的临时替代品 提供用户友好的命令行界面
不用说,它比pygmentize快得多,并且在面对大文件时不会阻塞。
源代码和二进制版本+安装说明可以在Github存储库中找到,以及与替代程序的比较。
为此,我编写了一个基于rust的小软件。它被命名为highlighter,可以在以下回购中找到:
https://codeberg.org/mehrad/highlighter
基本上,您只需将前一个命令的输出输出到它中,并告诉它根据您的偏好对其进行着色。例如:
locale | highlighter --blue="=" --red="_U.*" --yellow "NAME" --green="_ME.*"
如果您认为名称太长,我建议为它创建一个别名。我宁愿取一个较长但有描述性的名字,也不愿取一个短而模糊的名字。