À retenir
- Le flux est unidirectionnel (les données vont de gauche à droite).
- Il respecte la règle FIFO : la première donnée entrée est la première à sortir.
- Il permet de combiner des outils simples pour créer des traitements puissants.
Un tube est un mécanisme qui permet de relier deux programmes entre eux pour qu'ils s'échangent des informations en temps réel. Imaginez un tuyau physique : ce qui sort du premier programme (sa sortie standard) est immédiatement injecté dans le second (son entrée standard), créant ainsi une chaîne de traitement continue sans avoir besoin de sauvegarder des fichiers temporaires.
Étymologie
Traduction directe de l'anglais pipe. Le concept a été introduit dans le système Unix au début des années 1970 par Ken Thompson, s'inspirant de l'analogie d'une canalisation où les données circulent dans un seul sens.
Exemples d'usage
- Dans un terminal Linux :
ls | grep 'photo'. Ici, la liste des fichiers (ls) est envoyée au filtre (grep) qui ne garde que ceux contenant le mot 'photo'. - L'envoi du contenu d'un fichier volumineux vers un outil de compression sans créer de copie intermédiaire.
Cas d'usage
On utilise principalement les tubes dans les interfaces en ligne de commande (shell) pour combiner des petits outils spécialisés afin d'accomplir des tâches complexes. Ils interviennent aussi dans la programmation système pour faire communiquer différents processus d'une même application.
Bonnes pratiques
Évitez d'utiliser des tubes inutiles qui consomment des ressources, comme le classique cat fichier | commande alors que commande < fichier est plus efficace. Pensez aussi à vérifier que le programme en fin de tube est capable de traiter le flux de données assez rapidement pour ne pas bloquer le programme en amont.
Synonymes
Antonymes
Conseil
Pour bien maîtriser les tubes, entraînez-vous avec le symbole | sur votre clavier. C'est l'outil fondamental de la philosophie Unix : 'Faire une seule chose, et la faire bien', puis assembler ces briques entre elles.
Questions fréquentes
Quelle est la différence entre un tube anonyme et un tube nommé ?
Le tube anonyme est temporaire et disparaît après l'exécution des commandes, tandis qu'un tube nommé (named pipe ou FIFO) apparaît comme un fichier sur le disque et permet à des programmes indépendants de communiquer durablement.
Un tube peut-il fonctionner dans les deux sens ?
Non, un tube standard est unidirectionnel. Pour une communication bidirectionnelle, il faut généralement ouvrir deux tubes ou utiliser des sockets.