Dokumentenverwaltung

Was ist /dev/null und wie wird es verwendet?

Was ist /dev/null und wie wird es verwendet?
Linux ist ein interessantes Betriebssystem, das einige virtuelle Geräte für zahlreiche Zwecke hostet. Soweit im System laufende Programme betroffen sind, verhalten sich diese virtuellen Geräte wie echte Dateien. Tools können Daten aus diesen Quellen anfordern und einspeisen. Die Daten werden vom Betriebssystem generiert, anstatt sie von einer Festplatte zu lesen.

Ein solches Beispiel ist /dev/null. Es ist eine spezielle Datei, die in jedem einzelnen Linux-System vorhanden ist. Im Gegensatz zu den meisten anderen virtuellen Dateien wird es jedoch nicht zum Lesen verwendet, sondern zum Schreiben. Was auch immer Sie an /dev/null schreiben, wird verworfen und ins Leere vergessen. Es ist als Nullgerät in einem UNIX-System bekannt.

Warum willst du etwas ins Leere werfen? Schauen wir uns an, was /dev/null ist und wie es verwendet wird.

Voraussetzungen

Bevor wir tief in die Verwendung von /dev/null eintauchen, müssen wir uns klar über die stdout und stderr Datenstrom. Sehen Sie sich diesen ausführlichen Leitfaden an stdin, stderr, und stdout.

Lass uns kurz auffrischen. Jedes Mal, wenn ein Befehlszeilen-Dienstprogramm ausgeführt wird, generiert es zwei Ausgaben. Die Ausgabe geht an stdout und der Fehler (falls generiert) geht an stderr. Standardmäßig sind diese beiden Datenströme dem Terminal zugeordnet.

Der folgende Befehl gibt beispielsweise die Zeichenfolge innerhalb des doppelten Anführungszeichens aus. Hier wird die Ausgabe gespeichert in stdout.

$ echo „Hallo Welt“

Der nächste Befehl zeigt uns den Exit-Status des zuvor ausgeführten Befehls.

$ echo $?

Da der vorherige Befehl erfolgreich ausgeführt wurde, ist der Exit-Status 0. Andernfalls ist der Austrittsstatus ein anderer. Was passiert, wenn Sie versuchen, einen ungültigen Befehl auszuführen??

$ adfadsf
$ echo $?

Jetzt müssen wir den Dateideskriptor kennen. Im UNIX-Ökosystem sind dies ganzzahlige Werte, die einer Datei zugewiesen sind. Beide stdout (Dateideskriptor = 1) und stderr (Dateideskriptor = 2) haben einen bestimmten Dateideskriptor. Mit dem Dateideskriptor (1 und 2 in dieser Situation) können wir die stdout und stderr zu anderen Dateien.

Für den Anfang leitet das folgende Beispiel die stdout des echo-Befehls in eine Textdatei. Hier haben wir den Dateideskriptor nicht angegeben. Wenn nicht angegeben, verwendet bash stdout standardmäßig.

$ echo „Hallo Welt“ > log.TXT

Der folgende Befehl leitet die stderr in eine Textdatei.

$ asdfadsa 2> Fehler.TXT

/dev/null . verwenden

Umleitung der Ausgabe nach /dev/null

Jetzt sind wir bereit zu lernen, wie man /dev/null . verwendet. Schauen wir uns zuerst an, wie man normale Ausgabe und Fehler filtert. Im folgenden Befehl versucht grep, im Verzeichnis „/sys“ nach einer Zeichenfolge (in diesem Fall hallo) zu suchen.

$ grep -r hallo /sys/

Es werden jedoch viele Fehler generiert, da grep ohne Root-Rechte nicht auf eine Reihe von Dateien zugreifen kann. In einem solchen Fall führt dies zu "Berechtigung verweigert"-Fehlern. Jetzt können wir mit der Umleitung eine klarere Ausgabe erhalten.

$ grep -r hallo /sys/ 2> /dev/null

Die Ausgabe sieht viel besser aus, richtig? Nichts! In diesem Fall hat grep keinen Zugriff auf viele Dateien und diejenigen, auf die zugegriffen werden kann, haben nicht die Zeichenfolge "hello".

Im folgenden Beispiel pingen wir Google.

$ ping google.com

Wir wollen jedoch nicht all diese erfolgreichen Ping-Ergebnisse sehen. Stattdessen möchten wir uns nur auf die Fehler konzentrieren, wenn Ping Google nicht erreichen konnte. wie machen wir das?

$ ping google.com 1> /dev/null

Hier der Inhalt von stdout werden nach /dev/null gedumpt, es bleiben nur die Fehler.

Alle Ausgaben nach /dev/null/ umleiten

In bestimmten Situationen ist die Ausgabe möglicherweise überhaupt nicht nützlich. Mit der Umleitung können wir die gesamte Ausgabe ins Leere werfen.

$ grep -r hallo /sys/ > /dev/null 2>&1

Lass uns diesen Befehl ein wenig brechen. Zuerst werfen wir alles weg stdout nach /dev/null. Dann, im zweiten Teil, sagen wir bash, dass sie senden soll stderr zu stdout. In diesem Beispiel gibt es nichts auszugeben. Wenn Sie jedoch verwirrt sind, können Sie jederzeit überprüfen, ob der Befehl erfolgreich ausgeführt wurde.

$ echo $?

Der Wert ist 2, weil der Befehl viele Fehler erzeugt hat.

Wenn Sie dazu neigen, den Dateideskriptor von . zu vergessen stdout und stderr, der folgende Befehl reicht aus. Es ist ein allgemeineres Format des vorherigen Befehls. Beide stdout und stderr wird umgeleitet nach /dev/null.

$ grep -r hallo /sys/ &> /dev/null

Andere Beispiele

Das ist interessant. Denken Sie an das dd-Tool? Es ist ein leistungsstarkes Werkzeug zum Konvertieren und Kopieren von Dateien. Erfahre mehr über dd. Mit dd können wir die sequentielle Lesegeschwindigkeit Ihrer Festplatte testen. Natürlich ist es keine genaue Messung. Für einen schnellen Test ist es jedoch ziemlich nützlich.

$ dd if= of=/dev/null status=fortschritt bs=1M iflag=direct

Hier habe ich das Ubuntu 18 verwendet.04.4 ISO als große Datei.

Ebenso können Sie die Download-Geschwindigkeit Ihrer Internetverbindung testen.

$ wget -O /dev/null

Abschließende Gedanken

Hoffentlich haben Sie ein klares Verständnis davon, was diese /dev/null-Datei ist. Es ist ein spezielles Gerät, das, wenn es darauf geschrieben wird, verwirft und beim Lesen null liest. Das wahre Potenzial dieses interessanten Features liegt in interessanten Bash-Skripten.

Interessieren Sie sich für Bash-Scripting?? Sehen Sie sich den Anfängerleitfaden zum Bash-Scripting an.

Genießen!

So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...
Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...