Linux 中的 '> /dev/null 2>&1' 是什么

/dev/null是 Linux 中的伪设备文件,用于丢弃来自程序的输出,尤其是在命令行上执行的输出。
该文件的行为类似于接收器,即可以写入的目标文件,但是一旦将任何数据流写入该文件,它就会立即被删除。

程序输出的错误在 Linux 中称为 STDERR(标准错误),用整数"2"表示,而成功和信息输出称为 STDOUT(标准输出),用整数表示"1"。

现在,您可能经常看到以下命令行语句,它将 STDERRSTDOUT 丢弃到 /dev/null

1
命令名称 > /dev/null 2>&1

该运算符">"称为重定向运算符。它将输出重定向到它之后指定的文件,在本例中是 /dev/null,而不是在终端上打印它。

这是否意味着命令的所有输出都被操作员重定向到 /dev/null

不。如上所示使用时,操作员仅重定向 STDOUT

因此,我们有了命令的最后一部分。“2>&1"意思是:将 STDERR (2)重定向到 STDOUT (1)。我们必须指定”&1"而不是简单地指定"1"的原因是简单地写入"1"会将输出重定向到名称为"1"的文本文件。使用&符号(&),系统识别出1不是文件名,而是文件描述符 STDOUT

因此,我们将 STDOUT 重定向到 /dev/null 并将 STDERR 重定向到 STDOUT,这样,程序的完整输出在 /dev/null 中被丢弃。