我在Makefile
中有一个rm *.o
命令来删除编译过程中生成的所有目标文件。但是,如果某些.o
文件不存在,则会输出一些错误信息。那么我怎样才能抑制错误信息输出?Shell - 禁止单个命令的输出
7
A
回答
11
在make
的背景下,比输出更重要的是,您不希望将rm
的结果视为失败。有两种方法来对付它:
clean:
-rm *.o 2> /dev/null
rm -f *.o 2> /dev/null
第一种方式是用一个减号,它告诉make
忽略返回代码前缀的命令。这是首选,make
特定的方式。第二种是使用-f
标志,该标志仅针对rm
。
最重要的是,你可以选择以取消与2> /dev/null
或不输出。
2
rm -f *.o
或
rm *.o >& /dev/null
6
在少数情况下,它也可能是必要的输出重定向到/dev/null
。你可能想要做rm *.o > /dev/null 2>&1
。 > /dev/null
部分发送标准输出到/dev/null
和2>&1
说发送标准错误到任何标准输出。
您必须注意'>&'表示法。它可以在'bash'中正常工作,但在'dash'中不起作用。由于'dash'在问题中给出了标签是完全有效的,所以不适合使用'>&'。 – 2013-03-15 14:12:16