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)