Cenário:
$ cat t0.txt
xxx
$ grep xxx t0.txt > t0.txt
grep: t0.txt: input file is also the output
# exit status 2
$ cat t0.txt
<nothing>
Pergunta: se o arquivo de entrada também for a saída E o status existente for 2
(ocorreu um erro), por que limpar o arquivo de entrada?
redirecionamentos de shell acontecem primeiro; então, no primeiro shell, esvazie seu arquivo de saída
t0.txt
, então ele passa para ogrep
e, em seguida,grep
reclama que a entrada e a saída são as mesmas; como o grep sabe que eles são iguais (?) porque ele verifica oinode
número do arquivo de entrada e saída (veja o código-fonte aqui /linhas 1377~1403).infelizmente você perdeu seu
t0.txt
conteúdo como resultado.