BASH Shell重定向输出和错误到/dev/null

时间:2020-01-09 10:39:34  来源:igfitidea点击:

如何在bash/sh shell脚本下将输出和错误重定向到/dev/null?
如何将stderr的输出重定向到stdout,然后将此组合的输出重定向到/dev/null设备?
在Unix中,如何将错误消息重定向到/dev/null?
您可以使用command>/dev/null语法将输出发送到/dev/null。
但是,这在命令将使用标准错误(FD#2)时不起作用。

因此,您需要按如下所示修改>/dev/null,以将输出和错误均重定向到/dev/null。

语法将错误和输出消息重定向到/dev/null

下面讨论的语法可用于类似Bourne的shell,例如sh,ksh和bash:

$ command > /dev/null 2>&1
$ ./script.sh > /dev/null 2>&1
$ ./example.pl > /dev/null 2>&1

或者

command &>/dev/null
job arg1 arg2 &>/dev/null
/path/to/script arg1 &>/dev/null

您还可以对所有cronjob使用相同的语法,以避免发送电子邮件和输出/错误消息:

@hourly /scripts/backup/nas.backup >/dev/null 2>&1

或者

@hourly /scripts/backup/nas.backup &>/dev/null

将标准错误和标准输出消息都重定向到日志文件

您始终可以通过执行以下命令将标准错误(stdin)和标准输出(stdout)文本都重定向到输出文件或日志文件:

command > file 2>&1
/path/to/my/cool/appname > myapp.log 2>&1

是否要关闭在Linux/Unix/BSD/OSX bash shell上执行的命令的stdout和stderr?

尝试以下语法:

## Thanks http://www.theitroad.local/faq/how-to-redirect-output-and-errors-to-devnull/#comment-40252 ##
command 1>&- 2>&
 
## Note: additional '&' at the end of job to put it in backgrounds ##
job 1>&- 2>&-  &
command 1>&- 2>&-  &