/dev/null ist eines der am häufigsten verwendeten speziellen virtuellen Geräte unter Linux. In diesem Leitfaden werden wir darüber diskutieren und die verschiedenen Verwendungsmöglichkeiten vorstellen.
Was ist /Dev/Null unter Linux?
Linux behandelt alles als Datei, sei es ein Treiber oder ein Gerät. Das Verzeichnis /dev wird zum Speichern aller physischen und virtuellen Geräte verwendet. Wenn Sie mit Festplattenpartitionierung gearbeitet haben, ist Ihnen möglicherweise aufgefallen, dass das Verzeichnis /dev verwendet wird. Zum Beispiel: /dev/sda, /dev/sdb1 usw.
Jedes der speziellen virtuellen Geräte verfügt über einzigartige Eigenschaften. Wenn Sie beispielsweise aus /dev/zero lesen, werden die ASCII-NUL-Zeichen zurückgegeben. Zu den beliebten virtuellen Geräten gehören:
- /dev/null
- /dev/zero
- /dev/random
- /dev/urandom
/dev/null ist ein Nullgerät, das alle darauf geschriebenen Daten verwirft. Es meldet jedoch zurück, dass der Schreibvorgang erfolgreich war. In der UNIX-Terminologie wird dieses Nullgerät auch als Bit-Bucket oder Schwarzes Loch bezeichnet.
Verwendung von /Dev/Null unter Linux
Eigenschaften von /Dev/Null
Beim Versuch, aus /dev/null zu lesen, wird ein EOF-Zeichen zurückgegeben:
$ cat /dev/null
Trotz seiner einzigartigen Funktionen ist /dev/null eine gültige Datei. Wir können es mit dem folgenden Befehl überprüfen:
$ stat /dev/null
Grundlegende Verwendung
Alles, was nach /dev/null geschrieben wird, verschwindet für immer. Das folgende Beispiel demonstriert diese Eigenschaft:
$ echo „Hallo Welt“ > /dev/null
$ cat /dev/null
Hier leiten wir die STDOUT des Echo-Befehls nach /dev/null um. Mit dem Befehl cat lesen wir den Inhalt von /dev/null.
Da /dev/null keine Daten speichert, enthält die Ausgabe des Befehls cat nichts.
Umleiten der Befehlsausgaben nach /Dev/Null
Müssen Sie einen Befehl ausführen, ohne sich um seine Ausgabe zu kümmern? Wir können die Daten nach /dev/null umleiten, um sie sicher zu verwerfen. Um diese Technik zu implementieren, sind Vorkenntnisse der Dateideskriptoren STDIN, STDOUT und STDERR erforderlich.
Beispiel 1:
Schauen Sie sich das erste Beispiel an:
$ echo „Hallo Welt“ > /dev/null
Hier leiten wir die STDOUT des Echo-Befehls nach /dev/null um. Aus diesem Grund erfolgt keine Ausgabe auf dem Konsolenbildschirm.
Beispiel 2:
Schauen Sie sich das nächste Beispiel an:
$ asdfghjkl > /dev/null
Hier existiert der Befehl asdfghjkl nicht. Bash erzeugt also einen Fehler. Die Fehlermeldung wurde jedoch nicht nach /dev/null geschrieben. Dies liegt daran, dass die Fehlermeldung in STDERR gespeichert ist. Daher müssen wir auch die STDERR (2)-Umleitung angeben. Hier ist der aktualisierte Befehl:
$ asdfghjkl 2> /dev/null
Beispiel 3:
Was ist, wenn wir sowohl STDOUT als auch STDERR nach /dev/null umleiten möchten? Die Befehlsstruktur würde so aussehen:
$
Obwohl diese Struktur völlig gültig ist, ist sie ausführlich und überflüssig. Es gibt eine Möglichkeit, die Struktur drastisch zu verkürzen: STDERR zuerst nach STDOUT umleiten und dann STDOUT nach /dev/null umleiten.
Schauen Sie sich den aktualisierten Befehl an:
$
Hier wird STDOUT nach /dev/null umgeleitet. Dann leiten wir STDERR (2) zu STDOUT (1) um. Das „&1“ beschreibt der Shell, dass das Ziel ein Dateideskriptor und kein Dateiname ist.
Jetzt lässt sich der Befehl effizienter implementieren.
Abschluss
Wir haben etwas über /dev/null gelernt, das Null-Gerät in Linux. Wir haben die Funktionsweise auch anhand verschiedener Beispiele demonstriert. Diese Techniken werden häufig beim Shell-Scripting verwendet.
Möchten Sie mehr erfahren? Schauen Sie sich die Unterkategorie „Bash-Programmierung“ an, die zahlreiche Anleitungen zu verschiedenen Konzepten der Bash-Skripterstellung enthält.
Viel Spaß beim Rechnen!