accueil > Environnement & utilitaires > pipe(|)

Maîtriser le Pipe (|) : L'outil essentiel pour connecter les commandes

Le pipe (tuyau) est un mécanisme dans les shells Linux/Unix qui permet de connecter deux ou plusieurs commandes, transmettant la sortie standard d'une commande à l'entrée standard de la commande suivante. C'est l'une des fonctionnalités clés du shell, utilisée pour diviser des tâches complexes en plusieurs commandes simples et les traiter séquentiellement. Il fait circuler les données dans une seule direction, comme un tuyau d'eau.

Présentation du Pipe

Le pipe fait référence au symbole '|' utilisé dans les shells Linux/Unix, qui transmet la sortie de la commande de gauche à l'entrée de la commande de droite. Cela permet aux utilisateurs de combiner plusieurs commandes pour construire des pipelines de traitement de données puissants et flexibles.

Fonctionnement du Pipe

La sortie standard (stdout) de la première commande est stockée dans un tampon temporaire créé par le shell, et le contenu de ce tampon est transmis à l'entrée standard (stdin) de la deuxième commande. Ce processus peut relier plusieurs commandes pour former un pipeline.

Caractéristiques du Pipe

  • Flux unidirectionnel: Les données circulent toujours de gauche à droite, dans une seule direction.
  • Réutilisation des données: Les résultats de la commande précédente peuvent être immédiatement utilisés comme entrée pour la commande suivante.
  • Modularisation: Les tâches grandes et complexes peuvent être décomposées et traitées par des commandes petites et simples.
  • Efficacité: Il est efficace car il traite les données en mémoire sans avoir besoin de créer des fichiers temporaires.

Exemples d'utilisation du Pipe

Découvrez la puissance du pipe à travers des exemples pratiques de combinaison de plusieurs commandes.

Rechercher un motif spécifique dans une liste de fichiers

ls -l | grep json

Affiche la liste des fichiers du répertoire actuel avec la commande `ls -l`, puis utilise `grep` pour rechercher uniquement les lignes contenant la chaîne 'json'. Ce pipeline transmet la sortie de `ls -l` à l'entrée de `grep`.

Trouver un processus spécifique dans la liste des processus

ps aux | grep nginx | grep -v grep

Vérifie la liste de tous les processus avec la commande `ps aux`, puis utilise `grep` pour filtrer uniquement les processus 'nginx'. Dans ce cas, le processus `grep nginx` doit être exclu car `grep` lui-même est un processus.

Trouver les 5 plus gros fichiers

ls -lh | sort -rh | head -5

Affiche la liste détaillée des fichiers avec `ls -lh`, puis trie les fichiers par taille (`-h` pour un format lisible, `-r` pour un ordre décroissant) avec `sort -rh`. Enfin, affiche les 5 premiers résultats avec `head -5`.

Compter le nombre de fichiers .txt dans le répertoire actuel

ls | grep '.txt' | wc -l

Affiche la liste des fichiers avec `ls`, filtre uniquement les fichiers avec l'extension '.txt' avec `grep`. Enfin, compte le nombre de lignes filtrées (`-l` pour les lignes) avec `wc -l` pour obtenir le nombre total de fichiers.

Supprimer des fichiers en combinant pipe et xargs

find . -name '*.log' | xargs rm

Recherche des fichiers avec un motif spécifique à l'aide de la commande `find`, puis transmet la liste des fichiers trouvés comme arguments à la commande `rm` via `xargs` pour les supprimer. Le pipe seul ne peut pas facilement passer des arguments à `rm`, d'où l'utilisation conjointe avec `xargs`.

Différence avec la Redirection

Le pipe et la redirection, souvent utilisés ensemble, sont similaires dans leur capacité à contrôler le flux de données, mais ils présentent des différences importantes dans leur fonctionnement.

Pipe vs. Redirection

  • Pipe (`|`): Connecte la **sortie** d'une commande à l'**entrée** d'une autre commande.
  • Redirection (`>`, `>>`): Envoie la **sortie** d'une commande vers un fichier, ou le contenu d'un fichier vers l'**entrée** d'une commande.

Exemple de Redirection

ls -l > file_list.txt

Enregistre le résultat de `ls -l` dans le fichier `file_list.txt`. Il n'est pas utilisé comme entrée pour une autre commande, mais est directement écrit dans le fichier.


commandes associées

Des commandes fonctionnellement similaires ou souvent utilisées ensemble.


Commandes de la même catégorie