
Como posso ocultar a saída da tela (printf) de um aplicativo shell no Linux?
Responder1
Você pode redirecionar a saída de qualquer programa para que não seja vista.
$ program > /dev/null
Isso redirecionará a saída padrão - você ainda verá erros
$ program &> /dev/null
Isso redirecionará todas as saídas, incluindo erros.
Responder2
Existem três dispositivos de E/S disponíveis na linha de comando.
standard input - 0
standard output - 1
standard error - 2
Para redirecionar a saída padrão (a saída padrão) para um arquivo (e sobrescrever o arquivo), use
command > file.log
Para anexar ao file.log, use dois >
s
command >> file.log
Para redirecionar o erro padrão para o arquivo.log, use
command 2> file.log
E para anexar
command 2>> file.log
Para combinar as saídas em um fluxo e enviá-las todas para um só lugar
command > file.log 2>&1
Isso envia 2 (erro padrão) para 1 (saída padrão) e envia a saída padrão para file.log
Observe que também é possível redirecionar a entrada padrão para um comando que espera entrada padrão
command << file.txt
Para mais detalhes, confira oGuia avançado de script Bash.
Responder3
Ocultar saída padrão:
./command >/dev/null
Ocultar saídas padrão e de erro:
./command >/dev/null 2>&1
Oculte a saída padrão e as saídas de erro e libere o terminal (execute o comando em segundo plano):
./command >/dev/null 2>&1 &
Responder4
ParaMac OS X v10.6(Leopardo da neve):
Se você precisar ocultar a saída sem informar o programa, verificando o descritor do arquivo de saída/erro, você pode tentar usar o seguinte em um shell:
stty flusho; command ;stty -flusho
ou se você quiser apenas ocultar a entrada do terminal:
stty -echo; command ;stty echo
Consulte a página de manual stty(1) para obter mais informações.
Para Linux, tudo que sei é queUbuntu 10.04(Lucid Lynx) e alguns Debian/Arch Linux (comentados abaixo - obrigado, hendry) não possuem a flusho
configuração (e não consigo ver nada mais apropriado na página de manual). A echo
configuração funciona no Ubuntu de qualquer maneira.