Grepping Make Output

eri*_*ork 11 grep makefile

当尝试从make过滤特定警告或错误消息的非常长的输出时,第一个想法是这样的:

$ make | grep -i 'warning: someone set up us the bomb'
Run Code Online (Sandbox Code Playgroud)

但结果并不完全令人满意.输出将不仅包含从筛选结果grep,还stdoutstderr消息从在使用的其他工具make的目标的地方.

现在的问题是:

  1. 其他输出来自哪里?
  2. 如何编写输出只包含过滤行的过滤器命令?

eri*_*ork 9

回答问题:

  1. 管道只有连接stdoutmakestdin的grep.makestderr仍然连接到在将所述终端而不进行过滤,因此进行打印.
  2. 解决的办法是连接makeS" stderr到它stdin和忽略stdin

    $ make 2>&1 >/dev/null | grep -i 'warning: someone set up us the bomb'
    
    Run Code Online (Sandbox Code Playgroud)

这只打印grep的输出,但没有来自make或其他工具rm.