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

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

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

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


当前回答

我已经写了一个小脚本来执行使用pygmentze着色。

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
}

然后为脚本创建一个别名。别名猫= colorize_via_pygmentize。另外,不要忘记将其保存在~/.bashrc中。

其他回答

source-highlight

也许可以找到GNU下发布的有趣的source-highlight:一个不同于highlight的包。

摘自apt-cache show source-highlight:

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

我做了一些别名(Cat和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 ...

或者你可以做一个类似的别名(没有-iat在结尾,以便管道的可能性)

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-lang=STRING源语言(使用——lang-list获取完整的列表)。如果未指定,则将根据文件扩展名猜测源语言。 ——lang-list 列出所有支持的语言和相关的语言定义文件

在OSX上简单地执行brew install ccat。

https://github.com/jingweno/ccat。与cat类似,但显示内容时使用语法高亮显示。内置围棋。

选项:

侏儒化是好的。我有一个别名:

alias c='pygmentize -g'

但高光是另一种广泛使用的选择

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

安装:

你可能必须使用以下方法之一来安装pyments:

sudo apt install python-pygments
sudo pip install pygments
sudo easy_install Pygments #for Mac user

和突出包,这是很容易在所有发行版

sudo apt install highlight
sudo yum install highlight

Bitbucket回购:https://bitbucket.org/birkenfeld/pygments-main GitHub镜像:https://github.com/sglyon/pygments

在行动:

我在下面附上了两者的照片,以便在高亮部分进行比较

以下是pygmentize的作用:

这是重点:

为此,我编写了一个基于rust的小软件。它被命名为highlighter,可以在以下回购中找到:

https://codeberg.org/mehrad/highlighter

基本上,您只需将前一个命令的输出输出到它中,并告诉它根据您的偏好对其进行着色。例如:

locale | highlighter  --blue="=" --red="_U.*" --yellow "NAME" --green="_ME.*"

如果您认为名称太长,我建议为它创建一个别名。我宁愿取一个较长但有描述性的名字,也不愿取一个短而模糊的名字。

放置在~/.bashrc中

function ccat() { docker run -it -v "$(pwd)":/workdir -w /workdir whalebrew/pygmentize $1; }

then

ccat filename

Whalebrew为Docker映像创建别名,这样您就可以像运行本机命令一样运行它们。它很像Homebrew,但是有Docker图像。