Redireciona stdout e stderr para /dev/null
:
> /dev/null 2>&1
OR no bash:
&> /dev/null
Você pode fazer isso para todos os programas gerados pelo seu script usando exec
com o redirecionamento no início do seu script.
exec > /dev/null 2>&1
A menos que os programas que você invoca em seu script acessem o terminal diretamente (raro), isso deve cobrir você.
Uma nota sobre redirecionamentos:
A ordem é importante. Precisa ser > /dev/null 2>&1
, NÃO 2>&1 >/dev/null
. Eu costumava pensar que o último funcionaria porque >
parece uma seta que me faz pensar em ponteiros (como a palavra "redirecionar"), e se eu apontar stderr para stdout e então apontar stdout para / dev / null, então ambos devem estar apontando para / dev / null. Esse não é o caso, no entanto. Os descritores de arquivo não são ponteiros e é mais útil pensar em >
como uma atribuição a um descritor de arquivo em vez de apontá-lo. (Mais ou menos, tecnicamente, um fd é apenas um número e você precisa de funções do sistema como dup2
para abrir um arquivo diferente no mesmo descritor de arquivo; mas acho que a atribuição é uma boa abstração de alto nível).