O <<<
inicia uma "string aqui": a string é expandida e alimentada para o stdin do programa. (No seu caso, não há muita expansão acontecendo.) É equivalente a isto:
echo ddd | md5sum
Por outro lado, <<
inicia um documento aqui. Todas as linhas a seguir, até uma contendo o marcador ddd
, incluirão a entrada do programa. (Você deve usar um marcador que não é provável que apareça em seus dados.) Você poderia obter o mesmo efeito acima, assim:
md5sum <<END
ddd
END
Existe uma diferença entre <<END
e <<'END'
: Sem as aspas, quaisquer variáveis, seqüências de escape etc. no documento aqui serão expandidas como de costume.