Shell - 抑制单个命令的输出

CDT*_*CDT 7 linux shell makefile

我有一个rm *.o命令Makefile来删除编译期间生成的所有目标文件.但是,如果某个.o文件不存在,则会输出一些错误信息.那么如何抑制错误信息输出呢?

Hai*_* Vu 11

make更重要的是输出的上下文中,您不希望make将结果rm视为失败.有两种方法可以解决它:

clean:
    -rm *.o    2> /dev/null
    rm -f *.o  2> /dev/null
Run Code Online (Sandbox Code Playgroud)

第一种方法是在命令前加一个减号,告诉make忽略返回代码.这是首选的,make特定的方式.第二种是使用-f标志,这只是特定的rm.

最重要的是,您可以选择是否抑制输出2> /dev/null.


Ste*_*eve 6

在极少数情况下,可能还需要将输出重定向到/dev/null.你可能想做rm *.o > /dev/null 2>&1.该> /dev/null部分将stdout发送到/dev/null并且2>&1说要将stderr发送到stdout去的地方.