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
> fileLeitet stdout zur Datei
1> fileum Leitet stdout zur Datei
2> fileum Leitet stderr zur Datei
&> fileum Leitet stdout und stderr zur Datei um
/dev/nullist das Null-Gerät, das beliebige Eingaben annimmt und wegwirft. Hiermit kann jede Ausgabe unterdrückt werden.
2>&1eine ä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 commandim Hintergrund, verwerfen stdoutundstderr
command >> /path/to/log 2>&1 &
Führen Sie commandstdout 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>&1statt 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/nullmöglicherweise nicht in einigen Muscheln aber> / dev / null 2> & 1 wird in allen kompatibelen Schalen POSIX arbeiten.
fn>target, wo fneine dateinummer ist (0-2 normalerweise definieren einige programme mehr nummern) und targetist 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/nullwird 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/nullwerden 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>&1und&> /dev/null