Unterschied zwischen / dev / null und / dev / zero

27

Beim Versuch, zu /dev/nullund umzuleiten, /dev/zerowird die Ausgabe verworfen. Es scheint beides zu sein /dev/nullund /dev/zeroalle Eingaben zu akzeptieren und zu verwerfen. Was ist der Unterschied zwischen /dev/nullund /dev/zero?

Pandya
quelle
6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* rennt weg *
joeytwiddle

Antworten:

51

Ja, beide akzeptieren und verwerfen alle Eingaben, aber ihre Ausgabe ist nicht dieselbe:

  • /dev/nullerzeugt keine Ausgabe .
  • /dev/zeroerzeugt einen kontinuierlichen Strom von NULL (Nullwert) Bytes .

Sie können den Unterschied erkennen, indem Sie cat /dev/nullund ausführen cat /dev/zero.

  • Versuchen cat /dev/null > fileSie es und Sie werden eine leere finden file.

  • Versuchen Sie es jetzt cat /dev/zero > file, während die Größe der Datei ( watch -n 1 du -h file) kontinuierlich zunimmt. Dies liegt daran, dass das Lesen aus /dev/zeroeinem endlosen Strom von \0(Null-) Zeichen resultiert.

Verwenden Sie dddiese Option, um den Unterschied besser zu veranschaulichen:

$ 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 wird verwendet, um Dummy-Dateien zu erstellen oder auszutauschen.

Besuchen Sie auch:

Pandya
quelle
Siehe auch thecodelesscode.com/case/6
kojiro
2
Erwähnenswert: mmapping /dev/zerowith MAP_PRIVATEist der "portable" Weg, um eine anonyme Speicherzuordnung zu erhalten (sofern keine Erweiterungen vorhanden sind MAP_ANON).
Nneonneo
6
Vielleicht ist es für den Gelegenheitsleser nicht offensichtlich, wie /dev/null keine Ausgabe erzeugt wird: Er signalisiert EOF sofort.
Peter - Reinstate Monica
Gibt es ein Gerät, das alle gibt?
Aaron Franke