是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
当前回答
选项:
侏儒化是好的。我有一个别名:
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的作用:
这是重点:
其他回答
带有语法高亮显示的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来打印二进制文件,并且可以增强逻辑以使其适合您的需要。
你正在寻找的工具可能是supercat(这是Linux Journal发布的一个快速介绍)。
我意识到这个答案晚了,并且没有完全满足OP的要求。所以我添加它只是为了参考(它可能对其他寻找如何为文本文件输出着色的人有用)。
老问题,只是为了提供我最终使用的解决方案而回答记录。也许这有点粗糙(可能不是参数的最初目的),但是:
别名 cgrep='grep -C 9000'
猫什么| cgrep 'snozzberries'
..grep -C N将在找到的项的上面和下面提供N行上下文。如果它大于输入,则包括整个输入。在这种情况下,我们只需确保它比我们想要手动查看的任何典型终端输出都大,这通常是您在高亮显示时希望做的事情。
编辑:然而,Beni Cherniavsky-Paskin建议的这个解决方案更优越——它匹配(并突出显示)你要找的单词或行首(不突出显示)。最终的结果正是你想要的。
cat whatever | egrep 'snozzberries|$'
这是我所见过的针对这个问题的最新最佳解决方案,谢谢Beni。
为此,我编写了一个基于rust的小软件。它被命名为highlighter,可以在以下回购中找到:
https://codeberg.org/mehrad/highlighter
基本上,您只需将前一个命令的输出输出到它中,并告诉它根据您的偏好对其进行着色。例如:
locale | highlighter --blue="=" --red="_U.*" --yellow "NAME" --green="_ME.*"
如果您认为名称太长,我建议为它创建一个别名。我宁愿取一个较长但有描述性的名字,也不愿取一个短而模糊的名字。
如果你只想用一行代码将cat输出设置为给定的颜色,你可以追加
几只猫=“回音非code' | cat - "
致你的~/。rc (basename壳美元)
这里有一个颜色代码的要点:https://gist.github.com/chrisopedia/8754917
我喜欢“\e[1;93m”,它是高强度的黄色。它是这样的: