/ dev / null和/ dev / zero之间的区别


27

尝试重定向到/dev/null和时/dev/zero,其输出将被丢弃。这似乎都/dev/null/dev/zero接受,并丢弃所有输入。那么,/dev/null和之间有什么区别/dev/zero


6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero*逃跑*
joeytwiddle

Answers:


51

是的,接受和丢弃所有输入,但是它们的输出不同:

  • /dev/null不产生任何输出
  • /dev/zero产生NULL(零值)字节的连续流

您可以通过执行cat /dev/null和来查看差异cat /dev/zero

  • 试试看cat /dev/null > file,您会发现一个空的file

  • 现在尝试cat /dev/zero > file,同时观看文件(watch -n 1 du -h file)的大小不断增加。这是因为从中读取/dev/zero会产生无穷的\0(空)字符流。

用于dd更恰当地显示差异:

$ dd if=/dev/null of=file count=10
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000276193 s, 0.0 kB/s

$ dd if=/dev/zero of=file count=10
10+0 records in
10+0 records out
5120 bytes (5.1 kB) copied, 0.00090775 s, 5.6 MB/s

/dev/zero 用于创建虚拟文件或交换。

另请访问:



2
值得注意的是:mmapping /dev/zerowith MAP_PRIVATE是获取匿名内存映射的“便携式”方法(在缺少诸如扩展名的情况下MAP_ANON)。
nneonneo's

6
对于不经意的读者来说可能不明显的是如何不 /dev/null 产生输出:它立即发出EOF信号。
彼得-恢复莫妮卡

是否有可以提供所有功能的设备?
亚伦弗兰克
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.