Quando uso o comando cat <<< Hey > text.txt text.txt
, espero que ele escreva "Hey" no arquivo text.txt e, em seguida, exiba o arquivo. Mas não há saída. Como o bash está interpretando isso na verdade?
Comando e sua saída:
$ cat <<< Hey > text.txt text.txt
$ cat text.txt
$
Talvez faça sentido se você reorganizar um pouco os redirecionamentos:
Hey
é enviado para stdin de cat, como uma herestring.text.txt
é aberto para escrita e truncado. Então, se algum texto estivesse nele, ele desapareceria.cat
é executado com o argumentotext.txt
. Como um arquivo foi fornecido como argumento, ele ignora stdin, portanto,Hey
não é usado.text.txt
foi truncado, portanto, quandocat
executatext.txt
o argumento, não há nada para produzir, entãotext.txt
, que é o stdout docat
redirecionamento via, continua vazio.