Was ist /dev /null und wie man es benutzt?

Was ist /dev /null und wie man es benutzt?
Linux ist ein interessantes Betriebssystem, das einige virtuelle Geräte für zahlreiche Zwecke beherbergt. In Bezug auf Programme, die im System ausgeführt werden, tun diese virtuellen Geräte so, als wären sie echte Dateien. Tools können Daten aus diesen Quellen anfordern und füttern. 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, anstatt zu lesen, wird es jedoch zum Schreiben verwendet. Was auch immer Sie schreiben, an /dev /null wird verworfen, in die Leere vergessen. Es ist als Null -Gerät in einem Unix -System bekannt.

Warum sollten Sie etwas in die Leere wegwerfen wollen?? Schauen wir uns an, was /dev /null und seine Verwendung ist.

Voraussetzungen

Bevor wir tief in die Verwendung von /dev /null eintauchen, müssen wir ein klares Verständnis für das haben Stdout Und Stderr Datenstrom. Schauen Sie sich diese eingehende Anleitung an Stdin, Stderr, Und Stdout.

Lassen Sie uns eine schnelle Aktualisierung machen. Immer wenn ein Befehlszeilendienstprogramm ausgeführt wird, generiert es zwei Ausgänge. Die Ausgabe geht an Stdout und der Fehler (falls generiert) geht an Stderr. Standardmäßig sind beide Datenströme dem Terminal zugeordnet.

Zum Beispiel wird der folgende Befehl die Zeichenfolge innerhalb der doppelten Anführungszeichen ausdrucken. Hier wird die Ausgabe in gespeichert Stdout.

$ echo "Hallo Welt"

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

$ echo $?

Da der vorherige Befehl erfolgreich lief, beträgt der Exit -Status 0. Andernfalls ist der Exit -Status unterschiedlich. 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 zugeordnet sind. Beide Stdout (Dateideskriptor = 1) und Stderr (Dateideskriptor = 2) einen bestimmten Dateideskriptor haben. Mit dem Dateideskriptor (1 und 2 in dieser Situation) können wir die umleiten Stdout Und Stderr zu anderen Dateien.

Für den Starter wird das folgende Beispiel das umleiten Stdout des Echo -Befehls zu einer Textdatei. Hier haben wir den Dateideskriptor nicht angegeben. Wenn nicht angegeben, wird Bash verwendet Stdout standardmäßig.

$ echo "Hello World"> Protokoll.txt

Der folgende Befehl wird die umleiten Stderr zu einer Textdatei.

$ asdfadsa 2> Fehler.txt

Verwenden von /dev /null

Ausgabe von Ausgang zu /dev /null umleiten

Jetzt sind wir bereit zu lernen, wie man /dev /null verwendet. Schauen wir uns zunächst an, wie Sie die normale Ausgabe und einen normalen Fehler filtern. Im folgenden Befehl wird Grep versucht, nach einer Zeichenfolge (Hallo, in diesem Fall) im Verzeichnis "/sys" zu suchen.

$ grep -r Hallo /sys /sys /

Es wird jedoch viel Fehler generiert. In einem solchen Fall führt dies zu Fehlern „Erlaubnis abgelehnt“. Mit der Umleitung können wir nun 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, hat nicht die Zeichenfolge "Hallo".

Im folgenden Beispiel werden wir Google pingen.

$ ping Google.com

Wir möchten 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 in /dev /null abgeladen, so dass nur die Fehler bleiben.

Alle Ausgaben zu /dev /null umleiten

In bestimmten Situationen ist die Ausgabe möglicherweise überhaupt nicht nützlich. Mit der Umleitung können wir den gesamten Ausgang in die Leere einleiten.

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

Lassen Sie uns diesen Befehl ein wenig brechen. Erstens haben wir alle abgeladen Stdout to /dev /null. Dann sagen wir im zweiten Teil Bash, dass er 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 läuft in Ordnung. Es ist ein allgemeineres Format des vorherigen Befehls. Beide Stdout Und Stderr wird nach /dev /null umgeleitet.

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

Andere Beispiele

Dies ist interessant. Erinnere dich an das DD -Tool? Es ist ein leistungsstarkes Tool zum Konvertieren und Kopieren von Dateien. Erfahren Sie mehr über DD. Mit DD können wir die sequentielle Lesegeschwindigkeit Ihrer Festplatte testen. Natürlich ist es keine genaue Messung. Für einen kurzen Test ist es jedoch ziemlich nützlich.

$ dd if = von =/dev/null Status = Fortschritt BS = 1M IFLAG = Direct

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

In ähnlicher Weise können Sie auch die Download -Geschwindigkeit Ihrer Internetverbindung testen.

$ wget -o /dev /null

Abschließende Gedanken

Hoffentlich haben Sie ein klares Verständnis dafür, was diese /dev /null -Datei ist. Es ist ein speziell. Das wahre Potenzial dieses interessanten Features ist in interessanten Bash -Skripten.

Interessieren Sie sich für Bash Scripting?? Schauen Sie sich die Anfängerhandbuch zum Bash -Scripting an.

Genießen!