【发布时间】:2012-12-18 05:59:04
【问题描述】:
我有以下脚本~/bin/cat,它使用pygmentize 来显示语法高亮文件,如果不只是普通的旧cat。
#!/bin/bash
for var; do
pygmentize "$var" 2> /dev/null
if [ $? -ne 0 ]; then
/bin/cat "$var"
fi
done
这在我的工作机器上运行良好,但在我的家用机器上却不行。在家里,如果pygmentize 无法识别文件,它会显示相同的错误消息,但退出状态为 0,而在工作时它返回 1,这会破坏脚本。唯一的区别是我在工作中运行 Fedora 和在家里运行 Ubuntu。
$ pygmentize testfile
Error: no lexer for filename 'testfile' found
$ echo $?
0
$ file testfile
file: ASCII text
这很奇怪,因为它们是相同的版本
$ pygmentize -V
Pygments version 1.4, (c) 2006-2008 by Georg Brandl.
我可以在stderr 中为Error 提供grep,但我如何在不丢弃stdout 的情况下做到这一点,我应该如何处理?
【问题讨论】:
-
查看两个发行版都应用的补丁,找出修复/破坏它的补丁。
标签: bash shell colors terminal pygments