To mi nedává smysl.
wibble > /dev/null 2>&1
Myslím, že by to dávalo větší smysl, kdyby to bylo něco takového:
wibble 2>&1 > /dev/null
Jinými slovy
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Jaká je myšlenka za pořadím přesměrování příkazu xxx > /dev/null 2>1 ?
Přijatá odpověď:
Přesměrování jsou zpracovávána zleva doprava. Pokud ano
2>&1 1> /dev/null
První přesměrování vytvoří stderr přejděte na stream, který stdout ukazuje na v té době (což je v podstatě vaše tty). Nedělá stderr alias stdout .
Poté stdout je přesměrován na bit bucket. stdout přesměrování neovlivňuje předchozí stderr přesměrovat. stderr stále odkazuje na vaše tty.
Takže:
ls file_that_doesnt_exist 2>&1 1> /dev/null
vytiskne na váš terminál pouze chybovou zprávu.
bash stránka dokumentace přesměrování to výslovně uvádí:
Všimněte si, že pořadí přesměrování je důležité. Například příkaz
ls > dirlist 2>&1
směruje standardní výstup i standardní chybu do souboru dirlist, zatímco příkaz
ls 2>&1 > dirlist
přesměruje pouze standardní výstup do souboru dirlist, protože standardní chyba byla duplikována ze standardního výstupu předtím, než byl standardní výstup přesměrován na dirlist .