Un tube est une zone mémoire permettant à deux processus de communiquer de façon synchronisée, c.-à-d. que l’écrivain est mis en attente lorsqu’il n’y a plus de place disponible, et de même, le lecteur est mis en attente quand il n’y a pas d’information prête. Ce principe est utilisable au niveau du shell avec le caractère barre verticale (« | ») (en anglais pipe) entre deux commandes. Cela permet de rediriger la sortie standard de la première sur l’entrée standard de la seconde.

Les tubes sont très utilisés avec les filtres. Le principal intérêt des filtres est de pouvoir les combiner grâce à des tubes pour cumuler leurs effets sans avoir besoin de fichiers intermédiaires. En effet, le principe consiste à décomposer un traitement complexe en plusieurs actions plus simples et à développer un outil pour chaque action de base, ce qui est plus facile que d’écrire directement un programme adapté au traitement global. Ensuite, les filtres développés peuvent être réutilisés dans la décomposition d’un autre traitement.

Avec un tube, le résultat de la première commande n’est pas accessible. Parfois, il est utile de garder une telle information intermédiaire. Pour cela, la commande tee duplique l’entrée sans la modifier. L’information fournie en entrée à tee est répercutée en sortie et une copie est faite dans un fichier dont le nom est passé en argument: par exemple, ls | tee fichier | wc -l.  
 
Retour à la page de cours