Tout le monde sait comment créer un tube unidirectionnel entre deux programmes (bind stdout du premier et stdin du second) :first | second .
 Mais comment créer un tube bidirectionnel, c'est-à-dire une liaison croisée stdin et stdout de deux programmes? Existe-t-il un moyen simple de le faire dans un shell ?
Réponse acceptée :
Si les canaux de votre système sont bidirectionnels (comme ils le sont sur Solaris 11 et certains BSD au moins, mais pas sur Linux) :
cmd1 <&1 | cmd2 >&0
Méfiez-vous cependant des blocages.
 Notez également que certaines versions de ksh93 sur certains systèmes implémentent des canaux (| ) en utilisant une paire de sockets . les paires de sockets sont bidirectionnelles, mais ksh93 ferme explicitement la direction inverse, de sorte que la commande ci-dessus ne fonctionnerait pas avec ces ksh93, même sur les systèmes où les canaux (tels que créés par le pipe(2) appel système) sont bidirectionnels.