Redirecionamento de entrada e saída em exemplos de Linux/Unix
⚡ Resumo Inteligente
Em Linux e Unix, o redirecionamento altera o local onde um comando lê a entrada ou envia a saída, ou seja, troca de local.ping o teclado e a tela para arquivos ou dispositivos usando operadores como o sinal de maior que, o sinal de menor que e o operador de anexação.

O redirecionamento é uma das funcionalidades mais úteis do Linux e o shell Unix, porque permite que você decida onde um comando lê sua entrada e envia sua saída. Esta página explica o redirecionamento de saída, entrada e erros com exemplos práticos.
O que é redirecionamento?
O redirecionamento é um recurso do Linux que permite alterar os dispositivos de entrada e saída padrão ao executar um comando. Esse é o fluxo de trabalho básico de qualquer sistema. Comando Linux É que recebe uma entrada e fornece uma saída.
- O dispositivo de entrada padrão (stdin) é o teclado.
- O dispositivo de saída padrão (stdout) é a tela.
Com o redirecionamento, a entrada e a saída padrão acima podem ser alteradas.
Redirecionamento de saída
O gráfico abaixo marca o início dos exemplos de redirecionamento de saída.
O símbolo '>' é usado para redirecionamento de saída (STDOUT).
Exemplo:
ls -al > listings
Aqui, a saída do comando `ls -al` é redirecionada para o arquivo "listings" em vez de ser exibida na sua tela. A captura de tela abaixo mostra o resultado.
Nota: Use o nome de arquivo correto ao redirecionar a saída do comando para um arquivo. Se um arquivo com o mesmo nome já existir, o comando redirecionado apagará o conteúdo dele e o sobrescreverá.
Se você não deseja sobrescrever um arquivo, mas quer adicionar mais conteúdo a um arquivo existente, use o operador '>>'. A captura de tela abaixo mostra o conteúdo adicionado com '>>'.
Você pode redirecionar a saída padrão não apenas para arquivos, mas também para dispositivos.
$ cat music.mp3 > /dev/audio
O comando "cat" lê o arquivo de música.mp3 e envia a saída para /dev/audio, que é o dispositivo de áudio. Se a configuração de som do seu PC estiver correta, este comando reproduzirá o arquivo de música.mp3.
Redirecionamento de entrada
O gráfico abaixo apresenta o redirecionamento de entrada.
O símbolo '<' é usado para redirecionamento de entrada (STDIN).
Exemplo: O programa de e-mail do Linux permite enviar e-mails a partir do terminal.
Você pode digitar o conteúdo do e-mail usando o teclado, o dispositivo de entrada padrão. Mas, se quiser anexar um arquivo ao e-mail, você pode usar o operador de redirecionamento de entrada no seguinte formato.
mail -s "Subject" to-address < Filename
A captura de tela abaixo mostra o comando mail lendo um arquivo como entrada.
Isso anexa o arquivo ao e-mail, que é então enviado ao destinatário.
Os exemplos acima foram simples. Agora, observe algumas técnicas avançadas de redirecionamento que utilizam descritores de arquivo.
Envie o Descriptors (FD)
Em Linux e Unix, tudo é um arquivo. Arquivos comuns, diretórios e até mesmo dispositivos são arquivos. Cada arquivo possui um número associado chamado descritor de arquivo (FD).
O diagrama abaixo mostra os fluxos padrão e seus descritores de arquivo.
Sua tela também possui um descritor de arquivo. Quando um programa é executado, a saída é enviada para o descritor de arquivo da tela, e você vê a saída do programa no seu monitor. Se a saída fosse enviada para o descritor de arquivo da impressora, a saída do programa seria impressa.
Redirecionamento de erros
Sempre que você executa um programa ou comando no terminal, três arquivos são mantidos abertos: a entrada padrão, a saída padrão e o erro padrão.
Esses arquivos estão sempre presentes quando um programa é executado. Como explicado anteriormente, um descritor de arquivo está associado a cada um desses arquivos.
| Envie o | Envie o Descriptor |
|---|---|
| Entrada padrão STDIN | 0 |
| Saída padrão STDOUT | 1 |
| Erro padrão STDERR | 2 |
Por padrão, o fluxo de erros é exibido na tela. O redirecionamento de erros direciona os erros para um arquivo que não seja exibido na tela.
Por que redirecionamento de erros?
O redirecionamento de erros é um dos recursos mais populares do Unix e do Linux.
Usuários frequentes de Unix sabem que muitos comandos geram uma quantidade enorme de erros. Por exemplo, ao procurar arquivos, normalmente se obtém o seguinte erro: permissão Erros de acesso negado geralmente não ajudam quem está procurando um arquivo específico. Ao executar scripts de shell, muitas vezes não se deseja que mensagens de erro interfiram na saída normal do programa.
A solução é redirecionar as mensagens de erro para um arquivo.
Exemplo 1
$ myprogram 2>errorsfile
A captura de tela abaixo mostra esse comando no terminal.
Acima, estamos executando um programa chamado myprogram. O descritor de arquivo para erro padrão é 2. Usando “2>”, redirecionamos a saída de erro para um arquivo chamado “errorsfile”. Assim, a saída do programa não fica poluída com erros.
Exemplo 2
Aqui está outro exemplo que utiliza a instrução find.
find . -name 'my*' 2>error.log
Usando o comando find, estamos procurando no diretório atual “.” por um arquivo cujo nome começa com “my” e enviando quaisquer erros para error.log.
3 exemplo: Vejamos um exemplo mais complexo.
Administradores de servidores frequentemente listam diretórios e armazenam tanto a saída de erro quanto a saída padrão em um arquivo, que pode ser processado posteriormente. Aqui está o comando.
ls Documents ABC> dirlist 2>&1
O diagrama abaixo mostra os dois fluxos sendo capturados em um único arquivo.
Aqui:
- 2>&1 significa que STDERR é redirecionado para o mesmo destino que STDOUT (que é a lista de diretórios de arquivos).
- A saída de erro é redirecionada para a saída padrão, que por sua vez é redirecionada para o arquivo dirlist. Portanto, ambos os fluxos são gravados no arquivo dirlist.
O diagrama abaixo resume como a entrada, a saída e o redirecionamento de erros se encaixam.






.png)