Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Pipes em bash
Colaboração: Rodrigo Bernardo Pimentel
Data de Publicação: 06 de Setembro de 2000
As ferramentas de Unix surgiram com o conceito de "seja simples, faça bem o que tem a fazer, saiba conversar com outras aplicações". Bem, parte dessa última premissa é realizada com o uso de "pipes". "pipes" (utilizados com o caracter '|') conectam a saída de uma programa à entrada de outro. Ou seja, funcionam como um "tubo" ou "cano" mesmo.
Por exemplo: o comando "cat" joga na saída padrão o conteúdo de um arquivo. O comando "cut" mostra só uma parte especificada do texto que lhe é passado como entrada padrão. Assim, para conseguirmos uma lista de usuários do sistema, podemos fazer
[rbp@muppets ~]$ cat /etc/passwd | cut -d : -f 1=
O comando "cat /etc/passwd" jogaria na tela todas as linhas do arquivo /etc/passwd.
O comando "cut -d : -f 1" divide cada linha da entrada utilizando o ":" (dois pontos) como separador e pega o primeiro campo (com "-d :" e "-f 1" respectivamente). Assim, em uma linha do /etc/passwd normal, os campos seriam
rbp:x:500:500:Rodrigo Bernardo Pimentel:/home/rbp:/bin/bash 1 2 3 4 5 6 7
Ou seja, o primeiro campo é o login.
Assim, o pipe usa a saída do primeiro comando para fornecer uma entrada para o segundo, e o resultado é o campo de login de cada linha do /etc/passwd.
Outro exemplo, envolvendo mais pipes (ou seja, você pode usar mais de um pipe de uma vez):
[rbp@muppets ~]$ w | grep '^rbp ' | wc -l = 7 [rbp@muppets ~]$ =
O comando "w" lista os usuários conectados na máquina. O comando "grep '^rbp '" pega essa lista e mostra só as que começem com "rbp " (para não pegarmos substrings como 'rbpsdgf'). Finalmente, o comando "wc -l" conta essas linhas. Assim, sei que, no momento, o usuário rbp tem 7 shells abertos na máquina (dia fraco... ;) .
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.




