Come hai giustamente notato, la GUI non si limita a "eliminare" i file.
$ rm -rf
ricorre in cartelle eliminando i file e le cartelle che trova lì.
La GUI prima scansiona l'intero albero per capire cosa c'è lì (quindi sa quanto deve fare per disegnare la bella barra), quindi ricicla attraverso l'albero spostando di nuovo i file dalla posizione corrente alla posizione della file del cestino per la tua GUI specifica. Lo spostamento richiede più tempo, poiché deve prima generare un nuovo nome file univoco, collegare il file nella cartella cestino, quindi scollegarlo dalla cartella corrente e aggiornare un indice di provenienza dei file in modo che possano essere "annullati" - molte operazioni invece di una sola.
Ad esempio, su Gnome 3 i file vengono spostati nella posizione:
~/.local/share/Trash/files/<filename>[.<version>]
Dove si filename
trova il nome del file originale ed version
è un numero di versione incrementale per garantire che il file sia univoco (la prima istanza del file non ha un numero di versione). A ciò è associato un .trashinfo
file archiviato nella cartella:
~/.local/share/Trash/info/<filename>[.<version>].trashinfo
Questo file contiene il percorso originale del file prima dell'eliminazione, nonché la data e l'ora in cui il file è stato eliminato.
Tutte queste operazioni extra, che devono essere eseguite su ogni singolo file dell'albero che stai eliminando, assicurano di essere in grado di ripristinare qualsiasi file dal cestino e di poter eliminare i file con lo stesso nome dal stessa posizione e ripristinare comunque le versioni precedenti.
Niente di tutto ciò viene fatto con un semplice rm
o mv
comando.