RECHERCHER

BOURSES & MARCHES

CAC 40 -7.73 %

SBF 120 -7.56 %

Nasdaq 0.27 %

Petrole (NY) -7.80 %

Tous les cours


ANNUAIRES

 
 PRATIQUE OUTILS 
Shell Unix : utiliser les tubes
 
Combiner plusieurs commandes shell grâce aux pipes, pour parvenir à un résultat personnalisé. (05/11/2004)
  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.

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page
 
 



 
 
Nos autres sites Société | Mentions légales | Contacts | Publicité | PA Emploi | Presse | Recrutement | Tous nos sites | Données personnelles
© Benchmark Group, 69/71 avenue Pierre Grenier. 92517 Boulogne Billancourt Cedex