Domine o Redirecionamento de Saída e Erros no Terminal Linux
Manipular fluxos de dados é essencial para automatizar tarefas e gerar arquivos de log eficientes em scripts Shell. O Linux utiliza descritores numéricos para separar mensagens padrão de erros, permitindo salvar ou descartar cada saída conforme a necessidade. A seguir, veja como controlar os fluxos stdout (1) e stderr (2) usando os operadores >, 2> e &>.
Bash
#!/bin/bash
# Demonstração dos redirecionamentos de saída e erro no Shell
# 1. Redireciona apenas a saída padrão (stdout) para um arquivo
echo "Operação realizada com sucesso." > saida.log
# 2. Redireciona apenas mensagens de erro (stderr) para um arquivo separado
ls /diretorio_que_nao_existe 2> erro.log
# 3. Redireciona stdout e stderr simultaneamente para o mesmo arquivo
ls -l /bin/bash /diretorio_inexistente &> resultado_completo.log
# 4. Desmuta a execução descartando erros no dispositivo nulo (/dev/null)
ls -la /root 2> /dev/null
echo "=== Conteúdo de erro.log ==="
cat erro.log
Exemplo de uso e verificação no terminal:
Bash
# Anexando dados sem sobrescrever o arquivo existente (operador >>)
echo "Nova linha de registro" >> acumulado.log
# Redirecionamento combinado no padrão POSIX tradicional
comando_qualquer > saida_e_erro.log 2>&1
Pontos-chave
- Sobrescrita vs. Anexo (
>vs>>): O operador simples>limpa o arquivo de destino e grava do zero, enquanto o duplo>>adiciona o novo conteúdo ao final do arquivo. - Descritores Padrão: O Shell trabalha com
0(stdin),1(stdout) e2(stderr). O operador>sozinho é um atalho para1>. - Atalho Combinado (
&>): O operador&>captura tanto a saída normal quanto as mensagens de erro para o mesmo arquivo, simplificando a sintaxe> arquivo 2>&1. - Descarte de Mensagens (
/dev/null): Apontar qualquer redirecionamento para/dev/nulloculta permanentemente as mensagens da tela sem gerar arquivos no disco. - Compatibilidade Shell: O recurso
&>funciona nativamente em Bash e Zsh; em scripts POSIX estritos (#!/bin/sh), utilize sempre a sintaxe clássica> arquivo 2>&1.
