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).

Redirecionamento de saída

Exemplo:

ls -al > listings

Aqui, a saída do comando ls -al é redirecionada para o arquivo “listings” em vez de sua tela.

Redirecionamento de saída

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.

Redirecionamento de saída

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)

Redirecionamento de entrada

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

Redirecionamento de entrada

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.

Redirecionamento de erros

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

Por que redirecionamento de erros

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”

Por que redirecionamento de erros

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

Por que redirecionamento de erros

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.