Carreira Dev

7 dez, 2012

DicasLPI 103.4: Fluxos, pipes (canalização) e redirecionamento de saída – Parte 02

Publicidade

Prosseguindo no objetivo, iremos abordar sobre canalização (pipes) com uma breve descrição e exemplos para um melhor entendimento. Então,vamos ao que interessa!

Pipes

O pipe é utilizado para enviar a saída de um programa para a entrada do outro, com intuito, de juntar dois ou mais comandos. Vamos aos exemplos:

# grep “world” he* | less

O comando acima irá realizar uma pesquisa em todos os arquivos cujos nomes comecem com “he”, em busca de linhas contendo a palavra “world”. Ao executar o comando acima, a saída será direcionada para a entrada padrão de less. O shell cuida do funcionamento interno dessa operação, que é invisível para o usuário. Os pipes possuem uma utilização em diversos comandos.  Quando se utiliza dois comandos conjuntamente, a operação resultante é conhecida como pipeline ou stream de texto, implicando o fluxo de texto de um comando para o seguinte.

À media que vai atingindo um conhecimento, o usuário irá começar a usar pipelines frequentemente na extração de informações de arquivos textuais.

Exemplo: visualizar uma lista classificada de números de inodes dos arquivos presentes no seu diretório atual:

ls -i * | awk ‘{print $1}’ | sort -nu | less

Utilizamos o awk em uma pipeline para extrair o número do inode da saída de ls e, então, enviá-lo para o comando sort e, finalmente, enviá-lo para exibição.

O conceito de pipeline, é um recurso que permite obter de maneira fácil e rápida as informações desejadas.

Usando o comando tee

Em alguns casos, você desejará rodar um programa e enviar o seu output (saída) para um arquivo e, ao mesmo tempo, visualizar a saída na tela. O utilitário tee é útil para essa situação.

# cat /etc/passwd | tee bkp_passwd

O conteúdo de /etc/passwd será mostrado na tela e copiado no arquivo bkp_passwd.