redirecionamento Archives - Certificação Linux
Tag Archives: redirecionamento
Posts tagged "redirecionamento"
Redirecionamentos e Condutores no Linux
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
Saída de erros stderr -> 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.
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 [email protected] < 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.
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.
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.
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.
TABELA – Símbolos Coringa (Wildcards)
? 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".
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:
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.
$ 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: Adiciona no final do arquivo o que foi recebido ao invés de gravar por cima.
$ 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.
$ 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.
-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
$ 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.