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

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

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

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


当前回答

老问题,只是为了提供我最终使用的解决方案而回答记录。也许这有点粗糙(可能不是参数的最初目的),但是:

别名 cgrep='grep -C 9000'

猫什么| cgrep 'snozzberries'

..grep -C N将在找到的项的上面和下面提供N行上下文。如果它大于输入,则包括整个输入。在这种情况下,我们只需确保它比我们想要手动查看的任何典型终端输出都大,这通常是您在高亮显示时希望做的事情。

编辑:然而,Beni Cherniavsky-Paskin建议的这个解决方案更优越——它匹配(并突出显示)你要找的单词或行首(不突出显示)。最终的结果正是你想要的。

cat whatever | egrep 'snozzberries|$'

这是我所见过的针对这个问题的最新最佳解决方案,谢谢Beni。

其他回答

选项:

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

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存储库中找到,以及与替代程序的比较。

你正在寻找的工具可能是supercat(这是Linux Journal发布的一个快速介绍)。

我意识到这个答案晚了,并且没有完全满足OP的要求。所以我添加它只是为了参考(它可能对其他寻找如何为文本文件输出着色的人有用)。

有彩色版本的猫(他们的名字很难谷歌,除非你附加寻呼机和github或猫的替代品)。

bat[锈痕]https://github.com/sharkdp/bat (actively维护) ccat [golang] https://github.com/jingweno/ccat/

bat和ccat都是本地二进制文件,几乎和/bin/cat一样快,不像基于python的解决方案,比如pygmentze。

安装蝙蝠

MacOS: brew install bat Linux: apt install bat Windows: choco install bat 二进制文件:https://github.com/sharkdp/bat/releases 从源代码构建:货物安装—锁定蝙蝠(需要货物,生锈的构建工具)

更多操作系统请参见https://github.com/sharkdp/bat#installation

安装 ccat

获取Linux/Windows/macOS的二进制文件,例如将ccat复制到/usr/local/bin。 Mac: brew install ccat

如果你的平台没有二进制文件(例如树莓派等),那么你可以从源代码安装(需要golang环境):

go get -u github.com/jingweno/ccat

# NOTE: as of Go 1.18 instead of 'go get xyz' use 'go install xyz', e.g.
go install github.com/jingweno/ccat@latest

混叠到猫

bat的ootb配置显示行号,并进行分页,这是我不需要的,所以我用别名禁用了我不想要的功能:

加上你的~/。bashrc(~(/。zshrc等):

alias cat="bat --paging=never -pp --style='plain' --theme=TwoDark $*"

美国小妞ccat:

alias cat="ccat $*"

在你需要纯猫的情况下,你仍然可以通过绝对路径调用它:

/bin/cat /etc/hosts

放置在~/.bashrc中

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

then

ccat filename

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