“位桶”和/ dev / null的其他名称

2021-02-27 12:54:14

如果您使用Linux已有一段时间,则很可能遇到了位存储桶,通常写为/ dev / null。了解此特殊文件,其工作方式及其重要性将成为一种宝贵的工具。在本文中,我们将研究为什么/ dev / null赢得了名称存储桶,其工作方式及其属性。我们还将探讨一些示例,以说明如何在常规实践中使用它。

早期的计算机使用打孔卡来存储数据和编程代码。当机器冲出孔时,未使用的物料会掉入铲斗中。随着时间的流逝,比特桶成为废弃无用比特的地方的总称。

/ dev / null的其他名称是黑洞,空路径,打孔桶,空设备或仅空。

/ dev / null文件是在引导时生成的伪设备文件。它没有大小(0个字节),在磁盘上占用0个块,对所有用户都具有读/写权限。下面的屏幕快照显示文件和上次系统重新启动具有相同的日期和时间。

这是一个特殊的文件,称为字符设备文件。这使文件可以像未缓冲的设备(空设备)一样工作,并且可以接受数据流。当您访问设备文件时,您正在与驱动程序进行通信。在/ dev / null的情况下,它充当具有特定目的驱动程序的伪设备。它会丢弃您写入的所有内容,并且仅在读取时返回EOF字符。发送EOF或多或少意味着使进程知道不会发送任何其他输入(文件末尾)。

/ dev / null文件最常用于禁止输出。在以下示例中,我们使用“>”重定向运算符,将stat命令的输出发送到位存储桶。

我们将文件名更改为passwdss,该文件名不存在。这通常会显示“没有这样的文件或目录”错误。虽然,由于我们将STDERR(标准错误)输出重定向到/ dev / null,所以错误被丢弃了。

注意:要了解有关重定向和标准数据流(STDIN,STDOUT,STDERR)的更多信息,请阅读“ Linux I / O,标准流和重定向”。

/ dev / null的另一个常见用法是提供一个空白或空输入,除了EOF字符外什么都没有。可能尚不清楚为什么需要使用此功能。但是,有许多实用程序需要EOF字符才能继续。例如,mailx实用程序将允许您从命令行键入电子邮件。它将继续等待输入,直到接收到EOF字符为止(通过按CTRL + D发送该字符)。这告诉实用程序您无意发送更多输入。

注意:EOT(传输结束)和EOF(文件结束)具有技术差异,这些差异归因于编码,因此不在本教程的讨论范围之内。

如果我们想发送空白电子邮件该怎么办,我们将不得不进入交互模式并按CTRL + D,而没有任何输入。如果以脚本或其他无人参与的方式使用,这将是不切实际的。作为一种解决方法,我们可以将/ dev / null重定向到mailx命令中,以为我们执行此操作。

$ mailx -s" Just Another Email" [受电子邮件保护]< / dev / null空消息主体;希望没事

/ dev / null文件的另一个常用用法是清空文件的内容。如果您使用“>”重定向运算符将/ dev / null重定向到一个文件中,它有效地删除了该文件的内容。

[[受电子邮件保护]〜] $ cat scp.log更改为备份目录…发送SCP请求下载fw-backup-2019_11_10…fw-backup-2019_11_10-03_03_27-2.0.32.zip 100%536MB 2.8MB / s 03: 14 [[受电子邮件保护]〜] $ [[受电子邮件保护]〜] $ cat / dev / null> scp.log [[受电子邮件保护]〜] $ [[受电子邮件保护]〜] $ ls -l scp.log -rw-r--r--。 1 savona savona 0 Nov 11 21:32 scp.log [[受电子邮件保护]〜] $ cat scp.log [[受电子邮件保护]〜] $

另一个选择是使用cp命令在文件上复制/ dev / null,如下所示: [[受电子邮件保护]〜] $ cat scp.log更改为备份目录…发送SCP请求下载fw-backup-2019_11_10…fw-backup-2019_11_10-03_03_27-2.0.32.zip 100%536MB 2.8MB / s 03: 14 [[受电子邮件保护]〜] $ [[受电子邮件保护]〜] $ cp / dev / null scp.log [[受电子邮件保护]〜] $ [[受电子邮件保护]〜] $ cat scp.log [[受电子邮件保护] 〜] $ ls -l scp.log -rw-r--r--。 1 savona savona 0 Nov 11 21:34 scp.log [[受电子邮件保护]〜] $ 对于系统管理员,devops工程师以及几乎所有使用命令行的人,位存储桶(/ dev / null)是重要且有用的工具。 在本文中,我们讨论了/ dev / null的一些最常见用法,但是一旦知道了它的作用,就会发现越来越多的使用它的方法。