Pipes (tubes) sous Linux

Les pipes (tubes ou pipelines) d'Unix permettent de récupérer la sortie (stdout ou standard output) d'un programme et de l'insérer directement dans l'entrée (stdin ou standard input) d'un autre programme.

Les tubes sont donc très utiles pour créer des scripts bash et pour le développement C sous linux.

La barre verticale "|" (ou pipe en anglais) est utilisée pour créer des tubes dans les shells Unix. Par exemple : programme1 | programme2

Exemple

Imaginons un fichier comme ceci :

Paul Durand
Pierre Dupond
Jacques Dupont

Pour afficher que les prénoms, vous pouvez utiliser le programme awk.

Le premier programme cat affiche le fichier dans son flux de sortie. Le programme awk prend en entrée le flux de sortie du programme cat.

cat nom.txt | awk '{print $1}'

Pour afficher que les noms :

cat nom.txt | awk '{print $2}'

Pour chercher le prénom "Pierre", vous pouvez utiliser grep.

cat nom.txt | grep "Pierre"

Pour afficher les prénoms commençant par "P" :

cat nom.txt | grep "P"

Pour trier les prénoms, vous pouvez utiliser sort :

cat nom.txt | awk '{print $1}' | sort

Un autre exemple

Cet exemple montre un pipe que vous pourriez utiliser en tant qu'administrateur.

Ce tube permet d'obtenir l'adresse IP 4 d'un serveur Ubuntu 18. Attention cette commande peut ne pas fonctionner sur votre serveur.

ifconfig enp0s3 | grep 'inet ' | awk '{print $2}'

La première commande affiche l'interface nommée enp0s3

La deuxième commande cherche le terme "inet".

Enfin, la troisième commande affiche le deuxième élément de la ligne trouvée par grep.

Commentaires