Sposta il file nel Cestino su Snow Leopard dal Terminale


13

Snow Leopard consente agli utenti di "rimettere" i file che sono stati spostati nel Cestino dal Finder. Tuttavia, quando lo faccio mv <file> ~/.Trashdalla riga di comando non ottengo l'opzione "Ripristina".

Esiste un comando nativo in Snow Leopard che sposta un file nel cestino lasciandomi ancora in grado di "rimandare"?

Risposte:


2

Quando sposti un file nel cestino, OS X aggiorna il .DS_Storefile all'interno ~/.Trashcon le informazioni "Ripristina". (Vedi questa domanda per maggiori dettagli )

Per aggiornarlo, è necessario aggiornare anche il .DS_Storefile quando si sposta un file nel Cestino nel Terminale.


Grazie. Non quello che speravo, ma è la verità.
matpie,

9

Consiglio di installare il ruby ​​gem osx-trash .

Come?

sudo gem install osx-trash

Uso?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.

2
Bello! Tuttavia, mentre comunica con Finder, il cestino dei file con un carattere jolly riproduce il suono del cestino per ogni file.
Jari Keinänen,

1
Non penso che funzioni ancora. Dai documenti: osx-trash richiede Mac OS X 10.5, Leopard. L'ho provato e tutto ciò che ottengo èbash: trash: command not found
yourfriendzak,

Non funziona su OS X 10.9 ha fatto una nuova domanda su come risolverlo qui superuser.com/questions/694433/…
simbo1905

2

Nell'SDK di MacOSX, ci sono le funzioni FSPathMoveObjectToTrashSynce le relative. Dovrebbe essere facile scrivere uno script Python (o qualunque cosa) al suo interno.

Modifica : appena codificato. Può essere trovato qui: rm-trash.py .


Cordiali saluti - FSPathMoveObjectToTrashSync è obsoleto in 10.8 e in base al documento sarà necessario utilizzare trashItemAtURL: ResultItemURL: error: invece.
Lester Cheung,

2

Vuoi il programma rmtrash .

Puoi usarlo per aggiungere elementi al Cestino come se fosse stato fatto nel Finder.

Modifica: ho appena provato a utilizzare rmtrash per eliminare e ripristinare. Funziona esattamente come l'eliminazione dal Finder. I file vengono visualizzati nel Cestino, possono essere trascinati e svuotati esattamente allo stesso modo. Lo sto usando dal '06 o giù di lì.


Dal codice di rmtrash, sembra che sia semplicemente equivalente a mv file ~/.Trash/. Sei sicuro di poter recuperare i file da questo strumento?
Albert,

0

Dopo aver esaminato le alternative ho scoperto che:

  • Il programma rmtrash sposta i file nella directory cestino senza utilizzare l'API di sistema, quindi il file .DS_Store non verrà aggiornato . Inoltre, non attiva il suono di riciclo.
  • Lo script Python invoca un metodo deprecato su Mountain Lion che non attiva il suono di riciclo.
  • Lo script ruby ​​funziona, ma è sloooooow (come quello di Python).

Quindi ho scritto il mio comando cestino implementato nel linguaggio di programmazione Nimrod, quindi è veloce e innesca il suono del cestino in un processo in background. Ciò significa che digitando il comando ed eseguendolo si esce immediatamente in quanto non è necessario attendere la riproduzione del suono. Il contro è che devi compilare nimrod e quindi questo programma (non mi dispiace binario!).

PS: A dire il vero, la migliore implementazione sarebbe quella di rmtrash usando l'API ufficiale che sto usando da Nimrod, che è semplicemente obiettivo-c .


0

Partenza trash-cli. Funziona su più piattaforme, senza audio spazzatura e supporta Put Back.

Puoi installarlo con (richiede Node.js ) :

$ npm install --global trash-cli

In alternativa, se non si desidera utilizzare Node.js, è possibile installare osx-trashmanualmente il file binario nativo .


-1

Ho avuto lo stesso problema oggi e ho controllato anche il programma rmtrash sopra indicato. Sfortunatamente tutte le soluzioni viste finora spostano i file nel .Trash della home directory.

Il Finder invece lo sposta in diverse cartelle -Trash, in base al punto di montaggio del filesystem del file.

Quindi la soluzione più semplice che posso trovare (creata il 10.5.8. Da testare sulle versioni più recenti di OS X) è questa:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

Ecco lo script della shell che ho creato per questo:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.