Spodziewałem się cat <(cat)i cat | catzrobię to samo: skopiuj wiersze ze standardowego wejścia na standardowe wyjście. Zrozumiałem, że oba wykonałyby a catw podpowłoce, przekierowały catstdout podpowłoki do tymczasowej nazwanej potoki, a następnie wykonały inną catw bieżącej powłoce ze stdin przekierowanym do potoku.
Zamiast tego cat <(cat)pozwala mi pisać na moim terminalu, ale żadna z linii wejściowych nie jest kopiowana i ^Dnie jest sygnalizowana EOF; cat | catdziała zgodnie z oczekiwaniami.
W kolejnym eksperymencie sprawdziłem, czy cat =(cat)ma podobne trudności cat <(cat), ale działa tak, jak się spodziewałem: wszystkie stdin do jednego ^Dsą kopiowane na stdout za jednym razem.
Czy ktoś może mi pomóc zrozumieć, co robi Zsh pod maską?