是否有任何选项可以让 cat 输出颜色?

Jic*_*hao 19 linux command-line cat

如果我想输出带有语法高亮显示的 C 源代码文件,我可以使用cat?

rgm*_*rgm 18

GNU 软件包source-highlight似乎可以解决问题(尽管没有使用 cat ——正如 John T 指出的那样,这对于 cat 是不可能的)。它可以通过 Ubuntu 上的 apt-get 获得,并且需要 Boost regex 库。检查您的包管理器以查看两者是否可用,否则您可以从网上获取它们。我认为之前链接的 GNU 页面有一个到 Boost 的链接。

安装后,我在我的路径中创建了一个名为ccat的新脚本。该脚本如下所示:

#!/bin/bash
src-hilite-lesspipe.sh $1
Run Code Online (Sandbox Code Playgroud)

没什么特别的,只是简化了它们包含在源代码高亮中的less脚本。以这种方式调用时,它的行为就像 cat 一样。

不过,包含的 less 脚本也是一个很好用的脚本。我刚刚将以下内容添加到.bashrc

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
Run Code Online (Sandbox Code Playgroud)

该脚本也包含在源代码突出显示的在线手册中。

如果您想完全忽略 cat,我想您可以将 cat 别名为调用 src-hilite-lesspipe.sh $1 ,但这可能并不理想。

  • 我个人更喜欢以“$1”结尾的单行 bash 脚本的别名:)。 (4认同)
  • 也可以在 Mac 上使用 `brew install source-highlight`。无法为 yaml 着色:( (2认同)

mic*_*ien 9

为了使用类似的内容输出语法突出显示的代码cat,我ccat按照http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/ 上的说明创建了一个命令。

#!/bin/bash
if [ ! -t 0 ];then
  file=/dev/stdin
elif [ -f $1 ];then
  file=$1
else
  echo "Usage: $0 code.c"
  echo "or e.g. head code.c|$0"
  exit 1
fi
pygmentize -f terminal -g $file
Run Code Online (Sandbox Code Playgroud)

要使用类似的内容输出语法突出显示的代码less,我使用 vim 作为较少的替代品。

alias less='/usr/share/vim/vim72/macros/less.sh'
Run Code Online (Sandbox Code Playgroud)