我有以下别名:
alias mca_color='nawk '"'"'BEGIN { arr["Creating shared object"] = "1;31";} \
{ l = $0; for (pattern in arr) \
{ gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"
我使用类似的别名来为其他输出着色(使用更多模式,但这仅仅是例如)。
因此,如果我像这样使用它,这个别名就会起作用:
$ echo "-ne Creating shared object test.so ..." | mca_color
echo
以红色印刷。但,当我尝试:
$ make | mca_color
乃至
$ make 2>&1 | mca_color
结果是不是彩色(是的,make
如果执行的话,在最后会“打印”相同的文本)。
有任何想法吗?
我认为可能与子进程或其他东西有关,但显然管道有效 - 尝试过它grep
,尝试将输出重定向到文件中,一切正常。
即使这样也不起作用(文本被打印,但没有颜色):
$ make 2>&1 | grep 'a' | mca_color
答案1
我终于明白了,几乎是无意中。
似乎还有另一个alias make='colormake'
脚本colormake
,其中包含:
/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl
这解释了很多。删除alias
forcolormake
解决了“问题”。