Existem dois fluxos de saída de um processo que geralmente são enviados para o terminal: saída padrão (que é vinculada ao descritor de arquivo 1) e erro padrão (que é vinculado ao descritor de arquivo 2). Isso permite uma captura facilmente separada da saída esperada e mensagens de erro ou outras informações de diagnóstico que geralmente não são esperadas como saída.
Quando você usa o redirecionamento ( >
), isso somente expulsa a saída padrão para o arquivo ou local especificado, deixando o erro padrão intocado. Isso permite que você veja se há erros (como aqueles que você está vendo).
Se você quiser enviar todas as saídas, incluindo o erro padrão, será necessário redirecionar os dois fluxos:
/path/to/program arg1 arg2 > /dev/null 2>&1
Ou, como alternativa, mas mais explicitamente:
/path/to/program arg1 arg2 > /dev/null 2> /dev/null
A sintaxe 2>&1
significa "Enviar saída atualmente indo para o descritor de arquivo 2 para o mesmo local que a saída que vai para o descritor de arquivo 1 irá". >
está omitindo o padrão de FD1, então é semanticamente o mesmo que 1>
, o que pode fazer com que 2>
faça mais sentido.