logo
Linux et tubes (pipe)

Souvent en ligne de commandes, on aimerait pouvoir enchaîner plusieurs commandes pour obtenir le résultat souhaité.

Par exemple, lister les répertoires, trié ceeux-ci par ordre croissant de taille et ceci page par page.

Pour cela nous disposons des commandes du, sort et more.

Une première méthode consiste à utiliser les redirections. Exemple :

DebianServer:~$ du >lst1
DebianServer:~$ sort -rn lst1 >lst2
DebianServer:~$ more lst2

Cette méthode n'est pas optimale, car elle passe par la création de fichiers intermédiaires qu'il faudra penser à supprimer à la fin du traitement.

La technique à utiliser, que nous allons présenter maintenant, utilise les tubes (pipe en anglais).

les tubes (pipe)

Les tubes (pipes en anglais) sont en quelque sorte une combinaison des redirections d'entrée et de sortie. Leur principe mime en effet celui d'un tube : un processus envoie des données dans le tube par un bout et un autre processus lit les données par l'autre bout. L'opérateur tube est |.

Notre exemple précédent devient :

DebianServer:~$  du | sort -rn | more

Ici le résultat de du est transmis via un tube à sort qui lui-même transmet à la commande more.

Un autre exemple.

Dans l'exemple ci-dessous nous utilisons les commandes ps et grep.

Ici nous souhaitons filtrer le résultat de ps pour n'afficher que les lignes contenant la chaîne "test" :

DebianServer:~$  ps aux | grep test

Nous obtenons comme résultat :

ps grep

Ressources :