suivant chapitre avant contenu index

Suivant: Redirection non destructive Chapitre: Entrées et sorties Avant: Rediriger les entrées


Faites des pipes !

    Nous avons vu comment utiliser sort en tant que filtre. Cependant ces exemples considéraient que vous aviez des données situées dans un fichier ou que vous les tapiez vous même sur l'entrée standard. Comment faire si les données que vous voulez trier proviennent de la sortie d'une autre commande, comme ls? Par exemple, vous voudriez pouvoir trier par ordre alphabétique inverse, grâce à l'option -r de la commande sort, la liste des fichiers présents dans votre répertoire courant. Une solution pour cela serait:

Ici, nous avons sauvé la sortie de ls dans un fichier, puis utilisé sort -r sur ce fichier. Mais ce n'est pas très pratique et nous oblige à utiliser un fichier temporaire pour récupérer la sortie de ls.

       

La solution est d'utiliser un pipe.gif Les pipes sont une autre caractéristique offerte par le shell, qui permettent de connecter la sortie d'une commande à un ``tuyau'', et l'entrée d'une autre à l'autre bout de ce tuyau. Le résultat est que l'entrée standard de la seconde commande est directement connectée à la sortie de la première, et ainsi de suite. Ici, nous voulons connecter la sortie standard de ls à l'entrée standard de sort. On utilise le symbole `` |'' pour créer un pipe:

Cette commande est bien plus courte, et beaucoup plus facile à taper.

Un autre exemple très utile, une commande comme

va afficher une très longue liste, qui défilera bien trop vite sur l'écran pour avoir le temps de lire quoi que ce soit. A la place, utilisons donc more pour afficher écran par écran les fichiers présents dans /usr/bin.

Nous pouvons maintenant lire cette liste tranquillement.

Mais on peut faire encore mieux ! Nous pouvons enchaîner plus de deux commandes avec des pipes. La commande head est un filtre qui affiche les premières lignes d'un flux (ici, l'entrée standard depuis un pipe). Si nous voulions afficher le dernier fichier par ordre alphabétique dans le répertoire courant, nous utiliserions:

head -1 affiche simplement la première ligne qu'il reçoit en entrée (dans ce cas, la sortie triée par ordre alphabétique inverse de la commande ls).    



suivant chapitre avant contenu index

Suivant: Redirection non destructive Chapitre: Entrées et sorties Avant: Rediriger les entrées


Jean-Michel Antoine
Mon Apr 3 16:04:54 MET DST 1995