Redirecionar o stdout e o stderr para arquivar

Redirecionar o stdout e o stderr para arquivar

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 Linux, como Bash, utiliza três fluxos regulares de E/S. 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 estão redirecionando o stdout e o stderr para arquivar.

Saída padrão (stdout):

Cada sistema operacional baseado no Linux tem uma condenação de um local padrão para o comando executado. Todo mundo se refere a essa noção como "stdout" ou "saída padrão" para que pareça 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 o seu local padrão.

Erro padrão (stderr):

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 em direção ao lado prático do STDOUT e do redirecionamento de Stderr.

Redirecionando o stdout e o stderr para um arquivo:

Como o redirecionamento é um método de capturar uma saída de um programa e enviá -lo 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 de arquivo. Para redirecionar o 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 o stderr também.

Redirecionando o stderr e o stdout para separar arquivos:

Abaixo está a sintaxe do comando para redirecionar o stdout e o stderr para separar arquivos.

Comando> Out 2> Erro

O comando abaixo do golding redirecionará a saída para o arquivo "Out" e as mensagens de erro para o arquivo "Erro".

$ gat amostra.txt> out 2> 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. Aqui está a sintaxe do comando para redirecionar o stderr para stdout:

comando> out 2> & 1
$ ls> samplefile.txt 2> & 1
$ CAT Samplefile.TXT

> Redirecionamentos redirecionados o stdout para o Samplefile.txt e 2> & 1 redirecionarão o stderr para o local atual do stdout.

Se o Stderr for redirecionado primeiro para o STDOUT, use o comando abaixo para redirecionar o stdout para um arquivo.

Comando 2> & 1> arquivo
$ ls -al 2> & 1> Samplefile.TXT
$ CAT Samplefile.TXT

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

Comando e> arquivo
$ ls &> samplefile.TXT
$ CAT Samplefile.TXT

Redirecionando o stdout e o stderr para um único arquivo:

Todas as conchas não suportam esse redirecionamento de formulário, mas Bash e Zsh o apoiam. Stdout e stderr podem ser redirecionados utilizando a seguinte sintaxe.

comando &> out
$ gat amostra.txt &> Out

Na próxima seção do artigo, verificaremos o exemplo separado para redirecionamento Stdout e Stderr.

Redirecionando stdout para um arquivo:

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

Comando> arquivo

Estamos usando a “amostra.arquivo ”para armazenar a saída padrão do comando“ LS -Al ”

$ ls -al> amostra.TXT
$ gat amostra.TXT
comando 1> arquivo
$ ls 1> amostra.TXT
$ gat amostra.TXT

Redirecionando Stderr para um arquivo:

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

Comando 2> arquivo
$ ls -al 2> amostra.TXT

Podemos combinar a execução para Stderr e Stdout em um único comando de redirecionamento.

comando 2> erro.txt 1> saída.TXT

No exemplo abaixo, as mensagens de erro serão armazenadas em “Erro.txt ", onde" saída.txt ”terá sua saída padrão do“ comando ls.”

$ ls 2> erro.txt 1> saída.TXT
$ CAT Output.TXT

Conclusão:

Ter o conceito de redirecionamento e descritores de arquivos para fluxos de E/S é muito valioso enquanto trabalha em um terminal Linux. Neste post, conversamos sobre os fluxos regulares de E/S, incluindo stdout e stderr. A primeira seção deste post traz informações detalhadas sobre o redirecionamento, os fluxos de E/S e o descritor de arquivo numérico. Em seguida, você viu o exemplo prático para várias formas de redirecionamento de stdout e stderr.