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

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

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

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


当前回答

Bat正是这样做的,可以别名为cat别名cat=' Bat '

其他回答

选项:

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

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的作用:

这是重点:

2018年4月底起:

Bat -一个带有语法高亮显示和Git集成的猫(1)克隆。

该项目是一个cat克隆,支持用Rust编写的颜色和自定义。它不仅提供了多个主题的语法高亮显示,还提供了Git集成。如文档所述:

Bat努力实现以下目标: 提供漂亮、高级的语法高亮显示 与Git集成以显示文件修改 是(POSIX)猫的临时替代品 提供用户友好的命令行界面

不用说,它比pygmentize快得多,并且在面对大文件时不会阻塞。

源代码和二进制版本+安装说明可以在Github存储库中找到,以及与替代程序的比较。

放置在~/.bashrc中

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

then

ccat filename

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

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

这不对。终端只是解释输出到终端的颜色代码。根据其能力,它可以忽略某些格式/着色代码。

从手册页来看,cat似乎不支持对输出进行着色。即使它像grep一样支持上色它在文本文件中应该给什么上色呢?语法突出显示所需的底层语言知识,这不在简单实用程序(如cat)的范围内。

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

带有语法高亮显示的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"

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