Você não pode dizer a cat
para usar vários critérios desse modo, o último redirecionamento tem precedência:
cat file1.txt >> file2.txt >> file1.txt
é equivalente a:
>> file2.txt ; cat file1.txt >> file1.txt
que obviamente enche rapidamente o sistema de arquivos, dado o fato de que o arquivo de origem que é o destino também cresce indefinidamente, desde que file1.txt
seja grande o suficiente para não ser lido de uma vez.
A maioria das implementações cat
modernas deve detectar a recursividade e abortar:
Solaris cat:
cat: input/output files 'file1.txt' identical
Gnu cat:
cat: file1.txt: input file is output file
Eles podem ser enganados de qualquer maneira com algo como:
cat < file1.txt | cat | cat >> file2.txt >> file1.txt
Um bom uso não tão inútil de gatos ...