【发布时间】:2016-05-18 11:30:05
【问题描述】:
我的Makefile 中的一些目标运行我感兴趣的程序的输出(它们发送到stdout)。出于我不知道的原因,make 的作者决定回显执行的命令到stdout,污染后者。
建议here 提出一个解决这个涉及交换文件描述符的困难方法。我想知道是否有更简单的方法将make 回显到stderr。
我浏览了make 的man 页面,但除了-s 选项外,没有找到任何相关内容。我更喜欢保留命令的回声,但在stderr 中保留它。
我还尝试制作一个辅助目标(我将其作为所有其他目标的先决条件),我将其放入:
exec 3>&2
exec 2>&1
exec 1>&3
但是 bash 抱怨 3 不是一个有效的文件描述符。我只试过exec 1>&2,但没有任何效果...
【问题讨论】:
-
即使你这样做了,你的终端仍然会被
make的输出“污染”。 -
我想从一个脚本调用
make,然后它会处理上述程序的输出。另外,我只需将stderr重定向到一个文件,如果需要,我可以稍后查看。