Page suivante Page précédente Table des matières

2. Redirection des entrées/sorties

J'espère que vous êtes familiers avec les bases de la redirection d'entrée/sortie dans le shell, en particulier les concepts d'``entrée standard'', ``sortie standard'' et ``erreur standard''. En quelques mots, l'``entrée standard'' est une source de données, d'où viennent les données. Un programme ne devrait pas avoir besoin de savoir si la source de données est un fichier sur disque, un clavier, une bande magnétique ou même un lecteur de cartes perforées. De même, la ``sortie standard'' est un ``récepteur'' de données, c'est là où les données vont. Le programme ne devrait pas non plus se soucier de ce qu'est ce récepteur. Les programmes qui lisent leurs données sur leur entrée standard, leur appliquent un traitement et les envoient sur leur sortie standard sont appelés des ``filtres'', par analogie avec les filtres dans une canalisation d'eau.

Avec le shell Unix, il est très facile de mettre en oeuvre des tubes de données:

prog_qui_crée_les_données | filtre1 | ... | filtren > jolies.données.finales

Nous commençons par créer les données brutes. Chaque filtre applique successivement une transformation aux données, jusqu'à ce qu'elles sortent du tube sous la forme désirée.

Ceci pour l'entrée et la sortie standard. Mais où est l'erreur standard alors ? Bon, prenez le filtre1 dans le tube ci-dessus. Que se passe-t-il s'il rencontre une erreur dans les données qu'il lit ? Si il écrit un message d'erreur sur la sortie standard, celui-ci disparaîtra dans le tube en entrée du filtre2 et l'utilisateur ne le verra probablement jamais. Les programmes ont donc besoin d'un endroit où ils peuvent envoyer les messages d'erreur de façon à ce que l'utilisateur les voie. C'est l'erreur standard, elle est en général connectée à votre console ou fenêtre, même si vous avez redirigé la sortie standard de votre programme ailleurs que sur votre écran.

Pour que les programmes filtres fonctionnent ensemble, il faut que le format des données soit commun. Le format le plus simple et direct à utiliser est tout simplement des lignes de texte. Les fichiers de données Unix sont généralement de simples suites d'octets, les lignes étant délimitées par le caractère ASCII LF (Line Feed), appelé par convention ``newline'' dans la littérature Unix (c'est le '\n' si vous programmez en C). C'est le format utilisé par tous les programmes filtrant traditionnels. Beaucoup de systèmes d'exploitation plus anciens avaient élaboré des outils et des programmes spécialisés pour gérer des données binaires. Unix a toujours fuit de telles choses, arguant qu'il est plus facile de pouvoir simplement consulter et éditer vos données avec un éditeur de textes.

Bon, assez d'introduction. Jetons un oeil à quelques uns des outils, puis nous verrons comment les combiner de façons intéressantes. Dans la suite, nous ne présenterons que quelques unes des options des commandes, celles qui nous serviront pour nos exemples. Comme d'habitude vérifiez donc votre documentation système pour tout savoir.


Page suivante Page précédente Table des matières