Mic*_*ant 4 colors cat source-highlight
我喜欢我的颜色vim
。当我做 a 时,我可以让我的输出同样着色cat
吗?
我喜欢我可以像Colorized `cat`一样使用 colorize 工具来处理源文件和脚本文件吗?. 我希望这是我的标准cat
,例如我创建了一个别名:
alias cat="source-highlight --out-format=esc -o STDOUT -i"
Run Code Online (Sandbox Code Playgroud)
但是,如果文件类型未知,请说.gitignore
这将返回:
$ cat .gitignore_global
source-highlight: could not find a language definition for input file .gitignore
Run Code Online (Sandbox Code Playgroud)
source-highlight
cat
如果它是可识别的文件类型,我怎么能让命令执行一个版本,否则只执行标准的黑白cat
文件?
一种选择是使用别名,ccat
但cat
如果可能的话,我更愿意让它自行替换。
能够使用通配符也很好,例如cat *.rb
(甚至ccat *.rb
)?目前这给出:
$ ccat *.rb
Please, use one of the two syntaxes for invocation:
source-highlight [OPTIONS]... -i input_file -o output_file
source-highlight [OPTIONS]... [FILES]...
Run Code Online (Sandbox Code Playgroud)
能够做到这一点会很棒:
ls *.rb | xargs ccat # (or cat)
Run Code Online (Sandbox Code Playgroud)
和我可以做的一样:
ls *.rb | xargs cat
Run Code Online (Sandbox Code Playgroud)
目前我得到:
$ ls *.rb | xargs ccat
xargs: ccat: No such file or directory
Run Code Online (Sandbox Code Playgroud)
也许您可以执行以下脚本(未经测试)之类的操作:
#!/bin/sh
for fn in "$@"; do
source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn
done
Run Code Online (Sandbox Code Playgroud)
这做了几件事:
source-highlight
,将错误输出重定向到/dev/null
source-highlight
失败,则运行常规/bin/cat
您将此脚本放在一个名为cdc
例如的文件中,然后alias cat=cdc
.
您可以将上述脚本改编为 Bash 函数调用,然后可以将其合并到您的点文件中,如下所示:
cdc() {
for fn in "$@"; do
source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn;
done
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,编辑 (Michael) 尝试使用ccat
函数名称没有奏效,但cdc
确实如此!