Разница между / dev / null и / dev / zero

27

При попытке перенаправить на /dev/nullи /dev/zero, вывод его отбрасывается. Кажется, /dev/nullи /dev/zeroпринять и отказаться от всего ввода. Итак, в чем разница между /dev/nullи /dev/zero?

Pandya
источник
6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* убегает *
joeytwiddle

Ответы:

52

Да, и принимаем, и отбрасываем все входные данные, но их выходные данные не совпадают:

  • /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 используется для создания фиктивных файлов или подкачки.

Также посетите:

Pandya
источник
Также см. Thecodelesscode.com/case/6
Кодзиро
2
Стоит отметить: mmapping /dev/zerowith MAP_PRIVATE- это «портативный» способ получения анонимного отображения памяти (при отсутствии таких расширений, как MAP_ANON).
nneonneo
6
Возможно, для обычного читателя неочевидно, как именно он не /dev/null производит вывод: он сразу сигнализирует об EOF.
Питер - Восстановить Монику
Есть ли устройство, которое дает все?
Аарон Франке