Como você observou, a GUI faz mais do que apenas "excluir" os arquivos.
$ rm -rf
apenas recorre a pastas excluindo os arquivos e pastas que encontra lá.
A GUI primeiro escaneia toda a árvore para descobrir o que existe lá (então ela sabe o quanto tem que ser feito para desenhar a barra bonita), então ela recursiva através da árvore novamente movendo os arquivos do local atual para o localização dos arquivos da lixeira para sua GUI específica. Esse movimento leva mais tempo, já que primeiro gera um novo nome de arquivo exclusivo, vincula o arquivo na pasta da lixeira, desassocia o arquivo da pasta atual e atualiza um índice de onde os arquivos vieram para serem "desfeitos" - muitas operações em vez de apenas uma.
Por exemplo, no Gnome 3, os arquivos são movidos para o local:
~/.local/share/Trash/files/<filename>[.<version>]
Em que filename
é o nome do arquivo original e version
é um número de versão incremental para garantir que o arquivo seja exclusivo (a primeira instância do arquivo não possui um número de versão). Associado a isso está um arquivo .trashinfo
armazenado na pasta:
~/.local/share/Trash/info/<filename>[.<version>].trashinfo
Este arquivo contém o caminho original do arquivo antes da exclusão, assim como a data e a hora em que este arquivo foi excluído.
Todas essas operações extras, que precisam ser executadas em cada arquivo individual na árvore que você está excluindo, garantem que você consiga restaurar qualquer arquivo da lixeira e que você possa excluir os arquivos denominados mesmo da mesma localização e ainda restaurar versões anteriores.
Nada disso é feito com um simples comando rm
ou mv
.