Jak słusznie zauważyłeś, GUI robi więcej niż tylko „usuwa” pliki.
$ rm -rf
po prostu przechodzi do folderów, usuwając pliki i foldery, które tam znajduje.
GUI najpierw skanuje całe drzewo, aby ustalić, co tam jest (więc wie, ile trzeba zrobić, aby narysować ładny pasek), a następnie ponownie przechodzi przez drzewo, przenosząc pliki z bieżącej lokalizacji do lokalizacji pliki kosza na określone GUI. To przenoszenie trwa dłużej, ponieważ najpierw musi wygenerować nową unikalną nazwę pliku, połączyć plik w folderze kosza, a następnie odłączyć go od bieżącego folderu i zaktualizować indeks, z którego pochodzą pliki, aby można je było „cofnąć” - wiele operacji zamiast tylko jednej.
Na przykład w Gnome 3 pliki są przenoszone do lokalizacji:
~/.local/share/Trash/files/<filename>[.<version>]
Gdzie filename
jest oryginalna nazwa pliku i version
jest to rosnący numer wersji, aby zapewnić unikalność pliku (pierwsza instancja pliku nie ma numeru wersji). Z tym powiązany jest .trashinfo
plik przechowywany w folderze:
~/.local/share/Trash/info/<filename>[.<version>].trashinfo
Ten plik zawiera oryginalną ścieżkę pliku przed usunięciem, a także datę i godzinę usunięcia tego pliku.
Wszystkie te dodatkowe operacje, które należy wykonać na każdym usuwanym pliku w usuwanym drzewie, zapewniają przywrócenie dowolnego pliku z kosza oraz usunięcie plików o tej samej nazwie z ta sama lokalizacja i nadal przywracaj wcześniejsze wersje.
Nic z tego nie jest wykonywane za pomocą polecenia prostego rm
lub mv
polecenia.