Mi aspettavo cat <(cat)
e cat | cat
fare la stessa cosa: copiare le righe da stdin a stdout. La mia comprensione era che entrambi avrebbero eseguito a cat
in una subshell, reindirizzando lo cat
stdout della subshell a una pipe denominata temporanea e quindi eseguendo un'altra cat
nella shell corrente con il suo stdin reindirizzato alla pipe.
Invece, cat <(cat)
mi permette di digitare sul mio terminale, ma nessuna delle linee di input viene copiata e ^D
non riesce a segnalare EOF
; cat | cat
funziona come previsto però.
Come ulteriore esperimento, ho verificato se cat =(cat)
ha difficoltà simili cat <(cat)
, ma funziona come mi aspettavo: tutto lo stdin fino a uno ^D
viene copiato nello stdout in una volta sola.
Qualcuno può aiutarmi a capire cosa sta facendo zsh sotto il cofano?