/dev/null
/dev/null 在Linux中其实是一个空设备文件。它天生就自命不凡,与普通文件划清界限。
其它文件遇到写入的内容照单全收,而 /dev/null 对于写入的东西通通扔掉。
重定向到 /dev/null
我们可以通过把命令的输出重定向到 /dev/null 来丢弃脚本的全部输出。
例如:执行命令 echo "Hello, it's me" > /dev/null ,看不到任何输出。但执行命令 aaa > /dev/null 会显示 aaa: commad not found 。
原因:
> 所做的重定向是将标准输出(stdout)到 /dev/null ,也就是将命令的正常输出重定向到 /dev/null ,然后 /dev/null 只做一件事,那就是将东西全部丢弃。而报错信息 aaa: command not found 并不属于标准输出,而是属于标准错误输出(stderr)。
要把标准错误输出重定向到 /dev/null ,也很简单,使用标准错误输出(stderr)的文件描述符 2 来指代它,并对其重定向:aaa 2> /dev/null。
总结
-
如果你只关心正常输出,可以在命令后面这样重定向:
2> /dev/null
这样一来,你看到的所有输出,都是命令正常执行的输出,忽略所有错误输出。
-
同理,如果你只关心报错内容,可以在命令后面这样重定向:
> /dev/null
参考: