stderr/stdout
O redirecionamento de saída padrão (StdOut) e saída de erro padrão (StdErr) é uma técnica essencial no Bash para controlar o destino das mensagens geradas por comandos. Este guia descreve as várias sintaxes e opções disponíveis para redirecionar esses fluxos de dados.
| Sintaxe | StdOut p/ Terminal | StdErr p/ Terminal | StdOut p/ Arquivo | StdErr p/ Arquivo | Arquivo |
|---|---|---|---|---|---|
> | não | sim | sim | não | substitui |
>> | não | sim | sim | não | incrementa |
2> | sim | não | não | sim | substitui |
2>> | sim | não | não | sim | incrementa |
&> | não | não | sim | sim | substitui |
&>> | não | não | sim | sim | incrementa |
| tee | sim | sim | sim | não | substitui |
| tee -a | sim | sim | sim | não | incrementa |
| N/A | sim | sim | não | sim | substitui |
| N/A | sim | sim | não | sim | incrementa |
|& tee | sim | sim | sim | sim | substitui |
|& tee -a | sim | sim | sim | sim | incrementa |
Exemplos
Aqui estão exemplos práticos de como usar essas sintaxes:
Este comando redireciona a saída padrão do comando para o arquivo "output.txt", substituindo qualquer conteúdo existente no arquivo.
command > output.txt
Este comando redireciona a saída padrão do comando para o arquivo "output.txt", acrescentando novos dados ao final do arquivo, se ele já existir.
command >> output.txt
Este comando redireciona a saída de erro padrão do comando para o arquivo "output.txt", substituindo qualquer conteúdo existente no arquivo.
command 2> output.txt
Este comando redireciona a saída de erro padrão do comando para o arquivo "output.txt", acrescentando novos dados ao final do arquivo, se ele já existir.
command 2>> output.txt
Este comando redireciona tanto a saída padrão quanto a saída de erro padrão do comando para o arquivo "output.txt", substituindo qualquer conteúdo existente no arquivo.
command &> output.txt
Este comando redireciona tanto a saída padrão quanto a saída de erro padrão do comando para o arquivo "output.txt", acrescentando novos dados ao final do arquivo, se ele já existir.
command &>> output.txt
Este comando copia a saída padrão do comando para o arquivo "output.txt" e a exibe no terminal. O arquivo será substituído se já existir.
command | tee output.txt
Este comando copia a saída padrão do comando para o arquivo "output.txt" e a exibe no terminal. Os novos dados serão anexados ao final do arquivo, se ele já existir.
command | tee -a output.txt
Este comando copia tanto a saída padrão quanto a saída de erro padrão do comando para o arquivo "output.txt" e as exibe no terminal. O arquivo será substituído se já existir.
command |& tee output.txt
Este comando copia tanto a saída padrão quanto a saída de erro padrão do comando para o arquivo "output.txt" e as exibe no terminal. Os novos dados serão anexados ao final do arquivo, se ele já existir.
command |& tee -a output.txt
Observações
Não existe uma sintaxe abreviada no Bash para canalizar apenas a saída de erro (StdErr) para um segundo comando. Se essa funcionalidade for necessária, é possível explorar técnicas avançadas, como a troca de fluxos ou a substituição de processos. Para obter mais informações, consulte "How to pipe stderr, and not stdout?" no Stack Overflow ou outras fontes relevantes.