De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)