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

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

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

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


当前回答

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

别名 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等。

我推荐使用python包python- pyptions中的pygmentize。您可能需要定义以下方便的别名(除非您使用ccrypt包中的ccat)。

alias ccat='pygmentize -g'

如果你想要行号

alias ccat='pygmentize -g -O style=colorful,linenos=1'

向~/添加上述命令中的一个。bash_别名永久生效

只需使用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”,它是高强度的黄色。它是这样的:

Bat正是这样做的,可以别名为cat别名cat=' Bat '