前言
/dev/null
是一个特殊的设备文件,它丢弃一切写入其中的数据,可以将它视为一个黑洞,它等效于只写文件,写入其中的所有内容都会消失,尝试从中读取或输出不会有任何结果,/dev/null
在命令行和脚本中都非常有用。
使用
java -jar app.jar > /dev/null # 表示忽略标准输出
java -jar app.jar > /dev/null 2>&1 # 表示忽略标准输出和标准错误输出
cat /dev/null # 返回空
ls /root > /dev/null # 忽略 ls 命令的输出
ls /root/abc > /dev/null 2>$1 # 忽略 ls 命令的输出,也会忽略 /root/abc 目录不存在的错误输出
2>1 表示将stderr重定向到当前路径下文件名为1的文件中,而2>&1表示将stderr重定向到文件描述符为1的文件(即/dev/null)中。2>&1 命令中间不能有空格。
参考
shell脚本中 /dev/null 的用途
Shell 重定向 2>&1 含义说明