Por causa do pedido, como as coisas são feitas.
Quando você faz:
cat abc > abc
>
é o operador de redirecionamento de saída, quando o shell vê isso, ele abre o arquivo no modo de truncamento usando O_TRUNC
flag com open(2)
, ou seja, open("abc", O_TRUNC)
, portanto o que estava lá no arquivo desaparecerá. Observe que esse redirecionamento é feito primeiro pelo shell antes da execução do comando cat
.
Assim, quando o comando cat abc
for executado, o arquivo abc
já estará truncado, portanto, cat
encontrará o arquivo vazio.