Linux 中的 /dev/null 是什么?

如果您已经使用 Linux 用户一段时间,那么您一定遇到过 /dev/null 一词,至少在模因中是这样。

/Dev 是大多数外围设备(例如磁盘驱动器)所在的目录。

但是这个 /dev/null 文件由于其特性而很特殊,我将在本指南中讨论这一点。

/dev/null 是什么?

它是一个虚拟文件,具有处理文件的独特方式。 写在 /dev/null 上的任何内容都将消失并且无法恢复。 一个命令应该产生巨大的输出? 将它重定向到 /dev/null 并且系统中的任何地方都不会看到输出,甚至在 /tmp 中也看不到。 这就是为什么它被称为 Linux 的黑洞。

让我快速分享一下 example 这里。

在这里,我将我的标准输出重定向到 /dev/null:

echo "Linuxhandbook" > /dev/null

如您所见,当我使用 cat 命令打印的内容时 /dev/null,它什么也没显示。

现在,让我们深入了解文件属性 /dev/null.

/dev/null 的文件属性

为了更好的可读性,我将使用 stat 命令来了解文件系统的状态。

stat /dev/null

它解释了很多。

  • 它是空的
  • 创建日期与我上次启动的日期相同
  • 文件的 UID 和 GID 为 0
  • 并且允许每个用户读取和写入 /dev/null
  • 它是一个字符设备文件,这意味着它将像一个未缓冲的设备一样工作并且可以接受数据流

所以你可以发送任意数量的文件到 /dev/null,它不能被填充或不会增加尺寸。

?的 /dev/null 充当文件,因此,您不能使用 mv 命令删除或转储带有 dev/null 的目录。

在 Linux 中使用 /dev/null

正如我之前提到的,它是一个黑洞,无论发送到那里什么都无法恢复。

/dev/null 最常见的用途之一是将命令的错误或输出重定向到此文件。

想象一个命令运行了一段时间,它产生了标准输出和错误。 如果您只对阅读错误感兴趣,您可以将输出重定向到 /dev/null 以便它只显示错误。

command 1> /dev/null

同样,如果您只想查看标准输出而不是错误,则可以将错误重定向到 /dev/null。

command 2> /dev/null

您可以将标准输出和错误发送到 /dev/null。 这将运行命令但不会在屏幕上显示任何内容。

command 2>&1 /dev/null

如果所有这些 2>&1 的内容对您来说都像是代数,我强烈建议您阅读本文中有关 stdout、stdin 和 stderr 重定向的内容。

让我如此傻傻的简单 example.

在这里,我使用了两个命令 lsapt update 其中更新存储库的命令 (apt update) 将需要超级用户权限。

在理想情况下,它应该给我以下输出:

ls && apt update
在 linux 中使用 & 运算符一次执行两个命令

现在,我将错误部分重定向到 /dev/null:

ls && apt update 2> /dev/null
在 Linux 中将输出重定向到 /dev/null

正如您所看到的,输出的错误部分不再显示。

还有更多的开发文件…

/dev/null 不是唯一的特殊设备文件。 /dev/zero 用于创建填充零的文件或 /dev/random 用于生成随机数。

为了结束本文,我将与您分享一个很酷的 /dev/null 模因?

/dev/null Linux 模因