Como desativar o comando ls?

6

Suponha que eu faça um ls recursivo

$ ls -R 

no diretório raiz.

Eu recebo muitas mensagens como essas -

ls: cannot open directory ./var/lib/sendmail: Permission denied
ls: cannot open directory ./var/lib/sudo: Permission denied
...

Existe uma maneira de evitar a exibição das mensagens " cannot open directory " acima?

    
por CodeBlue 11.07.2013 / 22:36

1 resposta

21

Como são mensagens de erro, elas são enviadas para stderr não stdout. A solução é que você redireciona o stderr:

ls -R 2>/dev/null

Explicação:

Qualquer comando tem 3 descritores de arquivo padrão: entrada padrão (0) (geralmente o terminal onde você digita comandos), saída padrão (1) (normalmente o terminal onde o comando imprime sua saída) erro padrão (2) padrão é o mesmo que a saída padrão).

A maioria (se não todos) programas / ferramentas imprime avisos e erros para o descritor de arquivo de erro padrão. Agora os descritores de arquivos não seriam muito úteis se fossem corrigidos; é por isso que o shell oferece redirecionamento : você pode redirecionar qualquer um dos descritores de arquivo padrão para qualquer arquivo que desejar.

Redirecionando stdin (para receber entrada de um arquivo em vez de do seu teclado):

interactive_program 0< file_with_answers

Como você pode ver, isso pode ajudá-lo a automatizar a execução de programas simples que fazem muitas perguntas, fornecendo um chamado "arquivo de resposta" exibido na entrada padrão.

Isso pode ser encurtado para

 interactive_program < file_with_answers

como o < torna o redirecionamento claro ( do arquivo para o programa)

Da mesma forma, a saída padrão pode ser redirecionada por meio de 1>... ou >... ou >>... (anexar a um arquivo existente em vez de truncá-lo)

O redirecionamento de erro padrão requer que você especifique explicitamente o descritor de arquivo da seguinte forma: 2>... , então o que o acima faz é direcionar todos os erros para o arquivo especial /dev/null que é uma espécie de buraco negro para bits. p>

Leitura relevante sobre o redirecionamento fornecido por MattDMo nos comentários abaixo.

    
por 11.07.2013 / 22:41

Tags