Redirecionamento de entrada e saída em exemplos de Linux/Unix
O que é redirecionamento?
Redirecionamento é um recurso do Linux que, ao executar um comando, você pode alterar os dispositivos de entrada/saída padrão. O fluxo de trabalho básico de qualquer Comando Linux é que ele 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/saída padrão acima pode ser alterada.
Clique aqui se o vídeo não estiver acessível
Redirecionamento de saída
A '>' 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 sua tela.
Note: Use o nome de arquivo correto ao redirecionar a saída do comando para um arquivo. Se houver um arquivo existente com o mesmo nome, o comando redirecionado excluirá o conteúdo desse arquivo e poderá ser substituído.”
Se você não deseja que um arquivo seja substituído, mas deseja adicionar mais conteúdo a um arquivo existente, use ,' operador.
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 music.mp3 e envia a saída para /dev/audio que é o dispositivo de áudio. Se as configurações de som do seu PC estiverem corretas, este comando reproduzirá o arquivo music.mp3
Redirecionamento de entrada
A ''símbolo é usado para redirecionamento de entrada (STDIN)
Exemplo: O programa de email no Linux pode ajudá-lo a enviar emails do Terminal.
Você pode digitar o conteúdo do e-mail usando o teclado padrão do dispositivo. 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
Isso anexaria o arquivo ao e-mail e ele seria enviado ao destinatário.
Os exemplos acima eram simples. Vejamos algumas técnicas avançadas de redirecionamento que fazem uso de Arquivo Descriptors.
Envie o Descriptors (FD)
No Linux/Unix, tudo é um arquivo. Arquivos normais, diretórios e até dispositivos são arquivos. Cada arquivo tem um número associado chamado Arquivo Descriptou (FD).
Sua tela também possui um arquivo Descriptou. Quando um programa é executado, a saída é enviada para Arquivo Descriptou da tela, e você verá a saída do programa em seu monitor. Se a saída for enviada para Arquivo Descriptou da impressora, a saída do programa teria sido impressa.
Redirecionamento de erros
Sempre que você executa um programa/comando no terminal, 3 arquivos estão sempre abertos, a saber, entrada padrão, saída padrão, erro padrão.
Esses arquivos estão sempre presentes sempre que um programa é executado. Conforme explicado antes, 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 é o roteamento dos erros para um arquivo diferente da tela.
Por que redirecionamento de erros?
O redirecionamento de erros é um dos recursos muito populares do Unix / Linux.
Usuários freqüentes de UNIX vão achar que muitos comandos lhe dão uma grande quantidade de erros.
- Por exemplo, ao procurar por arquivos, normalmente obtém-se erros de permissão negada. Esses erros geralmente não ajudam a pessoa que procura um arquivo específico.
- Ao executar scripts de shell, você geralmente NÃO deseja que as mensagens de erro atrapalhem a saída normal do programa.
A solução é redirecionar as mensagens de erro para um arquivo.
Exemplo 1
$ myprogram 2>errorsfile
Acima estamos executando um programa chamado myprogram.
O descritor de arquivo para erro padrão é 2.
Usando “2>”, redirecionamos a saída do erro para um arquivo chamado “errorfile”
Assim, a saída do programa não é confusa com erros.
Exemplo 2
Aqui está outro exemplo que usa a instrução find –
find . -name 'my*' 2>error.log
Usando o comando “find”, estamos pesquisando o “.” diretório atual para um arquivo com “nome” começando com “meu”
3 exemplo: Vamos ver um exemplo mais complexo,
Os administradores de servidor frequentemente listam diretórios e armazenam erros e saídas padrão em um arquivo, que pode ser processado posteriormente. Aqui está o comando.
ls Documents ABC> dirlist 2>&1
Aqui,
- que grava a saída de um arquivo na entrada de outro arquivo. 2>&1 significa que STDERR redireciona para o destino de STDOUT (que é o arquivo dirlist)
- Estamos redirecionando a saída de erro para a saída padrão que, por sua vez, está sendo redirecionada para o arquivo dirlist. Portanto, tanto a saída é gravada no arquivo dirlist
Resumo
- Cada arquivo no Linux possui um arquivo correspondente Descriptou associado a ele
- O teclado é o dispositivo de entrada padrão, enquanto a tela é o dispositivo de saída padrão
- “>” é o operador de redirecionamento de saída. “>>” anexa a saída a um arquivo existente
- “<” é o operador de redirecionamento de entrada
- “> &” Redireciona a saída de um arquivo para outro.
- Você pode redirecionar o erro usando seu arquivo correspondente Descriptou 2.