To nie ma dla mnie sensu.
wibble > /dev/null 2>&1
Myślę, że miałoby to większy sens, gdyby było coś takiego:
wibble 2>&1 > /dev/null
Innymi słowy
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Jaka jest kolejność przekierowywania poleceń xxx > /dev/null 2>1
?
io-redirection
kim jestem
źródło
źródło
2>&1
jakiś sposób „łączy” lub „łączy” lub „łączy” dwie FD, tak że każda [kolejna] zmiana jednej z nich staje się zmianą drugiej. Nie o to chodzi."Odpowiedzi:
Przekierowania są przetwarzane od lewej do prawej. Jeśli zrobisz
Pierwsze przekierowanie
stderr
wskazuje na strumień, którystdout
wskazuje w tym czasie (który jest zasadniczo twoim tty). Nie tworzystderr
aliasustdout
.Następnie
stdout
zostaje przekierowany do segmentu bitów.stdout
Przekierowanie nie wpływa poprzedniąstderr
przekierowanie.stderr
nadal odnosi się do twojego tty.Więc:
wydrukuje tylko komunikat o błędzie na twoim terminalu.
Strona
bash
dokumentacji przekierowań wyraźnie wspomina o tym:źródło
&>/dev/null
semantycznym/dev/null 2>&1
&>
i>&
(gdy nie są używane w kontekście2>&1
lub>&2
, etc.) atakujących-izmy i nie są standardowe . Nie należy ich używać w skryptach powłoki, które mają być przenośne.