bash - redirecionamento de mensagens
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 22 de maio de 2018
As saídas geradas por um programa podem se enquadrar em três categorias:
- Entrada padrão (Standard input ou stdin): estes são os dados que o programa irá processar;
- Saída padrão (Standard output ou stdout): o resultado da execução do programa;
- Erros (Standard Error ou stderr): erros gerados durante a execução do programa.
Por definição, os erros (stderr) e a saída gerada pelo programa (stdout) são enviados para a tela do computador.
Nós podemos direcionar as saídas geradas pelo computador (stdout e stderr) para diferentes arquivos.
2>
: redireciona as mensagens de erro para um arquivo. stderr é identificado pelo número2
.find /proc 2> erros.log
&>
: Redirecionamento para arquivo tanto da saída padrão quando dos erros:find /proc &> saida_e_erros.log
A saída padrão, identificada pelo número 1
é o default, podemos ou não especificar:
find /proc > saida.log
ou
find /proc 1> saida.log
Veja só, o diretório /proc contém arquivos que usuários comuns não podem visualizar. O comando
find /proc &> saida_e_erros.log
gerará mensagens de erro intercaladas com mensagens normais:
$ find /proc &> saida_e_erros.log
/proc/tty/ldisc
/proc/tty/driver
find: `/proc/tty/driver': Permission denied
/proc/tty/ldiscs
Podemos ainda direcionar a saída padrão para um arquivo e os erros para um outro arquivo:
$ find /proc 1> saida.log 2> erros.log
Resumo
Comando | Descrição |
---|---|
comando 2>filename |
Redireciona os erros para arquivo.err |
comando > saida.txt |
Redireciona a saída padrão para saida.txt |
comando &> saida_e_erros.log |
Redireciona a saída padrão e os erros para o mesmo arquivo (saida_e_erros.log ) |
comando 2>&- saida.log |
Suprime a exibição de mensagens de erro. Útil quando as mensagens de erro não nos interessam |
comando 2>&1 saida.log |
Envia todas as mensagens de erro para a tela e a saída do comando para o arquivo saida.log . Útil em shell scripts quando precisamos enviar os erros para a tela |