Syntax highlighting/colorizing cat
有没有一种方法可以像
对于
据我所知,程序本身不负责颜色。它是外壳。
我在freebsd 5.2.1中使用了默认的shell,看起来它从一个时代以来就没有见过颜色。
我从python包
1 | alias ccat='pygmentize -g' |
如果你想要行号:
1 | alias ccat='pygmentize -g -O style=colorful,linenos=1' |
选项:
Pygmentize很好。我有个别名:
1 | alias c='pygmentize -g' |
但另一个广受欢迎的选择是
1 | alias cats='highlight -O ansi --force' |
安装:
您可能需要安装
1 2 | sudo pip install pygments sudo easy_install Pygments #for Mac user |
对于所有发行版都很容易获得的
1 2 | sudo apt-get install highlight sudo yum install highlight |
- BitBucket回购:https://bitback.org/birkenfeld/pygments-main
- Github镜像:https://github.com/sglyon/pygments
行动中:
我把两张照片都贴在下面,以便在强光下进行比较。
这是
这是
您要寻找的工具可能是supercat(以下是Linux期刊发布的一个快速介绍)。
我意识到这个答案太晚了,而且不能完全满足OP的要求。所以我添加它只是为了参考(它可能对其他寻找如何给文本文件输出着色的人有用)。
http://www.vim.org/scripts/script.php?Script PTId=4325
最新更新时间为2013年12月。提示:您可以通过
自2018年4月底起:
Bat - A cat(1) clone with syntax highlighting and Git integration.
该项目是一个cat克隆,支持用rust编写的颜色和定制。它不仅提供多主题的语法突出显示,还提供了Git集成。如文件所述:
bat tries to achieve the following goals:
- Provide beautiful, advanced syntax highlighting
- Integrate with Git to show file modifications
- Be a drop-in replacement for (POSIX) cat
- Offer a user-friendly command-line interface
不用说,这比侏儒化要快得多,面对大文件时不会窒息。
源代码和二进制版本+安装说明可以在Github存储库中找到,也可以与其他程序进行比较。
语法突出显示的
下面是一个示例脚本,它将根据文件类型选择颜色(您可以使用类似这样的脚本,而不是直接调用
1 2 3 4 5 6 7 8 9 | #!/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" |
上面的(在支持这些转义序列的终端上)将把任何文本文件打印为"粗体",并把任何二进制文件打印为红色。您可以使用
有一个彩色版的猫-CCAT。从https://github.com/jingweno/ccat/获取。
在Linux/Windows/MacOS上安装它是一个单独的可执行文件,因此要安装它,您可以从https://github.com/jingweno/ccat/releases中解包操作系统的二进制版本,并将ccat二进制文件复制到
如果您希望避免使用二进制文件,或者如果您的平台没有二进制文件(例如Raspberry PI等),那么您可以在具有可工作的
1 | go get -u github.com/jingweno/ccat |
The
ccat binary will be created under your$GOPATH/bin .
通过自制在Mac上安装
1 | brew install ccat |
用
1 2 | alias cat="ccat $*" alias cat0="/bin/cat $*" # for cases when you need plain `cat` |
也许可以找到GNU发布的有趣的
摘自
Description-en: convert source code to syntax highlighted document.
This program, given a source file, produces a document with syntax
highlighting.
It supports syntax highlighting for over 100 file formats ...
For output, the following formats are supported: HTML,
XHTML, LaTeX, Texinfo, ANSI color escape sequences, and DocBook
我做了一些别名(cat和pcat,见下文),这是它们的输出
您可以使用安装在Debian上
1 | sudo apt-get install source-highlight |
并将其作为别名添加,例如在您的
1 2 | alias Cat='source-highlight --out-format=esc -o STDOUT -i' Cat myfile.c # or myfile.xml ... |
或者你也可以做一个类似的别名(结尾没有
1 2 | alias PCat='source-highlight --out-format=esc -o STDOUT ' tail myfile.sh | PCat # Note the absence of the `-i` |
在可以从
-s, --src-lang=STRING source language (use --lang-list to get the complete list). If not specified, the source language will be guessed from the file extension.
--lang-list
list all the supported language and associated language definition file
如果机器中有VIM,最好和最简单的方法是使用
git clone git://github.com/rkitover/vimpager
cd vimpager
sudo make install
运行VimCAT:
From what I understand, the binary itself is not responsible for the colors. It is the shell.
< /块引用>
这不正确。终端只是解释输出到终端的颜色代码。根据其功能,它可以忽略某些格式/颜色代码。
从手册页上看,似乎cat不支持着色其输出。即使它支持像grep这样的颜色,它在文本文件中应该用什么颜色?语法强调所需的基础语言知识,这些知识不在cat等简单实用程序的范围内。
如果您的目标是看到突出显示的代码,那么您可以在UNIX平台上尝试更强大的编辑器,如vim、emacs、gedit等。
在OSX上,只需执行
brew install ccat 。网址:https://github.com/jingweno/ccat。与cat类似,但使用语法突出显示内容。内置的围棋。
以前的问题,只是为了提供我最终使用的解决方案而做的记录。也许这有点老生常谈(可能不是参数的初衷),但是:
<罢工>别名c grep='grep-c 9000'
猫科动物cgrep‘snozzberries’< /打击>
..
grep -C N 将在找到的项目上下提供n行上下文。如果大于输入,则包括整个输入。在这种情况下,我们只需确保它比我们要手动查看的任何典型终端输出都大,这通常是突出显示时您要做的。编辑:但是,下面由BeniCherniavsky Paskin提出的这个解决方案比较好——它匹配(和突出显示)您要查找的单词或行首(不可突出显示)。最终结果就是你想要的。
1 cat whatever | egrep 'snozzberries|$'这是我见过的解决这个问题的最好的新方法,谢谢贝尼。
BAT精确地做到了这一点,它的别名是cat
alias cat='bat' 。在这个问题中,建议使用https://superuser.com/questions/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat /grc 工具作为supercat 的替代工具。GRC和EDOCX1的人(15);它是GRC包的一部分(资料来源):
grc - frontend for generic colouriser grcat(1)
grcat - read from standard input, colourise it and write to standard output
我已经写了一个小脚本来使用
pygmentize 执行着色。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 colorize_via_pygmentize() {
if [ ! -x"$(which pygmentize)" ]; then
echo"package \'Pygments\' is not installed!"
return -1
fi
if [ $# -eq 0 ]; then
pygmentize -g $@
fi
for FNAME in $@
do
filename=$(basename"$FNAME")
lexer=`pygmentize -N "$filename"`
if ["Z$lexer" !="Ztext" ]; then
pygmentize -l $lexer"$FNAME"
else
pygmentize -g"$FNAME"
fi
done
}然后为脚本创建别名。
alias cat=colorize_via_pygmentize 。也别忘了把它保存在~/.bashrc中。如果只需要一个一行程序将
cat 输出设置为给定的颜色,则可以附加
alias cat="echo -en 'code' | cat -" 给你的
~/.$(basename $SHELL)rc 。这里有一个颜色代码的gist:https://gist.github.com/chrisopedia/8754917
我喜欢高强度黄色的
'\e[1;93m' 。看起来是这样的:。