Řešení 1:
Výstup libovolného programu můžete přesměrovat tak, aby nebyl vidět.
$ program > /dev/null
Tím se přesměruje standardní výstup – stále uvidíte všechny chyby
$ program &> /dev/null
Tím se přesměruje veškerý výstup, včetně chyb.
Řešení 2:
Na příkazovém řádku jsou k dispozici tři I/O zařízení.
standard input - 0
standard output - 1
standard error - 2
Chcete-li přesměrovat standardní výstup (výchozí výstup) do souboru (a přepsat soubor), použijte
command > file.log
Pro připojení k file.log použijte dva >
s
command >> file.log
Pro přesměrování standardní chyby do souboru file.log použijte
command 2> file.log
A připojit
command 2>> file.log
Sloučit výstupy do jednoho streamu a poslat je všechny na jedno místo
command > file.log 2>&1
Tím se odešle 2 (standardní chyba) na 1 (standardní výstup) a standardní výstup se odešle do file.log
Všimněte si, že je také možné přesměrovat standardní vstup do příkazu, který očekává standardní vstup
command << file.txt
Další podrobnosti naleznete v příručce Advanced Bash Scripting Guide.
Řešení 3:
Skrýt standardní výstup:
./command >/dev/null
Skrýt standardní výstup a standardní chybu:
./command >/dev/null 2>&1
Skryjte standardní výstup a standardní chybu a uvolněte terminál (spusťte příkaz na pozadí):
./command >/dev/null 2>&1 &
Řešení 4:
Pokud chcete výstup pouze skrýt (a neukládat jej do souboru), můžete použít:
Upraveno:
$ příkaz &> /dev/null
Řešení 5:
Pro Mac OS X v10.6 (Snow Leopard):
Pokud potřebujete skrýt výstup, aniž byste to dali programu vědět kontrolou deskriptoru výstupního/chybového souboru, můžete zkusit použít následující v shellu:
stty flusho; command ;stty -flusho
nebo pokud chcete mimochodem skrýt vstup z terminálu:
stty -echo; command ;stty echo
Více informací naleznete na manuálové stránce stty(1).
Pro Linux vím jen to, že Ubuntu 10.04 (Lucid Lynx) a některé Debian/Arch Linux (komentováno níže – díky, hendry) nemají flusho
nastavení (a nic jiného vhodného v manuálové stránce nevidím). echo
nastavení stejně funguje na Ubuntu.