Comando Linux Pipe

Comando Linux Pipe
Este comando "Pipe" está prontamente disponível nas plataformas Unix/Linux. Este comando transa a saída do comando anterior para o próximo comando. Existem literalmente toneladas de situações em que esse método oferece um valor sério.Antes de pular mais fundo, há algo a saber. Cada programa no sistema UNIX/Linux possui 3 fluxos de dados embutidos.
  • Stdin (0) - entrada padrão
  • Stdout (1) - saída padrão
  • Stderr (2) - erro padrão

Quando vamos trabalhar com truques "Pipe", "Pipe" assumirá o stdout de um comando e o passa para o stdin do próximo comando.

Vamos conferir algumas das maneiras mais comuns de incorporar o comando "Pipe" em seu uso diário.

Comando de tubo

Uso básico

É melhor elaborar o método de trabalho de "Pipe" com um exemplo ao vivo, certo? Vamos começar. O comando a seguir informará "Pacman", o gerenciador de pacotes padrão do Arch e todas as distribuições baseadas em arco, para imprimir todos os pacotes instalados no sistema.

Pacman -qqe

É uma lista muito longa de pacotes. Como, sobre pegar apenas alguns componentes? Poderíamos usar "grep". Mas como? Uma maneira seria despejar a saída em um arquivo temporário, “Grep” a saída desejada e excluir o arquivo. Esta série de tarefas, por si só, pode ser transformada em um script. Mas nós apenas script para coisas muito grandes. Para esta tarefa, vamos chamar o poder de "tubo"!

Pacman -qqe | grep

Incrível, não é? O “|” sinal é a chamada para o comando "tubo". Ele agarra o stdout da seção esquerda e a alimenta no stdin da seção direita.

No exemplo acima mencionado, o comando "Pipe" realmente passou a saída no final da parte "grep". Aqui está como isso acontece.

Pacman -QQE> ~/Desktop/Pacman_package.TXT
Grep Python ~/Desktop/Pacman_package.TXT

Tubulação múltipla

Basicamente, não há nada de especial com o uso avançado do comando "Pipe". Depende de você sobre como usá -lo.

Por exemplo, vamos começar empilhando várias tubulações.

Pacman -qqe | grep p | grep t | grep py

A saída do comando do Pacman é filtrada cada vez mais por "Grep" através de uma série de tubulação.

Às vezes, quando estamos trabalhando com o conteúdo de um arquivo, pode ser muito, muito grande. Descobrir o lugar certo de nossa entrada desejado pode ser difícil. Vamos procurar todas as entradas que incluem dígitos 1 e 2.

Demonstração do CAT.txt | grep -n 1 | grep -n 2

Manipulando a lista de arquivos e diretórios

O que fazer quando você está lidando com um diretório com toneladas de arquivos? É muito chato percorrer toda a lista. Claro, por que não torná -lo mais suportável com tubo? Neste exemplo, vamos conferir a lista de todos os arquivos na pasta "/usr/bin".

ls -l | mais

Aqui, “LS” imprime todos os arquivos e suas informações. Então, "Pipe" passa para "mais" para trabalhar com isso. Se você não sabia, "mais" é uma ferramenta que transforma textos em uma visão rigorosa de cada vez. No entanto, é uma ferramenta antiga e, de acordo com a documentação oficial, "menos" é mais recomendado.

ls -l /usr /bin | menos

Classificação de saída

Há uma ferramenta interna "classificada" que levará a entrada de texto e as classificará. Esta ferramenta é uma verdadeira jóia se você estiver trabalhando com algo realmente bagunçado. Por exemplo, eu peguei este arquivo cheio de strings aleatórios.

Demonstração do CAT.TXT

Basta dar um punho para "classificar".

Demonstração do CAT.txt | organizar

Isso é melhor!

Impressão correspondências de um padrão particular

ls -l | encontrar ./ -Type f -name "*.txt "-exec grep 00110011 \;

Este é um comando bastante distorcido, certo? No começo, "LS" produz a lista de todos os arquivos no diretório. A ferramenta "Find" leva a saída, pesquisando ".arquivos txt ”e convoca“ Grep ”para pesquisar“ 00110011 ”. Este comando verificar cada arquivo de texto no diretório com a extensão txt e procurar as correspondências.

Imprima o conteúdo do arquivo de um determinado intervalo

Quando você está trabalhando com um grande arquivo, é comum ter a necessidade de verificar o conteúdo de um determinado intervalo. Podemos fazer exatamente isso com uma combinação inteligente de "gato", "cabeça", "cauda" e, claro, "tubo". A ferramenta "Head" gera a primeira parte de um conteúdo e a "cauda" produz a última parte.

gato | Cabeça -6
gato | cauda -6

Valores únicos

Ao trabalhar com saídas duplicadas, pode ser muito irritante. Às vezes, a entrada duplicada pode causar problemas sérios. Neste exemplo, vamos lançar "uniq" em um fluxo de texto e salvá -lo em um arquivo separado.

Por exemplo, aqui está um arquivo de texto que contém uma grande lista de números com 2 dígitos. Definitivamente existem conteúdos duplicados aqui, certo?

Duplicado de gato.txt | organizar

Agora, vamos realizar o processo de filtragem.

Duplicado de gato.txt | classificar | Uniq> único.TXT

Confira a saída.

morcego único.TXT

Parece melhor!

Tubos de erro

Este é um método de tubulação interessante. Este método é usado para redirecionar o stderr para Stdout e prosseguir com a tubulação. Isso é indicado pelo símbolo “| &” (sem as citações). Por exemplo, vamos criar um erro e enviar a saída para outra ferramenta. Neste exemplo, acabei de digitar algum comando aleatório e passei o erro para "grep".

adsfds | & grep n

Pensamentos finais

Enquanto o "Pipe" em si é bastante simplista de natureza, a maneira como funciona oferece uma maneira muito versátil de utilizar o método de maneiras infinitas. Se você gosta de scripts de bash, é muito mais útil. Às vezes, você pode fazer coisas malucas! Saiba mais sobre scripts de basquete.