Это не имеет смысла для меня.
wibble > /dev/null 2>&1
Я думаю, что было бы больше смысла, если бы это было что-то вроде этого:
wibble 2>&1 > /dev/null
Другими словами
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Что стоит за порядком перенаправления команд xxx > /dev/null 2>1
?
io-redirection
кто я
источник
источник
2>&1
каким- то образом «объединяет» или «связывает вместе», или «женится» на двух FD, так что любое [последующее] изменение одного из них становится изменением другого. Это не тот случай. »Ответы:
Перенаправления обрабатываются слева направо. Если вы делаете
Первое перенаправление
stderr
указывает на поток, которыйstdout
указывает на это время (что по сути является вашим tty). Это не делаетstderr
псевдонимstdout
.Затем
stdout
перенаправляется на ведро бит.stdout
Редирект не влияет на предыдущийstderr
редирект.stderr
все еще относится к вашему tty.Так:
напечатает только сообщение об ошибке на вашем терминале.
На
bash
странице документации по перенаправлению прямо упоминается:источник
&>/dev/null
семантически эквивалентна/dev/null 2>&1
&>
и>&
(когда они не используются в контексте2>&1
или>&2
и т. Д.) Представляют собой bash-isms и не являются стандартными . Они не должны использоваться в сценариях оболочки, которые вы хотите переносить.