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

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

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

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


当前回答

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

https://codeberg.org/mehrad/highlighter

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

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

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

其他回答

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

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

带有语法高亮显示的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来打印二进制文件,并且可以增强逻辑以使其适合您的需要。

放置在~/.bashrc中

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

then

ccat filename

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

只需使用vim和这个vimrc文件。

oneliner:

vim -c '1' -c 'set cmdheight=1' -c 'set readonly' -c 'set nomodifiable' -c 'syntax enable' -c 'set guioptions=aiMr' -c 'nmap q :q!<CR>' -c 'nmap <Up> <C-Y>' -c 'nmap <Down> <C-E>' -c 'nmap ^V <C-F><C-G>' "$@" 

Nano -v也可能是一种替代方案。

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

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