Existem 3 tipos de streams de dados
STDIN
- Entrada padrão de dados
- Saída padrão de dados
- Saída padrão de erro
Os programas podem receber dados do STDIN através do pipe ( comando | segundo_comando) ou através de um direcionamento de conteúdo de um arquivo (comando < arquivo.log).
Geralmente a saída dos programas é direcionada para o STDOUT, e a saída de erro para o STDERR. Estas duas saídas mostram no mesmo local (tela), porém são direcionadas por canais diferentes, e portanto se utilizarmos o pipe para direcionar esta saída para outro programa, ou então para um arquivo utilizando ">", somente a saída STDOUT será redirecionada, e a STDERR será apresentada na tela.
Esta maneira é boa caso a necessidade de log se baseie somente na saída padrão. Para adicionar a saída de erro para o arquivo podemos utilizar os seguintes comandos:
comando < arquivo.log | Redireciona do arquivo para STDIN |
comando > arquivo.log | Redireciona STDOUT para arquivo |
comando 2>&1 | Redireciona STDERR para STDOUT |
comando 2>&1 > arquivo.log | Redireciona STDERR para STDOUT e depois para arquivo |
comando &> arquivo.log | Redireciona STDOUT e STDERR direto para arquivo |