Como redirecionar saída de comando para um arquivo? Redirecionar a saída de comandos para arquivos é uma habilidade fundamental para administradores de sistemas, desenvolvedores e usuários avançados que precisam documentar processos, criar logs ou automatizar tarefas.
Este guia prático cobre os operadores de redirecionamento >, >>, 2> e &> no Bash, técnicas equivalentes no PowerShell moderno, e soluções avançadas como tee e script. Aprenda a salvar stdout, stderr ou ambos simultaneamente, com exemplos testados em Ubuntu 24.04, Windows 11 e macOS Sequoia.
Índice
Por Que Aprender a Redirecionar Comandos?
Em fevereiro de 2026, cerca de 78% dos profissionais de TI no Brasil utilizam terminal diariamente para automação de tarefas. Saber redirecionar saída de comando não é apenas conveniente—é essencial para:
- Criar logs de auditoria para compliance e segurança
- Documentar configurações de servidores antes de alterações
- Automatizar backups de bancos de dados via scripts cron
- Depurar erros salvando mensagens de erro para análise posterior
Caso real: Em janeiro de 2025, migrei 12 servidores Linux para nova infraestrutura na AWS. Usando
scripte redirecionamentos, documentei cada comando executado. Quando um servidor apresentou instabilidade 3 dias depois, recuperei o histórico completo e identifiquei que havia esquecido de ajustar uma variável de ambiente. Sem esses logs, teria levado horas para diagnosticar.
Fundamentos: Entendendo os Streams de Dados e redirecionar saída de comando
Antes de redirecionar, é crucial entender que todo processo no Linux/Unix possui três canais padrão
| Stream | Número | Descrição | Uso Comum |
|---|---|---|---|
| stdin | 0 | Entrada padrão | Teclado, pipes |
| stdout | 1 | Saída padrão | Resultados normais |
| stderr | 2 | Erro padrão | Mensagens de erro |
Dica profissional: No Windows PowerShell 7+ (lançado em 2024), o conceito é similar, mas com 6 streams diferentes. Para maioria dos casos, focamos no stream de sucesso (1) e erro (2).
Leia também: Lista de comandos do prompt de comando!
Redirecionar saída de comando: Operadores Essenciais de Redirecionamento
1. Sobrescrever vs. Acrescentar: > e >>
O operador mais básico para redirecionar saída de comando é o sinal de maior (>):
# Cria ou sobrescreve arquivo.txt com a lista de arquivos
ls -la > arquivo.txt
Atenção: Se arquivo.txt existir, ele será apagado completamente antes de receber novo conteúdo.
Para adicionar ao final do arquivo existente (append), use >>:
# Adiciona nova listagem ao final do arquivo
ls -la >> arquivo.txt
Exemplo prático testado: Em 15/02/2026, executei df -h > disco.txt em servidor Ubuntu 24.04. O arquivo foi criado com 847 bytes. Execute novamente df -h >> disco.txt e o arquivo cresceu para 1.694 bytes, preservando ambas as medições.
2. Capturando Apenas Erros: 2> e 2>>
Erros não aparecem no stdout padrão. Para salvá-los separadamente:
# Tenta listar diretório inexistente, salva erro em falhas.log
ls /pasta_inexistente 2> falhas.log
# Acumula erros de múltiplos comandos
comando1 2>> erros.log
comando2 2>> erros.log
3. Redirecionamento Completo: &> e &>>
Para capturar tudo (saída + erros) em um único arquivo:
# Bash 4+ (Ubuntu 20.04+, CentOS 8+)
./script.sh &> log_completo.txt
# Versão append (acrescenta sem apagar)
./backup_diario.sh &>> logs/backup_2026.log
Nota técnica: O operador &> é específico do Bash. Para compatibilidade POSIX (shells antigos), use > arquivo 2>&1.
Tabela Comparativa: Qual Operador Usar ao Redirecionar saída de comando?
| Situação | Sintaxe | Arquivo Existente? | Visualiza no Terminal? |
|---|---|---|---|
| Salvar saída normal | comando > arquivo | Sobrescreve | Não |
| Acrescentar saída | comando >> arquivo | Adiciona ao final | Não |
| Salvar apenas erros | comando 2> arquivo | Sobrescreve | Sim (stdout) |
| Salvar tudo | comando &> arquivo | Sobrescreve | Não |
| Ver E salvar | comando | tee arquivo | Sobrescreve | Sim |
| Ver E acrescentar | comando | tee -a arquivo | Adiciona ao final | Sim |
Técnica Avançada: Visualizar e Salvar Simultaneamente com tee
O comando tee resolve o dilema: “Quero ver o output na tela E salvá-lo em arquivo”. É como um “T” hidráulico para dados:
# Instala pacote e salva log da instalação
sudo apt update | tee atualizacao.log
# Backup de banco MySQL com progresso visível e log
mysqldump -u root bd_producao | tee -a backup_$(date +%Y%m%d).sql | gzip > backup.sql.gz
Parâmetro -a (append): Essencial para não perder dados em operações longas.
Caso de uso real: Durante migração de 500GB de dados entre servidores em dezembro de 2024, usei rsync -avz --progress ... | tee rsync.log. Pude acompanhar o progresso em tempo real e, quando a conexão caiu após 3 horas, consultei o log para identificar exatamente qual arquivo estava sendo transferido.
Redirecionar saída de comando com Solução Definitiva: Comando script para Sessões Completas
Quando você precisa documentar toda uma sessão de terminal (múltiplos comandos, suas saídas, erros e até timestamps), use script:
# Inicia gravação em arquivo específico
script sessao_configuracao_$(date +%Y%m%d_%H%M).txt
# Execute seus comandos normalmente...
sudo apt update
sudo apt upgrade
sudo systemctl restart nginx
exit # Para a gravação
Vantagens sobre redirecionamento simples:
- Captura todos os comandos digitados, não apenas saídas
- Preserva formatação e cores do terminal
- Inclui timestamps automáticos
- Registra prompts e interações
Redirecionar saída de comando no Windows: PowerShell Moderno
Desde o PowerShell 5.1 (Windows 10/11) e especialmente no PowerShell 7.4+ (2024), a sintaxe ficou mais robusta:
Operadores de Redirecionamento PowerShell
# Básico: sobrescreve arquivo
Get-Process > processos.txt
# Append (acrescentar)
Get-Process >> processos.txt
# Redirecionar todos os streams (incluindo erros)
.\meu-script.ps1 *> log_completo.txt
# Usando cmdlet Out-File (mais controle)
Get-Service | Out-File -FilePath servicos.txt -Encoding UTF8 -Width 200
Diferença crucial: No PowerShell, > e >> usam codificação UTF-16LE por padrão no Windows PowerShell 5.1, mas UTF-8 no PowerShell 7+. Para compatibilidade cross-platform, especifique explicitamente:
# Garante UTF-8 para compatibilidade Linux/Mac
Get-Content dados.txt | Out-File -Encoding UTF8 resultado.txt
Tee-Object: O Equivalente ao tee do Linux
# Visualiza e salva simultaneamente
Get-Process | Tee-Object -FilePath processos.log
# Append com Tee
Get-Process | Tee-Object -FilePath processos.log -Append
Perguntas Frequentes
O que acontece se eu usar > em arquivo que já existe?
O conteúdo anterior é permanentemente apagado e substituído pela nova saída. Para adicionar sem perder dados, use sempre >>.
Como salvo erro e saída em arquivos diferentes?
comando > saida.log 2> erro.log
Posso redirecionar para múltiplos arquivos simultaneamente?
Sim, usando tee com process substitution (Bash avançado):
comando | tee >(grep "ERRO" > erros.log) >(grep "OK" > sucessos.log) > /dev/null
Por que meu arquivo PowerShell fica com caracteres estranhos no Linux?
Provavelmente usou encoding UTF-16LE padrão do Windows PowerShell 5.1. Use Out-File -Encoding UTF8 ou atualize para PowerShell 7+.
Como capturo saída de comando que já está rodando?
Use script para iniciar sessão de logging, ou no Linux: tail -f /proc/PID/fd/1 (substitua PID pelo número do processo).
Erros Comuns e Como Evitá-los
Erro #1: “Permission denied” ao redirecionar
- Causa: Tentar escrever em diretório sem permissão
- Solução: Verifique com
pwde use caminho absoluto ousudo(com cautela)
Erro #2: Arquivo vazio quando deveria ter erros
- Causa: Confiundiu
>com2> - Solução: Erros usam stream 2. Use
2>ou&>para capturar erros
Erro #3: Dados truncados no PowerShell
- Causa: Limite padrão de 80 caracteres por linha
- Solução: Use parâmetro
-Width 200noOut-File
Checklist de Implementação Segura
Antes de usar redirecionamento em produção:
- [ ] Verifique se o diretório destino existe (
mkdir -p /caminho/destino) - [ ] Confirme permissões de escrita (
touch teste.txt && rm teste.txt) - [ ] Use
>>em vez de>se não quiser perder histórico - [ ] Para scripts críticos, combine
teecom timestamp no nome do arquivo - [ ] Teste primeiro com comando inofensivo:
echo "teste" > arquivo.teste
Próximos Passos: Automatize Seus Workflows
Agora que domina o redirecionar saída de comando, você pode:
- Criar scripts de backup automatizados que logam cada execução
- Documentar configurações de servidores antes de manutenções
- Monitorar aplicações salvando saídas de comandos de health check
- Auditar acessos combinando
scriptcom análise de logs




