`nawk` 无法与 `make` 配合使用?为什么?

`nawk` 无法与 `make` 配合使用?为什么?

我有以下别名:

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

这解释了很多。删除aliasforcolormake解决了“问题”。

相关内容