Você pode fazer:
cat /dev/fd/3 3<< E1 /dev/fd/4 4<< E2
foo
E1
bar
E2
Pode haver apenas um stdin, pois há apenas um descritor de arquivo 0.
cat << EOF
eof
EOF
é a abreviação de:
cat /dev/fd/0 0<< EOF
eof
EOF
E:
cat <<< foo
é:
cat /dev/fd/0 0<<< foo
Você precisa decidir o que abrir no descritor de arquivo 0.
cat <(echo foo)
é:
cat /dev/fd/123
Em que 123
é um descritor de arquivo para um canal e, em paralelo, o bash executa echo foo
em outro processo com o stdout redirecionado para a outra extremidade do canal.
Depois de passar um nome de arquivo para cat
, cat
não lê mais de stdin. Você precisaria:
cat <(echo foo) /dev/fd/0 << EOF
bar
EOF
Ou:
cat <(echo foo) - << EOF
bar
EOF
( -
é para informar cat
para ler a partir de stdin).