如何在 Linux 中将输出和错误重定向到 /dev/null

想象一下这种情况。 你运行一个 Linux 命令,它有一个巨大的输出。 你不想看到它的输出。

或者,您在脚本中使用了某些 Linux 命令,但不希望它在终端屏幕上显示任何输出或错误。

对于这种情况,您可以利用输出和错误重定向并将它们发送到 /dev/null。

将输出发送到 /dev/null:

command 1> /dev/null

将错误发送到 /dev/null:

command 2> /dev/null

将输出和错误都发送到 /dev/null:

command 2>&1 /dev/null

/dev/null 可以被认为是 Linux 文件系统的一个黑洞,所以无论你把什么扔在那里,都再也见不到光了。

下面我们就来详细了解一下。

在 Linux 中将输出重定向到 /dev/null

让我从基础开始。 您在终端中键入命令就是您的输入(假设我执行了 sudo apt update).

所以我给了我的系统输入,它会更新目录,它会告诉我正在进行的过程,比如正在更新的存储库和现在已经过时的包:

简而言之,它给出的输出显示了它对命令做了什么。 现在,这里是每个标准数据流的编号名称:

  • 标准输入 (stdin) 指定为 0
  • 标准输出 (stdout) 指定为 1
  • 标准错误 (stderr) 指定为 2

那么现在,让我向您展示如何将标准输出重定向到 dev/null:

command 1> /dev/null

为了 example,我将有意使用 find 命令,该命令将显示带有错误的输出,因此当我将输出重定向到 /dev/null 时,错误应该保持不变:

如您所见,当我在不重定向输出的情况下使用 find 命令时,它显示了 1807 行的输出。

当我重定向输出时,它只显示属于标准错误流的错误。

在 Linux 中将错误重定向到 /dev/null

正如我之前提到的,错误流指定为 2。因此您只需在上面的命令中进行一些更改就可以了!

要重定向错误,您必须使用 > 使用数字重定向数据流的符号 2 指示它在标准错误时重定向数据流。

command 2> /dev/null

为了 example我会用 sudo dnf update 在 Ubuntu 上,错误很明显,在第二个窗口中,我将演示如何重定向错误:

在 Linux 中将错误重定向到 /dev/null

在 Linux 中将输出和错误重定向到 /dev/null

在本节中,我将向您展示如何将输出和错误重定向到 /dev/null。

将输出和错误重定向到 /dev/null 的基本语法如下:

command 1> /dev/null 2> /dev/null

或者您也可以使用较短的版本:

command 2>&1 /dev/null

为了这 example,我将使用 find 命令在 etc 你需要的目录 sudo 访问某些子目录的权限,并且在没有使用时 sudo,它会抛出一个错误:

在 Linux 中将输出和错误重定向到 /dev/null

总结

这是我对如何将输出和错误重定向到 /dev/null 的看法。

如果您想了解有关重定向数据流的更多信息,我强烈建议您阅读有关在 Linux 中重定向数据流的详细指南。