是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
是否有一种方法为cat的输出着色,就像grep那样。
对于grep,在大多数控制台中,它会显示一个彩色输出,突出显示搜索的关键字。否则,你可以通过调用grep——color来强制执行 是否有一种通用的方法来根据您的个人选择为任何程序的输出着色。
据我所知,程序本身并不负责颜色。它是壳。
我正在使用FreeBSD 5.2.1中的默认shell,它看起来像从epoch以来从未见过颜色。
当前回答
这个问题非常古老,但我还是无意中发现了它。为了完整起见,问题是“是否有一种方法让cat对其输出进行着色?”是的,对于ansi编码的输出,你可以将这些导出添加到你的.bashrc:
# colorful less output
export LESS_TERMCAP_mb=$'\e[1;32m'
export LESS_TERMCAP_md=$'\e[1;32m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[01;33m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;4;31m'
这将使ansi编码文本的输出上色,如terraform plan:
然而,这与bat不同,bat可以更好地解析json,显示行号,通常用户体验更好。
其他回答
我推荐使用python包python- pyptions中的pygmentize。您可能需要定义以下方便的别名(除非您使用ccrypt包中的ccat)。
alias ccat='pygmentize -g'
如果你想要行号
alias ccat='pygmentize -g -O style=colorful,linenos=1'
向~/添加上述命令中的一个。bash_别名永久生效
据我所知,二进制本身并不负责颜色。它是壳。
这不对。终端只是解释输出到终端的颜色代码。根据其能力,它可以忽略某些格式/着色代码。
从手册页来看,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来打印二进制文件,并且可以增强逻辑以使其适合您的需要。
Vimcat是单文件(shell脚本),工作良好:
http://www.vim.org/scripts/script.php?script_id=4325
最近一次更新是2013年12月。提示:你可以通过vimcat -c "set ft=<type>"强制文件类型识别。
只需使用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也可能是一种替代方案。