Existem várias maneiras de redirecionar a entrada padrão de um comando ( stdin
):
-
command <file
Redirecionamento simples: stdin será o arquivo -
command <&n
Duplicar outro fd: stdin será uma duplicação defd
n -
command <<word
Aqui doc: stdin será o script atéword
-
other | command
Pipe: stdin vem da saída deother
Como existe apenas um stdin, somente um redirecionamento para stdin pode ser efetivo. A regra simples é que o último ganha (apesar de todos eles serem aplicados por sua vez, o que é importante se os redirecionamentos incluírem duplicação fd).
O último formulário acima fornece uma maneira simples de concatenar várias entradas:
{ cat <<END; cat <<END; } | command
The first here-doc
END
The second here-doc
END
Alguns shells fornecem formulários de redirecionamento adicionais. Por exemplo, bash
, ksh
e zsh
permitem fornecer "here-strings": command <<<word
.