Každý ví, jak vytvořit jednosměrné potrubí mezi dvěma programy (bind stdout z prvního a stdin druhého):first | second .
Ale jak udělat obousměrnou rouru, tedy cross-bind stdin a stdout ze dvou programů? Existuje snadný způsob, jak to udělat v prostředí shell?
Přijatá odpověď:
Pokud jsou kanály ve vašem systému obousměrné (jako jsou na Solaris 11 a alespoň na některých BSD, ale ne na Linuxu):
cmd1 <&1 | cmd2 >&0
Dejte si však pozor na zablokování.
Všimněte si také, že některé verze ksh93 na některých systémech implementují roury (| ) pomocí páru zásuvek . páry zásuvek jsou obousměrné, ale ksh93 výslovně vypíná zpětný směr, takže výše uvedený příkaz by s těmito ksh93 nefungoval ani na systémech, kde potrubí (jak je vytvořeno pomocí pipe(2) systémové volání) jsou obousměrné.