Passaggio multipiattaforma nel cestino
Esiste un modo multipiattaforma per spostare i file nel cestino? file deleteelimina completamente il file e non è annullabile su unixen. Anche su Linux da solo non è semplice capire la directory dei rifiuti perché spesso dipende dal file manager.
Ho fatto ricorso a:
exec gio trash $file
Il problema è che funziona solo su Gnome, quindi anche su Linux non è multipiattaforma.
E poiché non ho una macchina Windows, capire come funziona il cestino / cestino in Windows è ancora più difficile
Risposte
La specifica del cestino di FreeDesktop.org dice:
Per ogni utente DEVE essere disponibile una directory "home trash". Il suo nome e la posizione sono$XDG_DATA_HOME/Trash; $XDG_DATA_HOME è la directory di base per i dati specifici dell'utente, come definito nella specifica della directory di base del desktop.
Se $XDG_DATA_HOME is unset or empty, it defaults to $HOME / .local / condividi.
Tuttavia, non puoi semplicemente spostare i file dentro e fuori da ~ / .local / share / Trash. Sono coinvolti alcuni file di metadati che memorizzano la posizione originale e i timestamp. Questi file di metadati sono testo semplice, quindi possono essere facilmente gestiti in Tcl.
Quindi questo sembra che potrebbe essere facilmente implementato in un modulo Tcl. Ma se un tale modulo esiste già, non ne sono a conoscenza. Potrebbe essere un bel progetto per qualcuno che sta imparando Tcl.
INFORMAZIONI AGGIUNTE:
Come al solito, TWAPI in soccorso per Windows. Il pacchetto twapi_shell ha un recycle_filecomando.
Ecco come farlo su macOS. Ciò richiede il pacchetto di estensione Tclapplescript :
package require Tclapplescript
proc trash args {
set TRASH_CMD {
tell application "Finder" to delete POSIX file "%s"
}
foreach file $args { set fullFilename [file normalize $file]
set quoted [string map {\\ \\\\ \\" \\\\"} $fullFilename] AppleScript execute [format $TRASH_CMD $quoted]
}
}
Nelle versioni recenti di macOS, dovrai concedere le autorizzazioni appropriate in fase di esecuzione per far funzionare questo (o almeno ho dovuto farlo durante il test).
Guarda anche:
- https://apple.stackexchange.com/questions/50844/how-to-move-files-to-trash-from-command-line
- Elimina i file con AppleScript nel cestino o in modo permanente