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

What Is Dev Null How Use It

Linux ist ein interessantes Betriebssystem, das einige virtuelle Geräte für zahlreiche Zwecke hostet. Für die im System laufenden Programme 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, sondern zum Schreiben verwendet. Was auch immer Sie in /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. Schau dir das an ausführliche Anleitung zu stdin , stderr , und stdout .



Lassen Sie uns kurz auffrischen. Jedes Mal, wenn ein Befehlszeilendienstprogramm 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 .

$rauswerfenHallo Welt



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

$rauswerfen $?

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

$ adfadsf
$rauswerfen $?

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.

$rauswerfenHallo Welt>log.txt

Der folgende Befehl leitet die stderr in eine Textdatei.

$asdfadsa2>error.txt

/dev/null . verwenden

Umleitung der Ausgabe nach /dev/null

Jetzt sind wir bereit zu lernen, wie man /dev/null verwendet. Sehen wir uns zunächst an, wie Sie normale Ausgaben und Fehler filtern. Im folgenden Befehl versucht grep, im Verzeichnis /sys nach einem String (in diesem Fall hallo) zu suchen.

$Griff -RHallo/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 Fehlern mit verweigerter Berechtigung. Jetzt können wir mit der Umleitung eine klarere Ausgabe erhalten.

$Griff -RHallo/sys/ 2> /Entwickler/Null

Die Ausgabe sieht viel besser aus, oder? 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 an.

$KlingelnGoogle-com

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

$KlingelnGoogle-com1> /Entwickler/Null

Hier der Inhalt von stdout werden nach /dev/null abgelegt, wobei nur die Fehler übrig bleiben.

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.

$Griff -RHallo/sys/ > /Entwickler/Null2> &1

Lassen Sie uns diesen Befehl ein wenig unterbrechen. Zuerst werfen wir alle 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.

$rauswerfen $?

Der Wert ist 2, da der Befehl viele Fehler generiert 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 nach /dev/null umgeleitet.

$Griff -RHallo/sys/ &> /Entwickler/Null

Andere Beispiele

Dies ist ein interessanter. Erinnern Sie sich an das dd-Tool? Es ist ein leistungsstarkes Werkzeug zum Konvertieren und Kopieren von Dateien. Erfahren Sie mehr über dt. 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 wenn=<große_datei> von=/Entwickler/NullStatus=Fortschrittbs=1Miflag=direkt

Hier habe ich die Ubuntu 18.04.4 ISO als große Datei verwendet.

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

$wget -ODER /Entwickler/Null<big_file_link>

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? Kasse der Anfängerleitfaden zum Bash-Scripting .

Genießen!