Linux o que é pipe? O que são pipes e como usar?

O que é um Pipe no Linux?

O Pipe é um comando usado em sistemas operacionais GNU/Linux que permite usar dois ou mais comandos, de forma que a saída de um comando sirva como entrada para o próximo.

Em resumo, a saída de cada processo diretamente como entrada para o próximo como um pipeline.

O símbolo ‘|’ denota um cano. Pipes ajudam a mash-up de dois ou mais comandos ao mesmo tempo e executá-los consecutivamente.

Você pode usar comandos poderosos que podem executar tarefas complexas em um instante.

Executo os comandos:

cd ~/Documentos/

mkdir -v TESTES

cd TESTES

touch nomedoarquivo.txt

echo -e “Morcego \nBat \nBode \napple \nGoat \nMaçã \nApple \nComer \nEat \neat \n9 Goat \n1 Eat \n4 Bat” > nomedoarquivo.txt

Vou entender isso com exemplos:

cat nomedoarquivo.txt | less (para sair teclo q)

cat nomedoarquivo.txt | pg (este não é muito usado)

cat nomedoarquivo.txt | more (este é o mais usado)

Resultado exemplo:

~/Documentos/TESTES:$ cat nomedoarquivo.txt | more
Morcego
Bat
Bode
apple
Goat
Maçã
Apple
Comer
Eat
eat
9 Goat
1 Eat
4 Bat
~/Documentos/TESTES:$

Quando você usa o comando ‘cat’ para exibir um arquivo que abrange várias páginas, o prompt salta rapidamente para a última página do arquivo e você não vê o conteúdo no meio. Para evitar isso, você pode canalizar a saída do comando ‘cat’ para ‘less’, que mostrará apenas um tamanho de rolagem de conteúdo por vez.

O comando grep é GNU. Execute:

grep –help

Relate os problemas para: bug-grep@gnu.org
página de GNU grep: <_ http://www.gnu.org=”www.gnu.org&#8221; software=”software” grep=”grep” _=”_”>
Ajuda geral sobre uso de software GNU: <_ http://www.gnu.org=”www.gnu.org&#8221; gethelp=”gethelp” _=”_”>

O comando grep:

grep ‘Apple’ nomedoarquivo.txt

Resultado é algo parecido com:

~/Documentos/TESTES:$ grep ‘Apple’ nomedoarquivo.txt
Apple
~/Documentos/TESTES:$

grep ‘Eat’ nomedoarquivo.txt

Resultado é algo parecido com:

~/Documentos/TESTES:$ grep ‘Eat’ nomedoarquivo.txt
Eat
~/Documentos/TESTES:$

Aqui, o comando grep pesquisou no arquivo a string ‘Apple’ e ‘Eat’.

As seguintes opções podem ser usadas com este comando.

Opção / Função (da opção): -v, -c, -n, -i, -l

A opção -v Tem a função de mostrar todas as linhas que não correspondem à sequência pesquisada,

Executo:
grep -v ‘Eat’ nomedoarquivo.txt

-c Exibe apenas a contagem de linhas correspondentes,

Executo:
grep -c ‘Eat’ nomedoarquivo.txt

-n Mostra a linha correspondente e seu número,

Executo:
grep -n ‘Eat’ nomedoarquivo.txt

-i Corresponde a maiúsculas e minúsculas,

Executo:
grep -i ‘Eat’ nomedoarquivo.txt

-l Mostra apenas o nome do arquivo com a sequência.

Executo:
grep -l ‘Eat’ nomedoarquivo.txt

Vamos tentar a primeira opção ‘-i’ no mesmo arquivo usado acima

grep -i ‘Bat’ nomedoarquivo.txt

Usando a opção ‘i’, o grep filtrou a string ‘a’ (sem distinção entre maiúsculas e minúsculas) de todas as linhas.

O comando ‘grep’ – Suponha que você queira pesquisar uma informação específica no código postal de um arquivo de texto. Você pode folhear manualmente o conteúdo para rastrear as informações. Uma opção melhor é usar o comando grep. Ele digitalizará o documento para obter as informações desejadas e apresentará o resultado no formato desejado. Sintaxe: grep search_string.

OBS:

Usando grep com o comando cat que também é GNU. Faz parte do pacote coreutils e sem o pacote coreutils nenhum sistema operacional gratúito baseado no kernel Linux funciona.

Imagine o que seria dos montes de scripts (códigos) escritos durante uns vinte anos até o dia de hoje, se os comandos do pacote coreutils fossem removidos?

Continuando:

cat nomedoarquivo.txt | grep -i a

Resultado é algo parecido com:

~/Documentos/TESTES:$ cat nomedoarquivo.txt | grep -i a
Bat
apple
Goat
Maçã
Apple
Eat
eat
~/Documentos/TESTES:$

Executo:

cat nomedoarquivo.txt | grep -v a

cat nomedoarquivo.txt | grep -c a

cat nomedoarquivo.txt | grep -n a

cat nomedoarquivo.txt | grep -l a

Resultado é algo parecido com:

~/Documentos/TESTES:$ cat nomedoarquivo.txt | grep -v a
Morcego
Bode
Apple
Comer
~/Documentos/TESTES:$ cat nomedoarquivo.txt | grep -c a
6
~/Documentos/TESTES:$ cat nomedoarquivo.txt | grep -n a
2:Bat
4:apple
5:Goat
6:Maçã
9:Eat
10:eat
~/Documentos/TESTES:$ cat nomedoarquivo.txt | grep -l a
(entrada padrão)
~/Documentos/TESTES:$

O comando ‘sort’ – Este comando ajuda a classificar o conteúdo de um arquivo em ordem alfabética. A sintaxe para este comando é:

sort nome-do-arquivo

Considere o conteúdo de um arquivo. Comando GNU/Linux/Unix, Grep & Sort – Usando o comando de classificação.

OBS:

O comando sort é GNU. Veja:

Página de ajuda do GNU coreutils: <_ http://www.gnu.org=”www.gnu.org&#8221; software=”software” coreutils=”coreutils” _=”_”>
Relate erros de tradução para <_ translationproject.org=”translationproject.org” team=”team” pt_br.html=”pt_br.html”>
Documentação completa em <_ http://www.gnu.org=”www.gnu.org&#8221; software=”software” coreutils=”coreutils” sort=”sort”>
ou disponível localmente via: info “(coreutils) sort invocation”

Executo o comando sort e o Resultado é algo parecido com:

~/Documentos/TESTES:$ sort nomedoarquivo.txt
apple
Apple
Bat
Bode
Comer
eat
Eat
Goat
Maçã
Morcego
~/Documentos/TESTES:$

O comando de classificação ‘sort’ possui três opções que podem ser usadas com ele e são listadas aqui. Opção – Função:

-r Inverte a classificação.
-n Classifica numericamente.
-f Classificação insensível a maiúsculas e minúsculas.

Executo:

sort -r nomedoarquivo.txt

sort -n nomedoarquivo.txt

sort -f nomedoarquivo.txt

Resultado é algo parecido com:

~/Documentos/TESTES:$ sort -r nomedoarquivo.txt
Morcego
Maçã
Goat
Eat
eat
Comer
Bode
Bat
Apple
apple
~/Documentos/TESTES:$ sort -n nomedoarquivo.txt
apple
Apple
Bat
Bode
Comer
eat
Eat
Goat
Maçã
Morcego
~/Documentos/TESTES:$ sort -f nomedoarquivo.txt
Apple
apple
Bat
Bode
Comer
eat
Eat
Goat
Maçã
Morcego
~/Documentos/TESTES:$

O que é um filtro? O Linux possui muitos comandos de filtro como awk, grep, sed, spell e wc. Um filtro recebe a entrada de um comando, faz algum processamento e fornece a saída. Quando você canaliza dois comandos, a saída “filtrada” do primeiro comando é fornecida para o próximo. Queremos destacar apenas as linhas que não contêm o caractere ‘a’, mas o resultado deve estar na ordem inversa. Para isso, a seguinte sintaxe pode ser usada:

cat nomedoarquivo.txt | grep -v a | sort – r

E para terminar lembro que:

Pipes (tubos) ‘|’ enviam a saída de um comando como entrada de outro comando. O filtro recebe a entrada de um comando, faz algum processamento e fornece a saída. O comando grep pode ser usado para encontrar cadeias e valores em um documento de texto. A canalização através do grep deve ser um dos comandos mais comuns.

O ‘sort’, classifica menos o conteúdo de um arquivo em ordem alfabética; comandos pg e more são usados para dividir um arquivo longo em bits legíveis. Tudo isso graças ao projeto GNU, que oferece o pacote coreutils gratuitamente a todos.

Não esqueço o Kernel Linux. Sem o Kernel o meu computador nem meu smartphone funcionariam. Sem o núcleo do GNU não existe um sistema gratuito do GNU/Linux. Ah e o meu smartphone também possui shell scripts que usam o pacote coreutils que permitem o seu ótimo funcionamento. O sistema Android usa o Kernel Linux alterado e usa também o pacote coreutils do projeto GNU.

Sem scripts não dá para o meu smartphone nem fazer chamadas telefônicas.

A base de tantas maravilhas do mundo atual bem aqui eu posso ver, escrever alguns scripts com funções, loops que funcionam (as vezes) e me divertem.