/ dev / zero的目的?


49

我尝试进行操作cat /dev/zero,但似乎没有任何作用。我用google搜索/dev/zero,它说它基本上是一个无限大小的空白文件。是否cat打印了无数个不存在的字符?这是如何运作的?如果它是0字节,它将如何提供无限数据?如果可以简单地创建一个空白文件,此文件有什么用途?


11
跑去cat -v /dev/zero看看它在做什么。出于常见目的请参阅用零清除未使用的空间(ext3,ext4)
manatwork 2013年

还有/ dev / null,如果您想读取它,它的行为类似于一个空文件,而如果您对其进行写入,则其表现为黑洞。
jofel

@jofel,但您不能将/ dev / null用于无限0位,对吗?cat foo > /dev/null并且cat foo > /dev/zero是相同的,但cat /dev/nullcat /dev/zero是不一样的,对吗?
tkbx 2013年

@tkbx是的,正确。如果程序要从中读取,则/dev/null立即返回EOF/dev/zero返回无限0字节。
jofel

Answers:


53

/dev/zero是一个特殊文件(在这种情况下是伪设备),它提供了无穷无尽的空字符流(十六进制为0x00)?这就是为什么您cat不输出任何内容的原因(而是尝试通过od(八进制转储)运行它)。

“无限大小的空白文件”并非100%正确:它不是常规文件,而是特殊文件(更像是“流”或生成器)。您可以根据需要从中读取尽可能多的内容,例如使用dd(如dd if=/dev/zero of=yourfile count=1024 bs=1024)。

它不是真正的空白文件,也不用于创建空白文件:它用于创建仅填充零的文件或内存页。您也可以对其进行写操作,使其像污水坑一样工作(不过,它更受欢迎的兄弟/dev/null通常用于此目的)。


但是,为什么有人要填充空白呢?
tkbx

5
例如,擦除以前的内容。或在传输时。
Konerak 2013年

4
我没有读过srm手册或资料来源,但是大多数“安全橡皮擦”都喜欢写(伪)随机数据,而不是对驱动器清零,因为一次清零的过程还不够安全(某些三字母机构仍然可以扣除调零后的硬盘的原始内容,因为单个位不是100%真正为1或0,而只是“大多数为1”或“大多数为0”。 “或‘所有的路权’,但通常只是给对方摆就够了。
Konerak

11
@tkbx尝试dd分区时,您可能希望将所有空白空间填充为0,而不是随机填充,以便稍后获得较小的压缩文件。
neurino

1
@Konerak我对此相当怀疑。我听说过它遍地开花,而且我从未见过任何远程新硬盘驱动器(至少在过去十年中制造)都可以使用的证据。
罗布
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.