Les pipes sont un outil puissant du système d’ex­ploi­ta­tion open source de Linux. Les pipes Linux per­met­tent par exemple de traiter de manière sé­quen­tielle une série de commandes liées à une base de données ou de déplacer ef­fi­ca­ce­ment des données d’une commande à une autre. L’avantage ? Les processus complexes sont sim­pli­fiés, car les commandes autonomes se ras­semblent pour créer une véritable « équipe de commande ». Lisez cet article pour découvrir comment fonc­tion­nent les pipes sous Linux et pourquoi cette commande est si utile.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Que sont les pipes Linux ?

Le mot « pipe » vient de l’anglais « pipeline », terme également utilisé en français. En in­for­ma­tique, un pipe désigne un flux de données exécuté entre deux processus étroi­te­ment liés, ou n’ayant au contraire aucune origine commune. Cela signifie que le résultat de sortie d’un programme peut servir d’entrée à un autre. Cela permet, entre autres, de diviser des problèmes complexes en sous-problèmes plus petits, et de profiter ainsi d’une meilleure vue d’ensemble.

Il existe deux types de pipes dif­fé­rents sous Linux : les pipes anonymes, ou « Unnamed Pipes » et les pipes nommés, ou « Named Pipes ».

Les pipes sans nom (ou anonymes) ne sont utilisés qu’entre des processus étroi­te­ment liés, alors que les pipes nommés ou FIFO (basés sur le principe « First In – First Out », lit­té­ra­le­ment « premier arrivé, premier sorti ») assurent la com­mu­ni­ca­tion entre deux processus sans aucun lien entre eux, basés sur des or­di­na­teurs dif­fé­rents au sein d’un même réseau. Con­trai­re­ment aux pipes sans nom, les pipes nommés per­met­tent aussi une com­mu­ni­ca­tion bi­di­rec­tion­nelle, et pas seulement uni­di­rec­tion­nelle (dans laquelle un processus écrit, tandis que l’autre ne peut que lire).

Note
Bien entendu, la com­bi­nai­son logique de ces commandes est monnaie courante en in­for­ma­tique. Avec la commande ln de Linux il est par exemple possible de créer un lien vers un fichier ou un ré­per­toire de manière ex­trê­me­ment simple. Lisez notre article de pré­sen­ta­tion pour découvrir les autres commandes Linux im­por­tantes que vous devez ab­so­lu­ment connaître.

Syntaxe des pipes Linux et exemples d’ap­pli­ca­tion

Pour utiliser cor­rec­te­ment les pipes sous Linux, il faut d’abord en connaître la syntaxe. Découvrez ci-dessous la structure de la commande pipe, puis des exemples de la forme qu’elle peut prendre dans votre terminal ou dans votre barre de commandes.

Note
Nos ins­truc­tions font référence aux ins­tal­la­tions Ubuntu les plus répandues, qui sont dis­po­nibles gra­tui­te­ment et mises à jour ré­gu­liè­re­ment.
Commande-1 | Commande-2 | …| Commande-N

Comme vous pouvez le voir ci-dessus, la syntaxe d’un pipe sans nom est re­la­ti­ve­ment simple. Elle contient le symbole « | », qui sert par exemple à séparer deux commandes. Le pipe de l’exemple ci-dessous ne reste valide que tem­po­rai­re­ment.

$ cat contents.txt |grep file
0 Aug  9 13:55  file1
0 Aug  9 13:55  file2
0 Aug  9 13:55  file3
0 Aug  9 13:55  file4
0 Aug  9 13:55  file5
$ cat contents.txt |grep "file"|awk ’{print $8}’
file1
file2
file3
file4
file5
$ cat contents.txt |wc -l
8
$

« contents.txt » renferme la liste de tous les fichiers d’un ré­per­toire donné, plus pré­ci­sé­ment la sortie de la commande ls -al. Les noms de fichiers de « contents.txt » sont alors in­ter­ro­gés à l’aide du mot-clé « file » par l’in­ter­mé­diaire du pipe, de sorte que la sortie de la commande cat est utilisée comme entrée pour la commande grep. Nous re­di­ri­geons ensuite la commande awk, qui affiche la 8e colonne de la sortie filtrée de la commande grep. Il est également possible de compter le nombre de lignes de « contents.txt » grâce à la commande wc -l.

Conseil

La commande grep peut être utilisée pour re­cher­cher des chaînes dans les fichiers de code et les fichiers journaux. Si vous souhaitez sim­ple­ment re­cher­cher un fichier Linux dans la barre de commandes, vous pouvez utiliser cette commande.

Un pipe Linux sans nom n’est valable que pour un processus, alors qu’un pipe Linux nommé garantit la validité constante de votre commande, et ce, jusqu’à ce que vous arrêtiez votre système ou le sup­pri­miez. Ici, la syntaxe correcte est donc la suivante :

mkfifo <pipe-name>

ou

mknod p <pipe-name>

Imaginons que l’un de vos processus est en cours d’exécution dans un terminal et produit une sortie ; si vous souhaitez trans­fé­rer cette sortie vers un deuxième terminal, un pipe nommé peut ici vous être d’une grande aide. Pour rediriger la sortie standard de n’importe quelle commande vers un autre processus, vous pouvez faire appel au symbole « > ». Pour rediriger l’entrée standard de n’importe quelle commande, c’est le symbole « < » qui est tout indiqué. Dans l’exemple suivant, le pipe est nommé dans le premier terminal.

$ mkfifo pipe-nommé
$ ls > pipe-nommé

Il ne vous reste plus qu’à entrer le code suivant dans le deuxième terminal pour voir la sortie.

$ cat < pipe-nommé

La prochaine fois que vous tra­vail­le­rez avec des commandes au niveau de votre terminal Linux et que vous voudrez déplacer des données d’une commande à une autre, l’uti­li­sa­tion d’un pipe anonyme ou nommé pourra nor­ma­le­ment vous y aider, et ce, de manière rapide et facile.

Conseil
Vous utilisez le système d’ex­ploi­ta­tion Linux et cherchez une offre complète pour votre hé­ber­ge­ment Web, afin d’écrire vous-même toutes les parties du code de votre programme ou de profiter d’un système modulaire intuitif ? L’hé­ber­ge­ment Linux de IONOS vous offre des per­for­mances évo­lu­tives, une pro­tec­tion DDoS, de la géo-re­don­dance et bien d’autres avantages.
Aller au menu principal