语法高亮/着色猫

有没有一种方法来给cat的输出着色,这是grep的方式。

对于grep ,在大多数控制台中,它会显示一个突出显示search关键字的彩色输出。 否则,你可以强制通过调用grep --color是否有一种通用的方法来根据你的个人select颜色的任何程序的输出。

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

我在FreeBSD 5.2.1中使用了默认的shell,它看起来像是自从epoch以来从来没有见过的颜色。

用语法突出显示的cat只是超出范围。 cat不是那个意思。 如果你只想让某些文件的全部内容以某种方式着色(整个文件的颜色相同),则可以使用terminal转义序列来控制颜色。

以下是一个示例脚本,它将根据文件typesselect颜色(可以使用类似于此的内容,而不是直接调用cat ):

 #!/bin/bash fileType="$(file "$1" | grep -o 'text')" if [ "$fileType" == 'text' ]; then echo -en "\033[1m" else echo -en "\033[31m" fi cat $1 echo -en "\033[0m" 

以上(在支持这些转义序列的terminal上)将打印任何文本文件为“粗体”,并将打印任何二进制文件为红色。 您可以使用strings而不是cat来打印二进制文件,并且可以增强逻辑以使其适合您的需要。

我build议从python软件包python-pygments pygmentize 。 你可能想要定义下面的方便别名(除非你使用ccrypt包中的ccat )。

 alias ccat='pygmentize -g' 

使用pygmentize语法突出显示cat输出

如果你想要行号码:

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

选项:

pygmentize是好的。 我有一个别名:

 alias c='pygmentize -g' 

重点是另一个广泛可用的替代scheme

 alias cats='highlight -O ansi' 

安装:

您可能需要使用以下方法安装pygments

 sudo pip install pygments sudo easy_install Pygments #for Mac user 

以及在所有发行版上都可以轻松获得的highlight

 sudo apt-get install highlight sudo yum install highlight 

在行动:

我在下面附上镜头,以便在高亮显示中进行比较

这是pygmentize在行动: Pygmentize在python文件上突出显示

这是highlight突出显示python文件上的突出显示

您正在寻找的工具可能是超级猫 (这是由Linux Journal发布的快速入门 )。

我意识到这个答案很晚,而且不能完全满足OP的要求。 所以我添加它只是为了参考(这可能是其他人正在寻找如何着色文本文件输出)。

vimcat是单文件(shell脚本),并且工作正常:

http://www.vim.org/scripts/script.php?script_id=4325

最后一次更新是从2013年12月起。提示:可以通过vimcat -c "set ft=<type>"强制识别文件types。

有一个cat- ccat的彩色版本。 从https://github.com/jingweno/ccat/获取它。;

在Linux / Windows / macOS上安装

这是一个独立的可执行文件,所以要安装它,你可以从https://github.com/jingweno/ccat/releases解压你操作系统的二进制版本,并将;ccat二进制文件复制到/usr/local/bin

如果你不习惯使用二进制文件,那么你可以交替地从源代码编译,因为你有一个工作的开发环境 :

 go get -u github.com/jingweno/ccat 

ccat二进制文件将在$GOPATH/bin下创build。

在Mac上通过自制软件安装

在OSX上,以下一系列命令适用于我。 行#1到#5在需要的地方,因为#5自己失败了。 首先尝试运行#5,因为酿造公式显然已经修复。

 # 1. export GOPATH=/usr/local # 2. brew tap jingweno/ccat # 3. go get github.com/sourcegraph/syntaxhighlight # 4. go get github.com/codegangsta/cli # 5. brew install ccat 

然后在我的~/.bashrc添加:

 alias cat="ccat $*" alias cat0="/bin/cat $*" # for cases when you need plain `cat` 

ccat是在Go中实现的,所以它是一个本地二进制文件,运行速度比基于Python的解决scheme快得多,比如pygments , pygmentize背后的模块; 我没有看到catccat之间有明显的速度差异。

如果你的机器上有vim的话,最好的方法和最简单的方法是使用vimpager程序自带的vimpager

  1. 使用git clone git://github.com/rkitover/vimpager cd vimpager sudo make install安装vimpage git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
  2. 运行vimcat:

    vimcat index.html

source-highlight

也许可以在GNU下find有趣的source-highlight :一个不同于highlight的软件包。

摘自apt-cache show source-highlight

Description-en: 将源代码转换为语法突出显示的文档。
这个程序,给定一个源文件,生成一个语法高亮的文档。
它支持超过100种文件格式的语法高亮显示
对于输出,支持以下格式:HTML,XHTML,LaTeX,Texinfo, ANSI颜色转义序列和DocBook

我做了一些别名(猫和PCat,见下文),这是他们的输出

屏幕示例

你可以在Debian上安装

 sudo apt-get install source-highlight 

并添加它作为别名,例如在你的.bash_aliases类似下面的行。

 alias Cat='source-highlight --out-format=esc -o STDOUT -i' Cat myfile.c # or myfile.xml ... 

或者你可以做一个类似的别名(没有-i最后有可能pipe

 alias PCat='source-highlight --out-format=esc -o STDOUT ' tail myfile.sh | PCat # Note the absence of the `-i` 

在可以从man source-highlight读取的选项中,突出显示可以通过命令行select或强制 man source-highlight的下划线,或者将这个任务留给程序:

-s ,– src-lang = STRING源语言(使用–lang-list获取完整列表)。 如果没有指定,源语言将从文件扩展名中猜到

–lang-list列出所有支持的语言和关联的语言定义文件

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

这不正确。 terminal只是解释输出到terminal的颜色代码。 根据其function,它可以忽略某些格式/着色代码。

从手册页看来,猫支持着色其输出。 即使它支持像grep这样的颜色,它应该在文本文件中着色吗? 语法突出显示底层语言所需的知识,它不在cat这样简单的工具范围内。

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

在OSX上简单地做brew install ccat

https://github.com/jingweno/ccat 。 像猫,但显示内容与语法突出显示。 build于Go。

老问题,只是回答logging提供我最终使用的解决scheme。 也许这有点hacky(可能不是参数的原意),但是:

别名cgrep ='grep -C 9000'

猫什么| cgrep'snozzberries'

.. grep -CN将在find的项目的上方和下方提供N行上下文。 如果它大于input,则包含整个input。 在这种情况下,我们只是确保它比我们想要手动查看的任何典型的terminal输出都要大,这通常是高亮显示的内容。

编辑:但是,由Beni Cherniavsky-Paskin在下面build议的解决scheme是优越的 – 它匹配(和突出显示)要查找的单词或行的开头(不highlightable)。 最终的结果正是你想要的。

 cat whatever | egrep 'snozzberries|$' 

这是我见过的最好的解决scheme,感谢Beni。

在这个问题https://superuser.com/questions/602294/is-there-colorizer-utility-that-c​​an-take-command-output-and-colorize-it-accordin grcat / grc工具被推荐作为替代grcat

grc和grcat ; 它是grc包 ( 来源 )的一部分:

grc – 用于genericscolouriser grcat的前端(1)

grcat – 从标准input中读取,将其着色并写入标准输出