GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist „/dev/null 2&1“ unter Linux

/dev/null ist eine Pseudo-Gerätedatei in Linux, die verwendet wird, um Ausgaben von Programmen zu verwerfen, insbesondere von solchen, die auf der Befehlszeile ausgeführt werden. Diese Datei verhält sich wie eine Senke, also eine Zieldatei, die geschrieben werden kann, aber sobald irgendein Datenstrom in diese Datei geschrieben wird, wird sie sofort gelöscht.

Dies ist nützlich, um die Ausgabe loszuwerden, die vom Benutzer nicht benötigt wird. Programme und Prozesse können Ausgabeprotokolle von enormer Länge erzeugen, und es wird manchmal unordentlich, das Protokoll zu analysieren.

Beispielsweise werden manchmal zwei Fehler von einem Programm ausgelöst, aber die Fehlerprotokolle gehen irgendwo zwischen Hunderten von Informationsmeldungsprotokollen verloren. In einem solchen Fall können wir die Protokolle der Informationsmeldungen nach /dev/null ausgeben .

Im obigen Beispiel heißt die Fehlerausgabe eines Programms STDERR (Standardfehler ) unter Linux und wird durch die Ganzzahl ‘2‘ dargestellt , während die Erfolgs- und Informationsausgabe STDOUT heißt (Standardausgabe ) und wird durch die Ganzzahl ‘1‘ dargestellt .

Nun, Sie haben vielleicht schon sehr oft die folgende Befehlszeilenanweisung gesehen, die beide STDERR verwirft und STDOUT nach /dev/null .

$ command_name > /dev/null 2>&1

Versuchen wir zu verstehen, was das bedeutet.

Der Operator '>' wird als Umleitungsoperator bezeichnet. Es leitet die Ausgabe in die dahinter angegebene Datei um, in diesem Fall /dev/null , anstatt es auf dem Terminal auszudrucken.

Bedeutet das ALLE die Ausgabe des Befehls wird nach /dev/null umgeleitet mit dem '>' Operator? Nein. Bei Verwendung wie oben gezeigt leitet der Operator nur das STDOUT um .

Daher haben wir den letzten Teil des Befehls. '2>&1' bedeutet:STDERR umleiten (2) zu STDOUT (1) . Als Grund müssen wir ‘&1‘ angeben und nicht einfach ‘1‘ schreibt man einfach ‘1‘ leitet die Ausgabe in eine Textdatei mit dem Namen ‘1‘ um . Mit dem kaufmännischen Und (&) das System erkennt, dass die 1 ist kein Dateiname, sondern der Dateideskriptor STDOUT .

Daher leiten wir STDOUT um nach /dev/null und STDERR zu STDOUT und so wird die komplette Ausgabe des Programms/der Programme in /dev/null verworfen .

Beispiel:Ausführen des mv-Befehls mit und ohne ‘>/dev/null 2>&1’ .

Ohne Weiterleitung:

$ mv tmp.txt test/tmp2.txt /tmp

Mit Umleitung von STDOUT:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null

Mit Umleitung von STDOUT und STDERR:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null 2>&1
Schlussfolgerung

In diesem Artikel haben wir versucht zu verstehen, was die häufig verwendete Befehlsphrase in Linux bedeutet:'> /dev/null 2>&1' . Wenn Sie mehr über „/dev/null erfahren möchten ‘ mehr in die Tiefe, können Sie dies hier tun.

Wenn Sie Fragen oder Kommentare haben, teilen Sie uns dies in den Kommentaren unten mit!


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  3. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  4. Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

  5. Linux – Wie erstellt man /dev/null?

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

So leiten Sie die Ausgabe unter Linux nach /dev/null um

Was ist /dev/null unter Linux

/dev/null unter Linux

echo oder print /dev/stdin /dev/stdout /dev/stderr

Gibt es unter Linux ein Verzeichnisäquivalent zu /dev/null?