Antworten:
Der Operator> leitet die Ausgabe normalerweise in eine Datei um, es kann sich jedoch auch um ein Gerät handeln. Sie können auch >> zum Anhängen verwenden.
Wenn Sie keine Zahl angeben, wird der Standardausgabestream angenommen, Sie können jedoch auch Fehler umleiten
> file
Leitet stdout zur Datei
1> file
um Leitet stdout zur Datei
2> file
um Leitet stderr zur Datei
&> file
um Leitet stdout und stderr zur Datei um
/dev/null
ist das Null-Gerät, das beliebige Eingaben annimmt und wegwirft. Hiermit kann jede Ausgabe unterdrückt werden.
2>&1
eine ältere Syntax gibt, also &>
hätte das vor Jahren nicht funktioniert, aber beide sind gleichwertig.
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 &
Führen Sie command
im Hintergrund, verwerfen stdout
undstderr
command >> /path/to/log 2>&1 &
Führen Sie command
stdout und stderr aus und hängen Sie sie an eine Protokolldatei an.
In Bash 4+ ist eine kürzere (aber weniger lesbare) Form funktionsfähig
command &>> /path/to/log
> /dev/null 2>&1
statt zu verwenden &> /dev/null
?
&>
ist neu in Bash 4, der erstere ist nur der traditionelle Weg, ich bin nur so daran gewöhnt (leicht zu merken).
&> /dev/null
möglicherweise nicht in einigen Muscheln aber> / dev / null 2> & 1 wird in allen kompatibelen Schalen POSIX arbeiten.
fn>target
, wo fn
eine dateinummer ist (0-2 normalerweise definieren einige programme mehr nummern) und target
ist normalerweise ein dateiname aber hier ist es eine andere dateinummer - mit &
dem vorangestellt ist die Syntax für "Ich möchte eine Dateinummer anstelle eines Dateinamens".
/dev/null
wird in Linux / Unix als schwarzes Loch behandelt, daher können Sie alles in dieses Feld einfügen, aber Sie können es nicht wiederherstellen /dev/null
.
Ferner 2>
bedeutet dies, dass Sie >
das Stderr (dh 2
) in das Schwarze Loch (dh /dev/null
) umleiten.
Ihr Befehl lautet:
grep -i 'abc' content 2>/dev/null
Versuchen Sie nicht, mit einem weiteren Schrägstrich wie diesem zu enden 2>/dev/null/
(es ist kein Verzeichnis).
Der Inhalt von grep -i 'abc' generiert eine Ausgabe, die auf Ihrer Konsole angezeigt wird, einschließlich etwaiger Fehler.
Durch die Angabe 2>/dev/null
werden die Fehler herausgefiltert, sodass sie nicht auf Ihrer Konsole ausgegeben werden.
Genauer gesagt: 2 steht für den Fehlerdeskriptor, in den Fehler geschrieben werden. Standardmäßig werden sie auf der Konsole ausgedruckt.
\>
Leitet in diesem Fall die Ausgabe an den angegebenen Ort um /dev/null
/dev/null
ist das Standard-Linux-Gerät, auf dem Sie Ausgaben senden, die ignoriert werden sollen.
> /dev/null 2>&1
und&> /dev/null