语法高亮/着色的猫语法高亮/着色的猫(Syntax highlighting/colorizing

2019-05-12 20:59发布

有没有上色的输出的方法cat ,一路grep一样。

对于grep ,在大多数游戏机它显示的彩色输出突出搜索的关键字。 否则,您可以通过调用迫使它grep --color是否有颜色可根据您的个人选择任何程序的输出的通用方式。

据我了解,该计划本身是不负责的颜色。 它是外壳。

我使用了FreeBSD 5.2.1看起来就像它从来没有纪元以来见过的颜色默认的shell。

Answer 1:

cat与语法高亮简直是超出范围。 cat并不意味着为。 如果你只是想通过某种方法有色(搭配同色系的整个文件)某些文件的全部内容,您可以利用终端转义序列来控制颜色。

下面是一个示例脚本,将选择基于文件类型的颜色(你可以使用这样的事情,而不是调用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"

上述(支持这些转义序列的终端上)将打印任何文本文件为“粗体”,和将打印任何二进制文件为红色。 您可以使用strings ,而不是cat打印二进制文件,并可以提升逻辑,使其满足您的需求。



Answer 2:

我建议pygmentize从Python包python-pygments 。 您可能要定义以下得心应手别名(除非你使用ccat从ccrypt包)。

alias ccat='pygmentize -g'

如果你想行号:

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


Answer 3:

选项:

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

alias c='pygmentize -g'

亮点是另一种广泛使用的方法是

alias cats='highlight -O ansi --force'

安装:

您可能必须安装pygments使用:

sudo pip install pygments
sudo easy_install Pygments #for Mac user

highlight包,它很容易适用于所有发行

sudo apt-get install highlight
sudo yum install highlight
  • 到位桶回购: https://bitbucket.org/birkenfeld/pygments-main
  • GitHub的镜子: https://github.com/sglyon/pygments

在行动:

我附加镜头两个向下跌破中highlightings比较不错

这里是pygmentize在行动:

这是highlight



Answer 4:

你要找的工具可能是supercat (这里有一个快速的介绍由Linux杂志出版)。

我知道这个答案是晚了,它并不能完全满足OP要求。 所以我将它添加仅供参考(也可能是为其他人寻找如何上色文本文件输出有用)。



Answer 5:

vimcat是单文件(shell脚本)和良好的工作:

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

最后更新时间是从12月2013年提示:您可以通过强制文件类型识别vimcat -c "set ft=<type>"



Answer 6:

从四月下旬起,2018:

蝙蝠 -猫(1)克隆与语法高亮和Git集成。

该项目是一个猫克隆与写在锈的颜色和自定义支持。 它不仅提供语法与多个主题突出,同时也整合的Git。 如文档中所述:

蝙蝠试图实现以下目标

  • 提供优美,先进的语法高亮
  • 使用Git集成显示文件修改
  • 是一个下拉更换为(POSIX)猫
  • 提供了一个用户友好的命令行界面

这是不用说,比pygmentize要快,与大文件面临不呛。

源代码和二进制版本 + 安装说明可以在Github上储存库,以及一个可以找到替代方案的比较 。



Answer 7:

有猫的彩色版本- CCAT 。 得到它https://github.com/jingweno/ccat/ 。

安装在Linux / Windows的/ MacOS的

这是一个独立的可执行文件,以便安装它,您可以解开您的操作系统从二进制版本https://github.com/jingweno/ccat/releases和复制与CCAT二进制例如,以/usr/local/bin

如果你想避免的二进制文件,或者如果有你的平台(例如覆盆子PI等)没有二进制,那么你就可以交替地从源代码编译因为你有一个工作go开发环境 ( apt install golang基于Debian的Linux版本或brew install golang在Mac):

go get -u github.com/jingweno/ccat

ccat二进制文件将您的下创建$GOPATH/bin

通过自制软件安装在Mac

brew install ccat

别名cat

要定期更换catccat添加在~/.bashrc

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

ccat是实现围棋 ,所以它是运行速度比基于Python的解决方案,如更快的本机二进制Pygments来做 ,后面的模块pygmentize ; 我没有看到之间的任何显着的速度差catccat



Answer 8:

source-highlight

也许这是有可能找到有趣的source-highlight GNU下发布 :从不同的包highlight

摘自apt-cache show source-highlight

说明恩: 转换的源代码语法高亮文件。
这一方案,给出一个源文件,生成语法高亮的文件。
它支持超过100个文件格式,语法高亮 ...
对于输出,下面的格式支持:HTML,XHTML,乳胶,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在年底有可能在管

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

其中,它可能从读选项man source-highlight-s强调,可以选择,或 ,高亮通过命令行或离开该程序这个义务:

-s,--src = STRING源语言(使用--lang列表以获得完整的列表)。 如果没有指定,源语言将文件扩展名来猜测

--lang名单列表中的所有受支持的语言和相关的语言定义文件



Answer 9:

最好的办法,并做到这一点,如果你在你的机器有vim的最简单的方法是使用vimcat附带vimpager程序。

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

    vimcat index.html



Answer 10:

据我了解,二进制本身是不负责的颜色。 它是外壳。

That't不正确的。 终端只是解释颜色代码被输出到所述终端。 根据其能力可以忽略某些格式/着色代码。

从手册页它似乎并不支持猫着色输出。 即使是支持着色,如grep又该它在文本文件中的颜色? 语法高亮所需的底层语言这不是在简单的工具,像猫的范畴的知识。

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



Answer 11:

On OSX simply do brew install ccat.

https://github.com/jingweno/ccat. Like cat but displays content with syntax highlighting. Built in Go.



Answer 12:

老问题,只是回答备案提供我结束了使用的解决方案。 也许这是一个有点哈克(可能不是参数的原意),但是:

别名cgrep =离合器-C 9000'

猫什么| cgrep 'snozzberries'

.. grep -CN将提供上面和下面找到的项目上下文的N行。 如果它是比输入大,整个输入是包括在内。 在这种情况下,我们只是要确保它比任何典型的终端输出较大,我们将要在手动查找,这是你正在寻找做,如果突出普遍的东西。

编辑:但是,这个方案通过贝尼切尔尼亚夫斯基-帕斯金以下建议优越-它匹配(和亮点),要么你要找的字或行的开头(不高亮)。 最终的结果是你想要什么。

cat whatever | egrep 'snozzberries|$'

这是我见过这个问题的新的最佳解决方案,感谢贝尼。



Answer 13:

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

曼GRC和grcat ; 它是部分GRC包 ( 源 ):

GRC - 前端的通用colouriser grcat(1)

grcat - 从标准输入读取,colourise并写到标准输出



Answer 14:

蝙蝠正是这是否和可以使用别名猫alias cat='bat'



Answer 15:

我写的小脚本中使用执行colourization pygmentize

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中



Answer 16:

如果你只是想要一个衬垫设置cat输出给定的颜色,可以追加

alias cat="echo -en 'code' | cat - "

~/.$(basename $SHELL)rc

下面是颜色代码要点: https://gist.github.com/chrisopedia/8754917

我喜欢'\e[1;93m' ,这是高强度的黄色。 它看起来像这样:



文章来源: Syntax highlighting/colorizing cat