语法高亮/着色猫
有没有一种方法来给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'
如果你想要行号码:
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
在行动:
这是highlight
:
您正在寻找的工具可能是超级猫 (这是由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
背后的模块; 我没有看到cat
和ccat
之间有明显的速度差异。
如果你的机器上有vim的话,最好的方法和最简单的方法是使用vimpager
程序自带的vimpager
。
- 使用
git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
安装vimpagegit clone git://github.com/rkitover/vimpager cd vimpager sudo make install
-
运行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-can-take-command-output-and-colorize-it-accordin grcat
/ grc
工具被推荐作为替代grcat
。
grc和grcat
; 它是grc包 ( 来源 )的一部分:
grc – 用于genericscolouriser grcat的前端(1)
grcat – 从标准input中读取,将其着色并写入标准输出