 |
Forum |
|
|
Réagissez
dans les forums
de JDN Développeurs
|
Les "tubes" des systèmes type Shell (aussi
appelés "pipes" ou "pipelines")
peuvent, bien utilisés, se révéler d'une utilité redoutable.
Les pipes permettent de rediriger la sortie d'une commande vers
l'entrée d'une autre. Dit autrement : un tube permet
d'ordonner à une application de ne pas envoyer ses
résultats/données vers la sortie standard (le
shell, généralement), mais de les faire traiter
par une autre application.
Le nombre de tubes n'étant pas limité à
un par requête, il est ainsi possible de construire
des suites de requêtes permettant d'affiner un résultat
ou de générer de nouveaux résultats à
partie de celui de la première commande.
Un exemple simple :
ls -la /etc | more
ls -la affiche les fichiers
et dossiers contenus dans le dossier /etc.
Cet affichage peut prendre plusieurs lignes, et l'utilisateur
risque donc de ne pas voir les premières. La solution
est donc d'envoyer le résultat (la sortie) de ls
vers l'entrée de more,
un outil d'affichage page par page. L'utilisateur pourra alors
parcourir la liste à loisir.
Un autre exemple :
ls -la | grep "\.xml$" | more
...affichera la liste des fichier se terminant par *.xml
dans l'outil more. Notez que
nous utilisons ici deux pipes : grep pour ne garder que les
lignes correspondant à l'expression régulière
\.xml$, et more
pour l'affichage...
La plupart des commandes Unix peuvent ainsi être combinée.
L'intérêt
est de confier une tâche précise à un
outil conçu spécialement pour celle-ci, et donc
de se construire une bibliothèque de scripts shell
permettant parfois de réaliser ce qu'aucun programme
n'est capable de faire aussi rapidement.
|