Redirecionar stdout e stderr para arquivo

Redirect Stdout Stderr File



Ao redirecionar qualquer saída de comando para um arquivo, você notará que as mensagens de erro são impressas na janela do terminal. Qualquer comando executado em qualquer shell do Linux, como bash, utiliza três fluxos de E / S regulares. Um descritor de arquivo numérico é usado para representar cada fluxo.

  • O fluxo de entrada padrão (stdin): 0
  • O fluxo de saída padrão (stdout): 1
  • O fluxo de erro padrão (stderr): 2

Nesta postagem, entenderemos as informações que vêm sob o redirecionamento de stdout e stderr para arquivo.







Saída padrão (saída padrão):

Cada sistema operacional baseado em Linux tem a convicção de um local padrão para o comando executado. Todos se referem a essa noção como saída padrão ou saída padrão para torná-la mais fácil. Seu shell Bash ou Zsh está constantemente procurando o local de saída padrão. Quando o shell detecta uma nova saída, ele a exibe na tela do terminal para você ver. Caso contrário, ele enviará a saída para seu local padrão.



Erro padrão (stderr):

O erro padrão ou stderr é semelhante à entrada e saída padrão, mas é utilizado para armazenar mensagens de erro. O erro padrão pode ser redirecionado para a linha de comando ou um arquivo usando um terminal. Se você deseja gravar ou armazenar mensagens em um arquivo de log separado ou ocultar as mensagens de erro, redirecionar o stderr o ajudará. Agora vamos para o lado prático do redirecionamento stdout e stderr.



Redirecionando stdout e stderr para um arquivo:

Como o redirecionamento é um método de capturar a saída de um programa e enviá-la como uma entrada para outro comando ou arquivo. Os fluxos de E / S podem ser redirecionados colocando o operador n> em uso, onde n é o número do descritor do arquivo. Para redirecionar stdout, usamos 1> e para stderr, 2> é adicionado como um operador.





Criamos um arquivo chamado sample.txt para armazenar a saída redirecionada em nosso diretório atual.



O (comando> arquivo) é considerado o operador de redirecionamento clássico que apenas redireciona a saída padrão com o erro padrão mostrado no terminal. Demonstraremos diferentes opções para redirecionar stderr também.

Redirecionando stderr e stdout para arquivos separados:

Abaixo está a sintaxe de comando para redirecionar stdout e stderr para arquivos separados.

comando >Fora2>erro

O comando fornecido a seguir redirecionará a saída para o arquivo de saída e as mensagens de erro para o arquivo de erro.

$gatosample.txt>Fora2>erro

Redirecionando stderr para stdout:

É uma prática comum redirecionar o stderr com a saída padrão de um programa para armazenar tudo em um único arquivo. Esta é a sintaxe do comando para redirecionar stderr para stdout:

comando >Fora2> &1$ls >samplefile.txt2> &1

$gatosamplefile.txt

> redirecionamentos de saída redirecionam o stdout para samplefile.txt, e 2> & 1 redirecionará o stderr para a localização atual do stdout.

Se stderr for redirecionado para stdout primeiro, use o comando fornecido a seguir para redirecionar o stdout para um arquivo.

comando 2> &1 > Arquivo$ls -ao 2> &1 >samplefile.txt

$gatosamplefile.txt

&> também é usado para a mesma funcionalidade que 2> & 1 executa.

comando &> Arquivo$ls &>samplefile.txt

$gatosamplefile.txt

Redirecionando stdout e stderr para um único arquivo:

Todos os shells não suportam este redirecionamento de formulário, mas bash e Zsh suportam. Stdout e stderr podem ser redirecionados utilizando a seguinte sintaxe.

comando &>Fora$gatosample.txt&>Fora

Na próxima seção do artigo, verificaremos o exemplo separado para redirecionamento de stdout e stderr.

Redirecionando stdout para um arquivo:

A saída padrão é representada pelo 1 na lista de números do descritor de arquivo. Para o comando de redirecionamento sem qualquer número de descritor de arquivo, o terminal define seu valor como 1. A sintaxe para redirecionar o stdout para um arquivo é fornecida a seguir:

comando > Arquivo

Estamos usando o sample.file para armazenar a saída padrão do comando ls -al

$ls -ao >sample.txt

$gatosample.txt

comando 1> Arquivo$ls 1>sample.txt

$gatosample.txt

Redirecionando stderr para um arquivo:

Use o operador 2> para redirecionar o stderr para um arquivo.

comando 2> Arquivo $ls -ao 2>sample.txt

Podemos combinar a execução de stderr e stdout em um único comando de redirecionamento.

comando 2>error.txt1>output.txt

No exemplo fornecido a seguir, as mensagens de erro serão armazenadas em error.txt, onde output.txt terá sua saída padrão do comando ls.

$ls 2>error.txt1>output.txt

$gatooutput.txt

Conclusão:

Ter o conceito de redirecionamento e descritores de arquivo para fluxos de E / S é muito valioso ao trabalhar em um terminal Linux. Nesta postagem, falamos sobre os fluxos de E / S regulares, incluindo stdout e stderr. A primeira seção desta postagem traz informações detalhadas sobre o redirecionamento, fluxos de E / S e o descritor numérico de arquivo. A seguir, você viu o exemplo prático para várias formas de redirecionamento stdout e stderr.