如何将所有输出重定向到/ dev/null?

Ben*_*ird 58 bash pipe output-redirect dev-null

我想在后台运行一个程序(google-chrome),但是阻止它向终端输出任何消息.

我试过这样做:

google-chrome 2>&1 1>/dev/null &
Run Code Online (Sandbox Code Playgroud)

但是,终端仍然填满没有消息,如:

[5746:5746:0802/100534:错误:object_proxy.cc(532)]无法调用方法:org.chromium.Mtpd.EnumerateStorag ...

我究竟做错了什么?如何将所有输出重定向到/dev/null

Mic*_*nez 65

重定向运算符从左到右进行计算.你做错了什么是2>&1第一个,它指向当前指向2的同一个地方1,这是本地终端屏幕,因为你还没有重定向1.您需要做的是以下任一项:

2>/dev/null 1>/dev/null google-chrome &
Run Code Online (Sandbox Code Playgroud)

要么

2>/dev/null 1>&2 google-chrome &
Run Code Online (Sandbox Code Playgroud)

重定向运算符相对于命令的位置无关紧要.您可以在命令之前或之后放置它们.

  • 因为OP说他们想在后台运行命令 (2认同)

use*_*332 37

Redirectionbash的参考手册中说:

运算符[n]>&word用于复制输出文件描述符

要重定向都stderrstdoutfile你应该使用形式

&>file
Run Code Online (Sandbox Code Playgroud)

关于你的情况,这意味着替代

2>&1 1>/dev/null
Run Code Online (Sandbox Code Playgroud)

&>/dev/null
Run Code Online (Sandbox Code Playgroud)

  • `>/dev/null 2>&1`可能比`&>/dev/null`更便携? (4认同)