agosto 09, 2012

Redirecionando a saída do console para arquivo

As vezes a saída de texto de algum programa é grande de mais, e precisamos analisar o início, a melhor maneira seria se tivéssemos esta saída em um arquivo.
Existem 3 tipos de streams de dados

STDIN
  • Entrada padrão de dados
STDOUT
  • Saída padrão de dados
STDERR
  • 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