Commande de tuyaux Linux

Commande de tuyaux Linux
Cette commande «Pipe» est facilement disponible sur les plates-formes Unix / Linux. Cette commande tue la sortie de la commande précédente vers la commande suivante. Il y a littéralement des tonnes de situations où cette méthode offre une valeur sérieuse.Avant de sauter plus profondément, il y a quelque chose à savoir. Chaque programme du système UNIX / Linux a 3 flux de données intégrés.
  • Stdin (0) - entrée standard
  • Stdout (1) - sortie standard
  • Stderr (2) - Erreur standard

Lorsque nous allons travailler avec des astuces «Pipe», «Pipe» prendra le stdout d'une commande et le transmettra au stdin de la commande suivante.

Voyons certaines des façons les plus courantes que vous puissiez incorporer la commande «Pipe» dans votre utilisation quotidienne.

Commande de pipe

Utilisation de base

Il vaut mieux développer la méthode de travail de «Pipe» avec un exemple en direct, à droite? Commençons. La commande suivante indiquera «Pacman», le gestionnaire de packages par défaut pour Arch et toutes les distros basés sur l'arc, pour imprimer tous les packages installés sur le système.

Pacman -qqe

C'est une très longue liste de packages. Comment, de ramasser seulement quelques composants? Nous pourrions utiliser «grep». Mais comment? Une façon consisterait à vider la sortie dans un fichier temporaire, «grep» la sortie souhaitée et supprimer le fichier. Cette série de tâches, en soi, peut être transformée en script. Mais nous ne scriptons que de très grandes choses. Pour cette tâche, appelons la puissance du «tuyau»!

Pacman -qqe | grep

Génial, n'est-ce pas? Le «|» Le signe est l'appel à la commande «Pipe». Il attrape le stdout de la section gauche et le nourrit dans le stdin de la section droite.

Dans l'exemple susmentionné, la commande «Pipe» a réellement passé la sortie à la fin de la partie «grep». Voici comment ça se passe.

Pacman -qqe> ~ / Desktop / Pacman_package.SMS
Grep Python ~ / Desktop / Pacman_package.SMS

Tuyauterie multiple

Fondamentalement, il n'y a rien de spécial avec l'utilisation avancée de la commande «Pipe». C'est entièrement à vous sur la façon de l'utiliser.

Par exemple, commençons par empiler plusieurs tuyaux.

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

La sortie de commande Pacman est filtrée de plus en plus par «grep» à travers une série de tuyauterie.

Parfois, lorsque nous travaillons avec le contenu d'un fichier, cela peut être vraiment, vraiment grand. Découvrir le bon endroit de notre entrée souhaitée peut être difficile. Recherchons toutes les entrées qui incluent les chiffres 1 et 2.

démo de chat.txt | grep -n 1 | grep -n 2

Manipulation de la liste des fichiers et répertoires

Que faire lorsque vous traitez avec un répertoire avec des tonnes de fichiers? C'est assez ennuyeux de faire défiler toute la liste. Bien sûr, pourquoi ne pas le rendre plus supportable avec un tuyau? Dans cet exemple, consultons la liste de tous les fichiers du dossier «/ usr / bin».

ls -l | plus

Ici, «LS» imprime tous les fichiers et leurs informations. Ensuite, «Pipe» le passe à «plus» pour travailler avec cela. Si vous ne le saviez pas, «plus» est un outil qui transforme les textes en une seule vue à la fois. Cependant, c'est un ancien outil et selon la documentation officielle, «moins» est plus recommandé.

ls -l / usr / bin | moins

Tri de sortie

Il y a un outil intégré «tri» qui prendra la saisie du texte et les triera. Cet outil est un vrai joyau si vous travaillez avec quelque chose de vraiment désordonné. Par exemple, j'ai obtenu ce fichier plein de chaînes aléatoires.

démo de chat.SMS

Pipez-le simplement pour «trier».

démo de chat.txt | trier

C'est mieux!

Imprimer les matchs d'un modèle particulier

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

C'est une commande assez tordue, à droite? Au début, «LS» publie la liste de tous les fichiers du répertoire. L'outil «Find» prend la sortie, recherche «.TXT "Files et convocation" Grep "pour rechercher" 00110011 ". Cette commande vérifiera chaque fichier texte dans le répertoire avec l'extension TXT et recherchera les matchs.

Imprimer le contenu d'une plage particulière

Lorsque vous travaillez avec un gros fichier, il est courant d'avoir la nécessité de vérifier le contenu d'une certaine gamme. Nous pouvons faire exactement cela avec un combo intelligent de «chat», de «tête», de «queue» et bien sûr de «pipe». L'outil «tête» sortira la première partie d'un contenu et de la «queue» sortit la dernière partie.

chat | tête -6
chat | queue -6

Valeurs uniques

Lorsque vous travaillez avec des sorties en double, cela peut être assez ennuyeux. Parfois, les contributions en double peuvent causer de graves problèmes. Dans cet exemple, jetons «Uniq» sur un flux de texte et enregistrons-le dans un fichier séparé.

Par exemple, voici un fichier texte contenant une grande liste de nombres qui font 2 chiffres longs. Il y a certainement des contenus en double ici, à droite?

Duplicate de chat.txt | trier

Maintenant, effectuons le processus de filtrage.

Duplicate de chat.txt | Trier | Uniq> unique.SMS

Découvrez la sortie.

chauve-souris unique.SMS

Regarde mieux!

Tuyaux d'erreur

Ceci est une méthode de tuyauterie intéressante. Cette méthode est utilisée pour rediriger le stderr vers Stdout et procéder avec la tuyauterie. Ceci est indiqué par «| &» Symbole (sans les citations). Par exemple, créons une erreur et envoyons la sortie à un autre outil. Dans cet exemple, je viens de taper une commande aléatoire et de passer l'erreur à «grep».

adsfds | & grep n

Dernières pensées

Alors que «Pipe» lui-même est de nature assez simpliste, la façon dont il fonctionne offre une façon très polyvalente d'utiliser la méthode de manière infinie. Si vous êtes dans les scripts bash, alors c'est beaucoup plus utile. Parfois, vous pouvez simplement faire des choses folles! En savoir plus sur les scripts bash.