如何在 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
例如,我将有意使用 find 命令,该命令将显示带有错误的输出,因此当我将输出重定向到 /dev/null 时,错误应该保持不变:
如您所见,当我使用 find 命令而不重定向输出时,它显示了价值 1807 行的输出。
当我重定向输出时,它仅显示错误,因为它属于标准错误流。
在 Linux 中将错误重定向到 /dev/null
正如我之前提到的,错误流被指定为 2。因此,您只需在上面的命令中做一些更改就可以了!
要重定向错误,您必须使用>
符号来重定向数据流,并使用数字2
指示它重定向标准错误上的数据流。
command 2> /dev/null
例如,我将sudo dnf update
在 Ubuntu 上使用,因此错误很明显,在第二个窗口中,我将演示如何重定向错误:
在 Linux 中将输出和错误重定向到 /dev/null
在本节中,我将向您展示如何将输出和错误重定向到 /dev/null。
将输出和错误重定向到 /dev/null 的基本语法如下:
command 1> /dev/null 2> /dev/null
或者您也可以使用较短的版本:
command 2>&1 /dev/null
在这个例子中,我将使用 find 命令在目录中查找etc
需要 sudo 权限才能访问某些子目录的文件,如果在没有 sudo 的情况下使用,它将引发错误:
总结
这是我对如何将输出和错误重定向到 /dev/null 的看法。
如果您想了解有关重定向数据流的更多信息,我强烈建议您阅读有关Linux 中重定向数据流的详细指南。