我有以下别名:
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
你有没有在字节级比较两个输出?
—
Marcus Rickert
您建议的所有版本都适用于我,即文本以红色打印。
—
Marcus Rickert
@MarcusRickert - 在字节级别 - 不,我该怎么做?甚至是
—
Kiril Kirov
make
作品?有意思,我不知道为什么它在这里不起作用.....
通过 字节级别 我的意思是你试着看看里面的内容 十六进制模式 。一些编辑支持这一点。这样您就可以找到可能破坏模式搜索的不可见字符。作为第一个测试,您还可以比较输出管道的文件的文件长度,并查看长度是否有任何差异。
—
Marcus Rickert
@MarcusRickert - 我明白了。你可以看到我的答案。愚蠢的情况..
—
Kiril Kirov