Como redirecionar stderr para stdout no Bash

How Redirect Stderr Stdout Bash



Os comandos no Linux recebem alguma entrada do usuário, que pode ser um arquivo ou qualquer atributo, e durante a execução, eles fornecem alguma saída chamada saída padrão. A saída padrão pode ser uma saída de sucesso ou uma saída de erro; ambos serão exibidos na tela do terminal. Mas, em alguns casos, você deseja armazenar saídas padrão em um arquivo para teste ou depuração do código. No Linux, essas saídas podem ser redirecionadas para um arquivo e o processo de capturá-lo é chamado de redirecionamento.







Cada processo no Linux produz três fluxos de dados, stdin, stdout e stderr:



  • Stdin : Recebe a entrada do usuário por meio do teclado
  • stdout : Exibe a saída na tela
  • stderr : Mostra informações de erro na tela

Cada fluxo de dados tem um id numérico:



Id Numérico Nome
0 Stdin
1 stdout
2 stderr

Vamos explicar o redirecionamento um pouco mais detalhadamente:





Como redirecionar a saída padrão e o erro padrão no Bash:

Para redirecionar a saída padrão do comando, usaremos 1 com um operador de redirecionamento maior que o sinal>:

$ls 1>stdout.txt

O comando acima criará um arquivo e colocará a saída padrão do comando ls no arquivo stdout.txt.



Para ler o arquivo stdout.txt, use:

$gatostdout.txt

Também podemos redirecionar o erro padrão para um arquivo usando o comando:

$gatomeuarquivo.txt2>stderr.txt

Para visualizar o arquivo stderr.txt, use:

$gatostderr.txt

Certifique-se de que o uso 2 seja maior do que o sinal>. Como não há nenhum arquivo myfile.txt no diretório, o comando cat fornecerá um erro que será anexado ao arquivo stderr.txt.

Essas saídas padrão também podem ser redirecionadas com um único comando, use:

$ls 1>stdout.txt2>stderr.txt

A saída do comando ls será escrita no stdout.txt arquivo, mas o stderr.txt permanecerá vazio porque não haveria erro.

Agora vamos fazer para stderr.txt:

$gatomeuarquivo.txt1>stdout.txt2>stderr.txt

Use o comando mencionado abaixo para ler stderr.txt.

$gatostderr.txt

E, claro, stdout.txt estará vazio.

Conclusão :

O comando Linux ao ser executado fornece uma saída padrão que pode ser uma saída de sucesso ou uma saída de erro. Geralmente, essas saídas não podem ser redirecionadas usando operadores de redirecionamento; precisamos usar ids numéricos específicos com o sinal>. Neste guia, aprendemos como usar essas teclas numéricas para redirecionar a saída padrão para um arquivo com exemplos.