Redirecionamento para arquivos

LinuxBeginner
Pratique Agora

Introdução

Por padrão, os comandos do Linux exibem tudo na tela. Mas e se você quiser salvar esses dados?

Esse processo é chamado de redirecionamento. É como colocar um “endereço de encaminhamento” na sua correspondência.

Essa é uma boa forma de entender a sintaxe do shell em geral: em vez de mudar o que um comando faz essencialmente, o redirecionamento muda para onde a entrada ou a saída dele é enviada.

Neste laboratório, você aprenderá três formas de controlar para onde os dados vão:

  1. Redirecionar e substituir (>): salva a saída em um arquivo, substituindo o conteúdo existente.
  2. Redirecionar e adicionar (>>): adiciona a saída ao final de um arquivo.
  3. Redirecionar erros (2>): captura somente as mensagens de erro.

Redirecionar a saída (substituir)

O sinal de maior que > é o operador de substituição.

Muitos iniciantes aprendem que > significa “salvar em um arquivo”, mas é mais preciso pensar nele como “enviar a saída padrão para este arquivo e substituir o conteúdo anterior”. Essa distinção se torna importante quando você começa a combinar comandos com mais cuidado.

Ele diz ao Linux: “Pegue a saída deste comando e escreva-a neste arquivo. Se o arquivo existir, apague-o primeiro”.

Vá para o diretório do projeto:

cd ~/project

Redirecione a saída para output.txt:

echo "Hello, Linux." > output.txt

Nada será exibido na tela. O texto foi para o arquivo. Verifique:

cat output.txt

Agora, veja por que chamamos isso de “substituição”. Execute:

echo "This is new content." > output.txt
cat output.txt

O antigo “Hello, Linux.” desapareceu. O operador > limpou o arquivo.

Por isso, o redirecionamento deve ser tratado com o mesmo cuidado que uma modificação de arquivo. Um comando curto pode substituir imediatamente o conteúdo de um arquivo existente.

Adicionar saída ao arquivo (>>)

Muitas vezes, você não quer destruir os dados; quer apenas adicionar conteúdo a eles. Use o sinal de maior que duplicado >>.

Ele funciona como uma instrução de adição.

Adicione uma nova linha a output.txt:

echo "This line is appended." >> output.txt
cat output.txt

Você deverá ver as duas linhas.

O conteúdo original está preservado. Faça novamente:

echo "Another line." >> output.txt
cat output.txt

O operador >> é perfeito para logs.

A adição é importante porque muitos arquivos operacionais crescem com o tempo, em vez de serem recriados do zero. Logs, relatórios e históricos de comandos geralmente usam um fluxo de trabalho que “adiciona conteúdo ao final”.

Redirecionar erros (2>)

Como você aprendeu, o Linux separa a “saída normal” (stdout) da “saída de erro” (stderr).

Os operadores > e >> tratam estritamente da “saída normal”. Eles ignoram os erros.

É aqui que o modelo de fluxos do laboratório anterior se torna prático. Se a saída e os erros são fluxos separados, o Linux pode encaminhá-los para destinos diferentes.

Para capturar erros, usamos 2>. (O identificador da saída de erro padrão é 2.)

Tente listar um diretório inexistente:

ls /missing_directory 2> error.log

A tela permanece em branco. O erro foi capturado e enviado para error.log.

Inspecione o arquivo:

cat error.log

Você verá a mensagem de erro armazenada nele.

O 2 em 2> vem do número convencional do descritor de arquivo da saída de erro padrão. Você ainda não precisa memorizar todos os descritores de arquivo, mas é útil saber que esses números se referem aos canais de fluxo do shell.

Resumo

Você aprendeu a controlar o fluxo dos dados:

  • > (Substituir): salva a saída em um arquivo, apagando o conteúdo anterior.
  • >> (Adicionar): adiciona a saída ao final do arquivo, preservando o histórico.
  • 2> (Redirecionar erros): captura as mensagens de erro.

Essas ferramentas permitem salvar os resultados dos comandos com eficiência.