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 (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
.
ps
permet de lister les processus qui tournent sur le système.
grep
permet de filtrer les lignes en entrée, en n'affichant que celles qui contiennent la chaîne indiquée.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 :