Das ergibt für mich keinen Sinn.
wibble > /dev/null 2>&1
Ich denke, es wäre sinnvoller, wenn es so etwas wäre:
wibble 2>&1 > /dev/null
Mit anderen Worten
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Welche Überlegungen stecken hinter der Reihenfolge der Befehlsumleitung xxx > /dev/null 2>1
?
io-redirection
Wer bin ich
quelle
quelle
2>&1
irgendwie „eint“ oder „Verbindungen zusammen“ oder „verheiratet“ , die beiden FDs, so dass jede [nachfolgende] Wechsel zu einem von ihnen eine Änderung des anderen wird. Dies ist nicht der Fall. “Antworten:
Die Weiterleitungen werden von links nach rechts verarbeitet. Wenn Sie tun
Die erste Umleitung verweist
stderr
auf den Stream,stdout
der zu diesem Zeitpunkt darauf verweist (was im Wesentlichen Ihre Tty ist). Es macht keinenstderr
Alias ausstdout
.Dann
stdout
wird zum Bit-Bucket umgeleitet. Diestdout
Umleitung wirkt sich nicht auf die vorherigestderr
Umleitung aus.stderr
bezieht sich immer noch auf dein tty.So:
druckt nur die Fehlermeldung auf Ihrem Terminal.
Die
bash
Weiterleitungsdokumentationsseite erwähnt dies explizit:quelle
&>/dev/null
ist, ist semantisch äquivalent zu/dev/null 2>&1
&>
und>&
(wenn verwendet nicht im Kontext2>&1
oder>&2
, etc.) sind bash-isms und sind nicht Standard . Sie sollten nicht in Shell-Skripten verwendet werden, die portierbar sein sollen.