O Que São Símbolos de Redirecionamento?
No universo do Linux e outros sistemas baseados em Unix, a linha de comando é uma ferramenta poderosa. Para maximizar sua eficiência, é crucial entender como os comandos interagem entre si e como podemos controlar o fluxo de dados. Os símbolos de redirecionamento são operadores especiais que alteram o destino da saída padrão (stdout) de um comando ou a origem de sua entrada padrão (stdin). Eles permitem que você capture informações, alimente comandos com dados específicos e gerencie erros de maneira eficaz.
Por padrão, a maioria dos comandos no shell exibe sua saída na tela (terminal) e espera receber sua entrada do teclado. O redirecionamento nos permite mudar esse comportamento, tornando nossos fluxos de trabalho mais dinâmicos e automatizados.
Redirecionando a Saída Padrão (`>`)
O símbolo mais comum é o >. Ele redireciona a saída padrão de um comando para um arquivo. Se o arquivo não existir, ele será criado. Se existir, seu conteúdo será sobrescrito.
Exemplo:
ls -l > lista_arquivos.txtEste comando listará o conteúdo do diretório atual em formato longo e salvará o resultado no arquivo lista_arquivos.txt, em vez de exibi-lo na tela.
Anexando a Saída Padrão (`>>`)
Para evitar a sobrescrita do conteúdo de um arquivo, utilizamos o operador de anexação >>. Ele adiciona a saída de um comando ao final de um arquivo existente ou cria o arquivo se ele não existir.
Exemplo:
echo "Log de eventos" >> log_geral.txtEste comando adicionará a string "Log de eventos" ao final do arquivo log_geral.txt.
Redirecionando a Saída de Erro Padrão (`2>`)
Nem toda saída de um comando é sucesso. Comandos que falham ou encontram problemas geralmente reportam erros na saída de erro padrão (stderr), que, assim como a saída padrão, é exibida no terminal por padrão. Para capturar esses erros em um arquivo, usamos o descritor de arquivo 2 seguido pelo operador de redirecionamento >.
Exemplo:
find / -name "arquivo_inexistente.txt" 2> erros_busca.txtEste comando tentará encontrar um arquivo em todo o sistema. Qualquer mensagem de erro (como permissão negada) será salva em erros_busca.txt, enquanto a saída normal (se houver) ainda apareceria no terminal.
Combinando Saída Padrão e Saída de Erro Padrão (`>&1` e `2>&1`)
É muito comum querermos capturar tanto a saída normal quanto os erros em um único local. Para isso, usamos um truque combinando os redirecionamentos. O descritor 1 representa a saída padrão (stdout), e o descritor 2 representa a saída de erro padrão (stderr).
Para direcionar a saída de erro (2) para o mesmo destino da saída padrão (1), usamos 2>&1. O & indica que estamos redirecionando um descritor de arquivo para outro descritor de arquivo, e não para um arquivo literal.
Exemplo:
ls -l /diretorio_inexistente > saida_completa.log 2>&1Neste caso, o comando ls -l tentará listar um diretório que não existe. A mensagem de erro será direcionada para saida_completa.log. Se o diretório existisse e houvesse saída normal, ela também iria para o mesmo arquivo.
Alternativamente, podemos querer enviar a saída padrão para um arquivo e a saída de erro para outro:
comando_qualquer > saida_normal.txt 2> saida_erro.txtRedirecionando a Entrada Padrão (`
Foto de Rafael Minguet Delgado no Pexels.