Pular para o conteúdo principal

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.


SintaxeStdOut p/ TerminalStdErr p/ TerminalStdOut p/ ArquivoStdErr p/ ArquivoArquivo
>nãosimsimnãosubstitui
>>nãosimsimnãoincrementa
2>simnãonãosimsubstitui
2>>simnãonãosimincrementa
&>nãonãosimsimsubstitui
&>>nãonãosimsimincrementa
| teesimsimsimnãosubstitui
| tee -asimsimsimnãoincrementa
N/Asimsimnãosimsubstitui
N/Asimsimnãosimincrementa
|& teesimsimsimsimsubstitui
|& tee -asimsimsimsimincrementa

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.