Was genau macht 2>/dev/null?

Was genau macht 2>/dev/null?
Unabhängig davon. Obwohl dieser Befehl technisch komplex aussieht, ist sein Zweck sehr einfach. Es bezieht sich auf ein Null -Gerät, mit dem die Ausgaben verschiedener Befehle unterdrückt werden. Dieser Artikel wird jeden Teil des Befehls 2>/dev/null aufschlüsseln, seinen Zweck erläutern und Beispiele dafür sehen, wie er verwendet wird.

NULL -Gerät - '/dev/null' '

Alle Linux-basierten Systeme verfügen über eine Funktion namens Virtual Devices. Diese virtuellen Geräte interagieren wie tatsächliche Dateien im Betriebssystem. Die Arbeit solcher virtuellen Geräte ähnelt realen Geräten. Sie werden verwendet, um Daten zu schreiben und zu lesen. Der Hauptunterschied zwischen beiden besteht darin, dass die Daten für die virtuellen Geräte vom Betriebssystem geliefert werden.

/dev/null ist ein Null-Gerät-ein spezieller Typ des virtuellen Geräts. Es ist in jedem Linux -System vorhanden, und der Zweck dieses Geräts besteht darin, alles zu verwerfen und das Ende der Datei zu lesen (EOF). Die meisten virtuellen Geräte werden zum Lesen von Daten verwendet. /dev /null ist jedoch einzigartig, da sie zur Unterdrückung aller darauf geschriebenen Daten verwendet werden. In einfachen Worten fungiert es als Schwarzes Loch für alle Daten, die in Linux -Betriebssystemen geschrieben werden.

Schauen wir uns nun die verbleibenden Teile des Befehls 2> /dev /null an

Dateideskriptor - '2'

Jede Befehlsausführung unter Linux generiert drei zugeordnete Dateien: Standardeingangs-, Standardausgabe- und Standardfehlerdateien. Das Linux-Betriebssystem bezieht sich auf jede dieser Dateien mit einer einzigartigen nicht negativen Ganzzahl.

  • '0' für die Standardeingabe
  • '1' für die Standardausgabe
  • '2' für Standardfehler

Die technischen Begriffe für Standardeingangs-, Standardausgabe- und Standardfehlerströme sind STDIN, STDOut bzw. STDERR.

Wir wissen, dass sich die Nummer '2' im Befehl '2>/dev/null' auf den Stream Standard ERREL (STDERR) bezieht.

Dateiumleitung Operator - '>'

Das Symbol '>' wird als Dateiumleitung als Operator bezeichnet. Sein Ziel ist es, zu lenken, was links auf die Befehle auf der rechten Seite ist. In einfacheren Worten wird jede Datenzeichenfolge nach links auf die rechte Seite des Bedieners gerichtet.

Bisher haben wir den Zweck hinter jeder Komponente des Befehls 2>/dev/null verstanden. Es sendet den Fehlerstream an /dev /null, der ihn abfällt. Mit anderen Worten wird dieser Befehl verwendet, um Fehlerausgänge zu verwerfen und zu unterdrücken. Wenn Sie jedoch ein erfahrener Linux -Veteran sind, können Sie sich den Inhalt der /dev /null -Datei ansehen, indem Sie den folgenden Befehl im Terminal ausführen:

$ ls -l /dev /null

Dieser Befehl wird normalerweise in Szenarien verwendet. In Zukunft werden wir uns mit Beispielen für die Verwendung eines Ubuntu -Systems ansehen.

Verwenden Sie 2>/dev/null

Da wir wissen, dass der Befehl 2>/dev/null verwendet wird, um Fehler zu verwerfen, wird er immer in Verbindung mit anderen Befehlen verwendet. Wir werden in den folgenden Beispielen einen ähnlichen Ansatz sehen. Sie können das Terminal entweder über das Anwendungsmenü oder die Tastaturverknüpfung Strg + Alt + T öffnen, indem Sie darauf zugreifen.

Im ersten Beispiel werden wir eine Suche in / sys / verzeichnis nach einer zufälligen Zeichenfolge durchführen (HelloWorld in diesem Fall). Der Befehl zur Suche ist Grep und sein Argument wird die Suchzeichenfolge sein. Geben Sie den folgenden Befehl ein, um nach Ihrer Zeichenfolge zu suchen.

$ grep -r HelloWorld /sys /

Dieser Suchbefehl ist verpflichtet, zahlreiche Fehler anzuzeigen, da er ohne Root -Zugriff verwendet wird. Wir senden seinen Fehlerstrom an/dev/null, indem wir den Befehl 2>/dev/null verwenden, um diese Fehler zu verwerfen.

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

Wir können sehen, dass die Ausgabe des Befehls viel ordentlicher und einfacher ist als der letzte. Der Grund dafür ist, dass die Fehler durch Verwendung von 2> /dev /null verworfen werden, und da der Befehl Grep keine Datei finden konnte, die unserem String 'HelloWorld' entspricht, zeigt er keine Ausgabe an.

Um die Verwendung von /dev /null besser zu verstehen, werden wir uns mit dem folgenden Beispiel für die Ping auf einer Website ansehen (Google.com in unserem Fall). Sie können Google pingen.Com durch Ausführung des folgenden Befehls:

$ ping Google.com

Wenn wir alle fehlgeschlagenen Pings ausschließen möchten, können wir den Befehl 2>/dev/null verwenden:

$ ping Google.com 2> /dev /null

In diesem Fall der Standardfehlerstrom (der die fehlgeschlagenen Pings an Google zeigt.com) wird an das virtuelle Gerät /dev /null gesendet, das sie abfällt.

Wenn wir jedoch nur die fehlgeschlagenen Pings sehen möchten, können wir den folgenden Befehl ausführen:

$ ping Google.com 1> /dev /null

Hier senden wir den Standardausgangsstream (STDOut) an das /dev /null -Gerät, das ihn abfällt. Folglich haben wir nur die Pings, die das Google nicht erreichten konnten.com Server. In unserem Fall gab es jedoch keine fehlgeschlagenen Pings. Wir können auch Stdout und Stderr an verschiedene Orte lenken. Dies ist hilfreich, wenn wir die Ausgabe verwerfen und Fehler in einem Protokoll oder umgekehrt speichern möchten. Sie können den folgenden Befehl ausführen, um die fehlgeschlagenen Pings in einem Fehlerprotokoll zu speichern, während Sie die Standardausgabe des Ping -Befehls verwerfen:

$ ping Google.com 1> /dev /null 2> Fehler.Protokoll

In Gelegenheiten möchten Sie möglicherweise die gesamte Ausgabe eines Befehls unterdrücken (einschließlich Standardausgabe und Standardfehler). Wir können dies erreichen, indem wir das Gerät /dev /null auf etwas anderes verwenden. Sie können den folgenden Befehl eingeben, um alle Ausgaben zu unterdrücken:

$ ping Google.com>/dev/null 2> & 1

Beachten Sie, dass die Reihenfolge der Befehle hier sehr wichtig ist. Nach Ausführung des Ping -Befehls fordert '>/dev/null' das System an, die Ausgabe zu unterdrücken, und '2> & 1' lenkt den Standardfehlerstrom auf die Standardausgabe. Auf diese Weise wird die gesamte Ausgabe des Befehls verworfen.

Abschluss

Wir haben den Befehl 2>/dev/null und einfache Beispiele in diesem Artikel zerlegt, und hoffentlich verstehen Sie jetzt, was jedes Stück davon tut. Dies ist jedoch nur die Spitze des Eisbergs; NULL -Geräte werden auf vielfältige Weise in der Bash -Programmierung verwendet. Einige der erweiterteren Verwendungszwecke umfassen das Überprüfen der Datei -Existenz, die Automatisierung von Paketinstallationen und das Vermeiden von Skripten, in unerwünschten Ausnahmen zu rennen.