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