fbpx Certificação Linux: Redirecionamentos e Condutores no Linux [Guia Básico]

Blog

Redirecionamentos e Condutores no Linux [Guia Básico]

📅 01/04/2019 ⏱ 7 min ✍️ Uira Ribeiro
Linuxhow-to
Redirecionamentos e Condutores no Linux [Guia Básico]

Um conceito importante no Linux é o redirecionamento. Como tudo no Linux é um arquivo, fez-se necessário que os comandos e processos tivessem a habilidade de tratar as entradas e saídas de dados com grande facilidade.

Antes de detalharmos a habilidade de redirecionamento do Linux precisamos definir o que são entradas padrão, saída padrão e saída de erro.

Entrada padrão stdin -> 0

A Entrada Padrão (stdin) é a entrada de um fluxo de texto. Como exemplos temos o teclado, o mouse, um pendrive, etc. Todos eles alimentam o computador com informações. Pode ser representado pelo número 0.

Saída padrão stdout -> 1

A Saída Padrão (stdout) é a saída de um fluxo de texto em condições normais. Como exemplos temos o monitor, a impressora, o disquete, um arquivo, etc. Todos eles recebem informações do computador. Pode ser representado pelo número 1.

Saída de erros stderr -> 2

A Saída de Erro (stderr) é a saída de um fluxo de texto em condições de erro ou insucesso em um determinado processamento. A saída de erro poderá ser direcionada para o monitor ou para um arquivo de LOG. Pode ser representado pelo número 2.

Podemos redirecionar a entrada padrão ou a saída padrão do fluxo de dados de um determinado processo para outro processo ou um arquivo com muita facilidade.

Redirecionar para arquivos com > ou >>

Para redirecionar um resultado de uma saída para outra saída utilizamos o sinal de maior (>) ou (>>).

O sinal > simplesmente regrava o arquivo de saída; Já o sinal >> adiciona a saída no final do arquivo, sem apagar o conteúdo.

Redirecionar a partir de arquivos com o < ou

e para direcionarmos uma entrada para outra entrada usamos o sinal de menor (<).

Condutores... conduzem algo de um processo a outro ( | ou pipe)

Ainda podemos redirecionar uma saída para uma entrada usando uma barra vertical especial, o sinal em inglês chamado “pipe” (|) ou duto.

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=12

$ ls > saida.txt

Neste exemplo listamos os arquivos em um diretório gravando o resultado no arquivo saída.txt.

O redirecionamento é utilizando principalmente por programas ou quando o resultado de um processamento não será observado diretamente pelo usuário, mas enviado para outro programa, para um arquivo ou para um dispositivo.

$ mail uira@certificacaolinux.com.br < e-mail.txt

Aqui o programa mail está recebendo como argumento o endereço de e-mail e ao invés de utilizarmos o teclado como entrada padrão, estamos redirecionando o arquivo texto e-mail.txt.

$ ./folha_pagamento > arquivo1

Ou

$ ./folha_pagamento 1 > arquivo1

Estamos enviando toda a saída do programa folha_pagamento para o arquivo1

$ ./folha_pagamento 2 > arquivo_erro.log

Estamos enviando toda a saída de erros para o arquivo arquivo_ erro.log.

$ ./folha_pagamento > arquivo1 2>&1

Estamos enviando toda a saída padrão e de erros para o arquivo arquivo1.

$ ./folha_pagamento > arquivo_sucesso.log 2> arquivo_erro.log

Estamos enviando o resultado com a saída normal para o arquivo_ sucesso.log e a saída de erro para o arquivo_erro.log.

$ ./folha_pagamento | imprime_boletos 2> erros.log

Estamos enviando o resultado do processo folha_pagamento para o processo imprime_boletos e a saída de erro do imprime_boletos para o arquivo erro.log.

Símbolos Coringa

Veja que você também pode usar símbolos coringa para aglutinar arquivos pelo nome ou pedaços de nome.

Veja a tabela a seguir

TABELA – Símbolos Coringa (Wildcards)

Símbolo Descrição
* Significa “vale qualquer coisa” e pode substituir um ou mais caracteres de um nome. Por exemplo “Certifi*” pode significar “Certificado”, “Certifi­cação” ou qualquer outra combinação de nomes de arquivos que inicie com “Certifi”.
? Significa que pode substituir um caractere somente de um nome. Por exemplo: “?ertificado” pode  substituir “Certificado”, “certificado” ou qualquer outra combinação de nomes de arquivos que inicie com um caracter qualquer e termine com “certificado”.
{texto1, texto2...} Substitui a parte dentro das chaves pelos texto1, depois pelo texto2, assim por diante. Por exemplo: “parte_{a,b,c}” vai resultar em “parte_a”, “parte_b” e “parte_c”.

Quando estamos trabalhando com arquivos e diretórios no shell é muito comum precisarmos trabalhar com diversos arquivos de uma vez.

Para tornar este tipo de tarefa mais simples, o Linux oferece o recurso de coringa para os nomes dos arquivos e diretórios.

Assim como no baralho de cartas, os coringas são símbolos que podem significar muitas coisas. No Linux possibilitam que você os utilize como parte do nome dos arquivos e diretórios. Veja a tabela 6, de coringas:

Exemplos:

$ ls *.txt

Lista todos os arquivos com o sufixo .txt

$ cat doc??? >> documentos

Concatena todos os arquivos iniciados com “doc” que tenham 6 caracteres de tamanho no arquivo documentos.

Conheça agora um comando especial que permite que a saída de um comando possa ao mesmo tempo ser gravada em arquivo e enviada para outro comandao.

Comando tee

Uso:

$ tee [opções] arquivos

O comando tee recebe dados de uma entrada padrão, grava o que recebeu em um arquivo e ainda envia para sua saída padrão.

É utilizado para gravar a saída padrão de um comando em um arquivo e ainda enviar esta saída para outro comando.

A opção é:

  • -a: Adiciona no final do arquivo o que foi recebido ao invés de gravar por cima.

Exemplo:

$ folha_pagamento | tee folha.txt | imprime_boleto | tee boleto.txt | lpr 2> erros.log

O resultado do programa folha_pagamento é gravado pelo tee no arquivo folha.txt e enviado para o programa imprime_boleto.

Por sua vez o programa imprime_boleto redireciona sua saída para o segundo tee que grava o resultado no arquivo boleto.txt que também é enviado para o programa lpr que imprime os boletos.

Se houver erro na impressão, este erro é gravado no arquivo erros.log.

Há um outro comando especial que passa o que recebeu como entrada como argumentos para um determinado comando.

&index=104&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb

Comando xargs

Uso:

$ xargs comando [opções] arqumentoinicial

O xargs executa o comando e passa como argumento para esse comando o que foi recebido como entrada padrão.

O xargs vai executar inúmeras vezes comando de acordo com o número de linhas recebidas como entrada padrão.

As opções mais frequentes são:

  • -p: Pergunte ao usuário se o comando deve ser executado antes de fazê-lo
  • -r: Não execute o comando quando receber linhas vazias
  • -t: Mostre o comando na tela antes de executá-lo

Exemplos:

$ cat LEIAME.TXT | xargs echo

Neste exemplo cada linha do arquivo LEIAME.TXT é passada como argumento para o comando echo.

O comando echo imprime na saída padrão os argumentos recebidos.

$ cat lista-de-usuários.txt | xargs mkdir

Neste exemplo o comando xargs irá criar um diretório executando o mkdir com o nome da cada usuário contido no arquivo lista-de-usuários.txt.

$ ls -1 *.gz > lista-de-arquivo-zipado.txt

$ cat lista-de-arquivo-zipado.txt | guzip

Neste exemplo a primeira linha lista todos os arquivos com sufixo .gz e manda para o arquivo lista-de-arquivo-zipado.txt.

Na segunda linha o xargs irá executar o “gunzip” com cada arquivo da lista.

Assista o vídeo abaixo que não vai restar nenhuma dúvida:

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=130

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp