Eu esperava cat <(cat)
e cat | cat
fiz o mesmo: copiar linhas de stdin para stdout. Meu entendimento era que ambos executariam a cat
em um subshell, redirecionariam o cat
stdout do subshell para um pipe nomeado temporário e, em seguida, executariam outro cat
no shell atual com o stdin redirecionado para o pipe.
Em vez disso, cat <(cat)
permita-me digitar no meu terminal, mas nenhuma das linhas de entrada é copiada e ^D
falha ao sinalizar EOF
; cat | cat
funciona como esperado.
Como experimento adicional, verifiquei se cat =(cat)
há dificuldades semelhantes cat <(cat)
, mas funciona como eu esperava: todo o stdin até a ^D
é copiado para stdout de uma só vez.
Alguém pode me ajudar a entender o que o zsh está fazendo sob o capô?
fonte
<(cmd)
) para/dev/null
, portanto o comportamento difere (zsh -c 'cat <(cat)'
retorna imediatamente e não gera nada).