How this command exactly works step by step ?
Recursivamente. rm
não excluirá um diretório se não estiver vazio. Por esse motivo, ele primeiro recorre a ele e exclui seu conteúdo (arquivos "regulares"). Isso significa que o processo desvinculando é iniciado no nível mais profundo da hierarquia de diretórios e sobe para remover os diretórios depois que eles são esvaziados. Eu acho que você poderia colocar dessa maneira (mesmo que haja pequenas variações):
/
---- somedir <-- (5)
-------- a <-- (4)
------------ a <-- (3)
---------------- a <-- (2)
-------------------- somefile1.txt <-- (1)
-------------------- somefile2.txt <-- (1)
-------------------- somefile3.txt <-- (1)
-------------------- [...]
---------------- b <-- (2)
---------------- [...] <-- (2)
------------ b <-- (3)
------------ [...] <-- (3)
-------- b <-- (4)
-------- [...] <-- (4)
^ ^ ^ ^ ^
(5) (4) (3) (2) (1)
A propósito, rm
tem uma opção -v
que ajudará você a entender o que acontece enquanto é executado.
-v, --verbose
explain what is being done
Did I lose some data ?
Sim (isso é muito provável), na parte inferior da hierarquia de diretórios. Desvincular um arquivo é realmente rápido, e se esses arquivos fossem pequenos o suficiente, não demorou muito para o kernel se livrar de blocos de dados associados a cada um deles.
Vá o mais longe possível dentro de seu diretório: arquivos como /dir/a/e/g/r/c/somefile
(assumindo que a classificação alfabética vai tão longe) provavelmente desaparecerão ... É claro que a quantidade de dados perdidos depende da rapidez com que você bateu Ctrl + C .