Vím co
program > /dev/null 2>&1
dělá. Přesměruje výstup na /dev/null
a 2>&1
znamená přesměrovat chybový výstup na stejné místo, kam je výstup odeslán.
Můj problém je, že si to musím vždycky vygooglovat, protože si to nikdy nepamatuji.
Takže zkouším &2>1
, 1>2&
, 1>&2
… zkouším každou kombinaci, dokud ji nevygoogluji…
Jaký je trik, jak si to snadno zapamatovat?
Přijatá odpověď:
Výstup je lepší než chyba, takže je na prvním místě (1 vs 2).
>
je zkratka pro „jde do“. Vlevo je to, co chci poslat, a vpravo je místo, kam to chci poslat. Protože ‚kde‘ je (téměř) vždy soubor, něco jako
program > /dev/null 2>1
by přesměroval na soubor s názvem 1. Tedy ampersand (&)
upraví soubor na deskriptor souboru.
Bohužel jsem nenarazil ani nevyvinul svou vlastní mnemotechnickou pomůcku, ale když jsem se poprvé učil *nix, zjistil jsem, že tento logický způsob funguje dobře. Po několika pokusech se to stane druhou přirozeností.