Как вы правильно заметили, графический интерфейс делает больше, чем просто "удаляет" файлы.
$ rm -rf
просто повторяется в папки, удаляя найденные там файлы и папки.
Сначала графический интерфейс сканирует все дерево, чтобы выяснить, что там есть (поэтому он знает, сколько нужно сделать, чтобы нарисовать красивую полосу), затем он повторяется через дерево, снова перемещая файлы из текущего местоположения в местоположение файлы корзины для вашего конкретного графического интерфейса. Это перемещение занимает больше времени, так как сначала нужно сгенерировать новое уникальное имя файла, связать файл в папке "Корзина", затем отсоединить его от текущей папки и обновить индекс того, откуда пришли файлы, чтобы их можно было "отменить" - много операций вместо одной.
Например, в Gnome 3 файлы перемещаются в папку:
~/.local/share/Trash/files/<filename>[.<version>]
Где filename
- это исходное имя файла, а version
- инкрементный номер версии, чтобы обеспечить уникальность файла (первый экземпляр файла не имеет номера версии). С этим связан файл .trashinfo
который хранится в папке:
~/.local/share/Trash/info/<filename>[.<version>].trashinfo
Этот файл содержит исходный путь к файлу до удаления, а также дату и время удаления этого файла.
Все эти дополнительные операции, которые должны выполняться для каждого отдельного файла в дереве, которое вы удаляете, гарантируют, что вы сможете восстановить любой файл из корзины, и что вы можете удалить файлы с такими же именами из то же место и до сих пор восстановить более ранние версии.
Ничего из этого не делается с помощью простой команды rm
или mv
.