Come posso far spostare i file "rm" nel cestino?

57

Uso il terminale quotidianamente, userò spesso rm DirectoryName . A volte divento un po 'pazzo e faccio rm * . Come puoi immaginare, questi imbrogli a volte sono tornati e mi hanno colpito in faccia. Qualcuno sa come creo una mappatura in modo che rm whatever sposti tutto nel cestino che poi cancellerò manualmente.

    
posta steve 18.07.2011 - 11:24
fonte

5 risposte

71

Cattiva idea

L'utilizzo di rm per spostare i file nel cestino è come l'erba. È comune e piacevole ma può essere dannoso per te in futuro. ;)

Hai davvero bisogno di controllarti quando usi rm .

Non utilizzare rm

Immagina , ci si abitua a rm spostarsi nel cestino e prendere l'abitudine. Certo, il tuo sistema è sicuro ma quando accedi al notebook di un amico (o di tua moglie o del tuo capo) e devi cancellare qualcosa? In realtà utilizzerai la percentuale rm - cancellando per sempre quei file. È una cattiva abitudine e devi saperlo.

Quindi, installa rmtrash e abitua a usarlo:

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

Correggere le cattive abitudini

Un'altra cosa che puoi fare per forzarti ad usare rmtrash invece di rm è alias di un messaggio personalizzato nel tuo .profile .

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

Pertanto, ogni volta che utilizzi rm , ti verrà richiesto di utilizzare rmtrash o /bin/rm . Ricorda, questo è solo temporaneo, dopo un po 'dovresti rimuovere l'alias.

Mai e poi mai, fai qualcosa del genere:

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

Quiz pop: in quale directory verrà eseguito il comando rm ? :)

Ps: ho rimosso alcune modifiche indesiderate a questo post, cosa che ha aggiunto qualche assurdità circa gli alias.

    
risposta data 18.07.2011 - 15:57
fonte
23

Posso pensare a una dozzina di modi per codificarlo, ma categoricamente rifiuto di scriverne qualcuno in una risposta. Io strongmente ti consiglio di frenare l'abitudine a diventare un po 'matti . Non dovresti avere l'abitudine di usare rm se non puoi usarlo correttamente.

Il problema fondamentale qui è che anche se installi una rete di sicurezza sul tuo sistema, questo ti aiuterà solo a mantenere le tue cattive abitudini e quando ti capita di trovarti su un'altra macchina un giorno che non ha le stesse protezioni personalizzate , farai qualcosa di epico male.

La soluzione corretta è usare rm come doveva essere usato includendo manualmente l'argomento -i ogni volta che si è in dubbio su come si espanderà un glob e si abbiano buoni backup di sistema che è possibile ripristinare nel evento di grave errore dell'utente. Cercare di aggiungere "cestino" ai comandi che nel resto dell'universo non lo usano è un passo a metà strada che è il peggiore di entrambi i mondi.

Utilizza il cestino o non farlo. L'utilizzo di rm non va nel cestino, rimuove.

Se vuoi usare la spazzatura, non c'è niente di sbagliato in questo. Prendi l'abitudine di usare il comando rmtrash invece di rm . Questo aiuterà il tuo cervello a capire cosa sta succedendo e non ti farà prendere una cattiva abitudine che causerà dolore in seguito.

    
risposta data 18.07.2011 - 11:34
fonte
3

Utilizza uno strumento da riga di comando come rmtrash o uno script tat usa appscript per chiamare il Finder per eseguire l'eliminazione.

Dopo aver installato rmtras per dire / usr / local / bin / rmtrash crea un alias per bash

alias rm='rmtrash'

Puoi usare \ rm per chiamare direttamente rm e ignorare l'alias

    
risposta data 18.07.2011 - 11:39
fonte
-1

Voglio solo aggiungere un'abitudine utile per coloro che non lo fanno già. Prima di usare rm per qualcosa, prima fai 'ls'. In questo modo puoi vedere tutti i file che intendi eliminare. Quindi, invece di ridigitare, basta tirare il precedente comando 'ls' e scambiare ls per rm. Questa abitudine ha ridotto molta ansia quando si invoca rm.

    
risposta data 03.02.2016 - 01:18
fonte
-2

Introduzione (puoi saltarlo)

Per me rm -i sarebbe sufficiente, perché ti avvisa prima di eliminare qualsiasi file. Tuttavia, alcuni extra di sicurezza forniti da safe-rm non sono affatto una cattiva idea.

Un semplice alias come rm=safe-rm -i potrebbe essere sufficiente, tuttavia rm -rf non funzionerebbe, perché -i è sovrascritto da -f .

Quindi, dobbiamo assicurarci che -i venga sempre dopo -f !

La mia soluzione (3 passaggi):

  • Installa safe-rm: brew install safe-rm

    Puoi ancora lavorare con rm , ma hai modificato RM_BIN nel passaggio successivo

  • Modifica il ~/.profile (o bash_profile o qualsiasi altra cosa) e inserisci il seguente snippet di codice, che contiene alias e function :

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • Infine , logout e login , quindi vengono applicati gli aggiornamenti nel profilo .profile. NON usalo prima di un logout / login!

Note:

  • Può essere applicato a qualsiasi distribuzione Linux, con piccole modifiche.
  • NON sposta il tuo staff in thrash. Ti chiede solo prima di eliminare ogni file!
  • Funziona con -rf e con regex.
  • Se vuoi veramente utilizzare rm -rf SENZA per ogni singolo file / cartella puoi ancora utilizzare /bin/rm -rf (o safe-rm -rf se l'hai installato).
  • Non più non intenzionale rm -rf o rm * ;)
risposta data 08.06.2014 - 19:32
fonte

Leggi altre domande sui tag