Я очікував cat <(cat)
і cat | cat
зробити те саме: копіювати рядки зі stdin у stdout. Моє розуміння полягало в тому, що обидва будуть виконувати a cat
в нижній оболонці, перенаправляти cat
stdout нижньої cat
оболонки на тимчасово названу трубу, а потім виконувати іншу в поточній оболонці, а її stdin буде перенаправлений на трубу.
Натомість cat <(cat)
дозволяє мені вводити мій термінал, але жоден із вхідних рядків не копіюється та ^D
не дає сигналу EOF
; cat | cat
працює, як очікувалося.
У подальшому експерименті я перевірив, чи cat =(cat)
немає подібних труднощів cat <(cat)
, але це працює, як я і очікував: все stdin аж до ^D
копіювання копіюється в stdout за один раз.
Хтось може допомогти мені зрозуміти, що zsh робить під кришкою?