是否有一种方法为cat的输出着色,就像grep那样。

对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。

据我所知,程序本身并不负责颜色。它是壳。

我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。


当前回答

放置在~/.bashrc中

function ccat() { docker run -it -v "$(pwd)":/workdir -w /workdir whalebrew/pygmentize $1; }

then

ccat filename

Whalebrew为Docker映像创建别名,这样您就可以像运行本机命令一样运行它们。它很像Homebrew,但是有Docker图像。

其他回答

2018年4月底起:

Bat -一个带有语法高亮显示和Git集成的猫(1)克隆。

该项目是一个cat克隆,支持用Rust编写的颜色和自定义。它不仅提供了多个主题的语法高亮显示,还提供了Git集成。如文档所述:

Bat努力实现以下目标: 提供漂亮、高级的语法高亮显示 与Git集成以显示文件修改 是(POSIX)猫的临时替代品 提供用户友好的命令行界面

不用说,它比pygmentize快得多,并且在面对大文件时不会阻塞。

源代码和二进制版本+安装说明可以在Github存储库中找到,以及与替代程序的比较。

老问题,只是为了提供我最终使用的解决方案而回答记录。也许这有点粗糙(可能不是参数的最初目的),但是:

别名 cgrep='grep -C 9000'

猫什么| cgrep 'snozzberries'

..grep -C N将在找到的项的上面和下面提供N行上下文。如果它大于输入,则包括整个输入。在这种情况下,我们只需确保它比我们想要手动查看的任何典型终端输出都大,这通常是您在高亮显示时希望做的事情。

编辑:然而,Beni Cherniavsky-Paskin建议的这个解决方案更优越——它匹配(并突出显示)你要找的单词或行首(不突出显示)。最终的结果正是你想要的。

cat whatever | egrep 'snozzberries|$'

这是我所见过的针对这个问题的最新最佳解决方案,谢谢Beni。

据我所知,二进制本身并不负责颜色。它是壳。

这不对。终端只是解释输出到终端的颜色代码。根据其能力,它可以忽略某些格式/着色代码。

从手册页来看,cat似乎不支持对输出进行着色。即使它像grep一样支持上色它在文本文件中应该给什么上色呢?语法突出显示所需的底层语言知识,这不在简单实用程序(如cat)的范围内。

如果你的目标是看到突出显示的代码,你可以在unix平台上尝试更强大的编辑器,如vim,emacs, gedit等。

只需使用vim和这个vimrc文件。

oneliner:

vim -c '1' -c 'set cmdheight=1' -c 'set readonly' -c 'set nomodifiable' -c 'syntax enable' -c 'set guioptions=aiMr' -c 'nmap q :q!<CR>' -c 'nmap <Up> <C-Y>' -c 'nmap <Down> <C-E>' -c 'nmap ^V <C-F><C-G>' "$@" 

Nano -v也可能是一种替代方案。

如果你只想用一行代码将cat输出设置为给定的颜色,你可以追加

几只猫=“回音非code' | cat - "

致你的~/。rc (basename壳美元)

这里有一个颜色代码的要点:https://gist.github.com/chrisopedia/8754917

我喜欢“\e[1;93m”,它是高强度的黄色。它是这样的: