Je m'y attendais cat <(cat)et cat | catde faire la même chose: copier des lignes de stdin stdout. Ma compréhension était que les deux exécuteraient un catdans un sous-shell, redirigeraient la sortie catstandard du sous-shell vers un tube nommé temporaire, puis en exécuteraient un autre catdans le shell actuel avec son stdin redirigé vers le tube.
Au lieu de cela, cat <(cat)permet de taper sur mon terminal, mais aucune des lignes d'entrée n'est copiée et ^Dne parvient pas à signaler EOF; cat | catfonctionne comme prévu cependant.
Comme une autre expérience, j'ai vérifié si cat =(cat)a des difficultés similaires cat <(cat), mais cela fonctionne comme prévu: tous les stdin jusqu'à un ^Dsont copiés dans stdout en une seule fois.
Quelqu'un peut-il m'aider à comprendre ce que zsh fait sous le capot?