当尝试从make过滤特定警告或错误消息的非常长的输出时,第一个想法是这样的:
$ make | grep -i 'warning: someone set up us the bomb'
Run Code Online (Sandbox Code Playgroud)
但结果并不完全令人满意.输出将不仅包含从筛选结果grep,还stdout和stderr消息从在使用的其他工具make的目标的地方.
现在的问题是:
回答问题:
stdout的make到stdin的grep.make的stderr仍然连接到在将所述终端而不进行过滤,因此进行打印.解决的办法是连接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.