如果有这样一个场景:我们运行一个Linux命令,它有很多输出信息,但是我们并不需要这些输出信息。或者,我们在脚本中使用一些Linux命令并且不希望它在终端屏幕上显示任何输出或错误。对于这种情况,我们可以利用输出和错误重定向,将它们发送到/dev/null。将标准输出发送到/dev/null的命令如下:command1>/dev/null将错误发送到/dev/null的命令如下:command2>/dev/null将输出和错误发送到/dev/null:command2>&1/dev/null/dev/null可以认为是Linux文件系统的一个黑洞,无论你往里面放什么,都看不到任何反应。下面让我们仔细看看。将输出重定向到/dev/null我们在终端中输入一个命令,它可以被认为是我们的输入(假设我们执行了sudoaptupdate)。这样,我们给我们的系统输入,然后系统就会显示正在更新的版本库,现在可以更新的包等进程信息,如下图所示:即系统给出的输出信息表明是命令的操作。以下是每个标准数据流的编号:标准输入(stdin)被分配为0;标准输出(stdout)为1;标准错误(stderr)为2。所以,将标准输出重定向到/dev/null的命令是:command1>/dev/null比如我们使用find命令,会显示部分错误输出信息,然后我将标准输出重定向到/dev/null,但是没有对错误信息做任何处理,仍然允许正常显示,如下图所示:从上图可以看出,当我不重定向输出,显示的输出信息为1807行。然后,当输出被重定向时,它只显示错误消息。将错误重定向到/dev/null前面我们提到,错误信息的数据流号为2,所以只需将上述命令的数据流号改为2,即可将错误信息重定向到/dev/null。command2>/dev/null上面命令中的大于号>用于重定向数据流,数字2表示在标准错误时重定向。比如我们在Ubuntu上运行命令sudodnfupdate,当然会报错。然后在第二个窗口中,重定向错误,如下图:Redirectbothoutputanderrorto/dev/null让我们看看如何将输出和错误都重定向到/dev/null。此任务的基本语法如下:command1>/dev/null2>/dev/null或者您可以使用缩写版本:command2>&1/dev/null作为演示,我们使用find命令查找etc目录下的文件。访问该路径下的部分子目录需要sudo权限。如果不使用sudo,会报错,如下图:以上就是本次分享的全部内容。如果您想了解更多关于重定向数据流的知识,可以阅读我们之前的文章:Linux中的输入、输出和错误重定向
