Frage Was bedeutet 2> / dev / null?


Ich möchte eine kurze Erklärung der folgenden Befehlszeile:

grep -i 'abc' content 2>/dev/null 

149
2017-09-26 08:21


Ursprung




Antworten:


Der Operator> leitet die Ausgabe normalerweise in eine Datei um, aber möglicherweise auch auf ein Gerät. Sie können auch >> zum Anhängen verwenden.

Wenn Sie keine Nummer angeben, wird der Standard-Ausgabestream angenommen, Sie können jedoch auch Fehler umleiten

> file leitet stdout in Datei um
1> file leitet stdout in Datei um
2> file leitet stderr in Datei um
&> file leitet stdout und stderr in Datei um

/dev/null Ist das Null-Gerät, nimmt es jede gewünschte Eingabe und wirft sie weg. Es kann verwendet werden, um jegliche Ausgabe zu unterdrücken.


217
2017-09-26 08:38



Gibt es einen Unterschied zwischen > /dev/null 2>&1 und &> /dev/null - Alexander Mills
In der Praxis denke ich heute nicht 2>&1 ist eine ältere Syntax so &> hätte vor Jahren nicht gearbeitet, aber beide sind gleichwertig. - Warren Hill


Kurz gesagt, es leitet stderr (fd 2) zum schwarzen Loch um (verwirft die Ausgabe des Befehls).

Einige häufigere Anwendungsfälle für die Umleitung:

command > /dev/null 2>&1 &

Lauf command Im Hintergrund verwerfen Sie stdout und stderr

command >> /path/to/log 2>&1 &

Lauf command und fügen Sie stdout und stderr an eine Protokolldatei an.


16
2017-09-26 08:32



Gibt es einen guten Grund zu verwenden? > /dev/null 2>&1 Anstatt von &> /dev/null? - Craig McQueen
@CraigMcQueen &> ist neu in Bash 4, der erste ist nur der traditionelle Weg, ich bin nur so daran gewöhnt (leicht zu merken). - Terry Wang


/dev/null wird in Linux / Unix als schwarzes Loch behandelt, also kannst du alles hineinlegen, aber du wirst es nicht zurückbekommen können /dev/null.

Des Weiteren, 2> bedeutet, dass Sie umleiten (d. h. >) der stderr (d.h. 2) in das Schwarze Loch (d. h. /dev/null)

Dein Befehl ist:

grep -i 'abc' content 2>/dev/null 

Versuchen Sie nicht, mit einem weiteren Schrägstrich zu enden - 2>/dev/null/ (Es ist kein Verzeichnis).


5
2018-06-11 10:57