A magia do pipe
Este Artigo foi publicado originalmente em 15/05/2018
Vários sistemas operacionais tem suporte ao pipe no prompt de comandos. Linux, macOs, e windows são alguns destes sistemas. O conceito do comando é simples, mas seu uso permite a construção de soluções para problemas mais complexos, sem a necessidade de se criar um script para resolver.
O que é o pipe?
O pipe ( | ) é um programa do interpretador do sistema operacional. Ele faz a ligação do resultado de um comando como entrada de dados de um segundo comando. Usando um exemplo simples:
cat /etc/passwd | cut -d":" -f1
Este comando simples lê os dados do arquivo /etc/passwd, mas ao invés do resultado ser mostrado na tela, ele é redirecionado para o comando cut, que por sua vez seleciona apenas o nome do usuário para mostrar na tela.
Caso seja necessário encaminhar o resultado do comando cut para outro programa, podemos adicionar outro pipe ao final comando, para alterar todos os nomes para maiúsculo por exemplo, o comando poderia ser escrito da seguinte forma:
cat /etc/passwd | cut -d":" -f1 | tr '[:lower;]' '[:upper:]'
Ué, mas é só isso?
Sim, jovem padawan, é "Só" isso mesmo....
Mas este encadeamento de comandos dá flexibilidade e poder a quem o utiliza, permitindo realizar tarefas de forma mais simples e direta, sem a necessidade de armazenar cada retorno em um arquivo e ir fazendo a leitura a cada linha de comando.
Quando comecei a trabalhar com linux sem a interface gráfica e bem antes de aprender a programar, eu não sabia nem como fazer o redirecionamento para arquivos, e muito menos colocar os comandos dentro de um arquivo.sh e mandar executar. Essa descoberta do comando pipe me abriu as portas para meu início da programação, onde eu pude resolver problemas reais da empresa onde trabalhava. Compreender como o pipe funciona me deu conhecimento para compreender redirecionamentos, entrada e saída de dados, e até a execução de programas por linha de comando (Até então, meu conhecimento se limitava a clicar duas vezes sobre o ícone, ou buscar dentro do "explorer").