Pipes Linux : explication
Les pipes sont un outil puissant du système d’exploitation open source de Linux. Les pipes Linux permettent par exemple de traiter de manière séquentielle une série de commandes liées à une base de données ou de déplacer efficacement des données d’une commande à une autre. L’avantage ? Les processus complexes sont simplifiés, car les commandes autonomes se rassemblent pour créer une véritable « équipe de commande ». Lisez cet article pour découvrir comment fonctionnent les pipes sous Linux et pourquoi cette commande est si utile.
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Que sont les pipes Linux ?
Le mot « pipe » vient de l’anglais « pipeline », terme également utilisé en français. En informatique, un pipe désigne un flux de données exécuté entre deux processus étroitement 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 diffé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 étroitement liés, alors que les pipes nommés ou FIFO (basés sur le principe « First In – First Out », littéralement « premier arrivé, premier sorti ») assurent la communication entre deux processus sans aucun lien entre eux, basés sur des ordinateurs différents au sein d’un même réseau. Contrairement aux pipes sans nom, les pipes nommés permettent aussi une communication bidirectionnelle, et pas seulement unidirectionnelle (dans laquelle un processus écrit, tandis que l’autre ne peut que lire).
Bien entendu, la combinaison logique de ces commandes est monnaie courante en informatique. Avec la commande ln de Linux il est par exemple possible de créer un lien vers un fichier ou un répertoire de manière extrêmement simple. Lisez notre article de présentation pour découvrir les autres commandes Linux importantes que vous devez absolument connaître.
Syntaxe des pipes Linux et exemples d’application
Pour utiliser correctement 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.
Nos instructions font référence aux installations Ubuntu les plus répandues, qui sont disponibles gratuitement et mises à jour régulièrement.
Commande-1 | Commande-2 | …| Commande-N
Comme vous pouvez le voir ci-dessus, la syntaxe d’un pipe sans nom est relativement simple. Elle contient le symbole « | », qui sert par exemple à séparer deux commandes. Le pipe de l’exemple ci-dessous ne reste valide que temporairement.
$ 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épertoire donné, plus précisément la sortie de la commande ls -al. Les noms de fichiers de « contents.txt » sont alors interrogés à l’aide du mot-clé « file » par l’intermédiaire du pipe, de sorte que la sortie de la commande cat est utilisée comme entrée pour la commande grep. Nous redirigeons 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.
La commande grep peut être utilisée pour rechercher des chaînes dans les fichiers de code et les fichiers journaux. Si vous souhaitez simplement rechercher 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 supprimiez. 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 transfé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 travaillerez avec des commandes au niveau de votre terminal Linux et que vous voudrez déplacer des données d’une commande à une autre, l’utilisation d’un pipe anonyme ou nommé pourra normalement vous y aider, et ce, de manière rapide et facile.
Vous utilisez le système d’exploitation Linux et cherchez une offre complète pour votre hébergement 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ébergement Linux de IONOS vous offre des performances évolutives, une protection DDoS, de la géo-redondance et bien d’autres avantages.