¿Cómo puedo hacer que 'rm' mueva los archivos a la papelera?

57

Uso el terminal a diario, a menudo usaré rm DirectoryName . A veces me vuelvo un poco loco y hago rm * . Como puedes imaginar, estos chanchullos a veces vuelven y me golpean en la cara. ¿Alguien sabe cómo creo una asignación para que rm whatever mueva todo a la papelera que luego elimino manualmente?

    
pregunta steve 18.07.2011 - 11:24

5 respuestas

71

Mala idea

Usar rm para mover archivos a la papelera es como hacer maleza. Es común y placentero, pero puede ser malo para usted en el futuro. ;)

Realmente necesitas controlarte cuando usas rm .

No uses rm

Imagina , te acostumbras a estar en la basura y te conviertes en un hábito. Claro, su sistema es seguro, pero ¿cuando inicia sesión en el cuaderno de un amigo (o de su esposa o su jefe) y tiene que eliminar algo? En realidad, utilizará el rm real, eliminando esos archivos para siempre. Es un mal hábito, y debes saberlo.

Entonces, en su lugar, instala rmtrash y crea el hábito de usarlo:

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

Corrigiendo malos hábitos

Otra cosa que puedes hacer para forzarte a utilizar rmtrash en lugar de rm es alias a un mensaje personalizado en tu .profile .

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

Entonces, cuando uses rm , se te pedirá que uses rmtrash o /bin/rm . Recuerde, esto solo es temporal, después de un tiempo debe eliminar el alias.

Nunca, haz algo como esto:

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

Pop Quiz: ¿En qué directorio se ejecutará el comando rm ? :)

Sal: acaba de eliminar algunas ediciones no deseadas de esta publicación, lo que agregó algunas tonterías sobre los alias.

    
respondido por el jm666 18.07.2011 - 15:57
23

Puedo pensar en una docena de maneras de codificar esto, pero categóricamente me niego a escribir cualquiera de ellas en una respuesta. Yo recomiendo encarecidamente que cese su hábito de volverse un poco loco . No deberías tener la costumbre de usar rm en absoluto si no puedes usarlo correctamente.

El problema fundamental aquí es que incluso si instala una red de seguridad en su propio sistema, eso solo lo ayudará a mantener sus malos hábitos y cuando esté en otra máquina un día que no tenga las mismas protecciones personalizadas. , harás algo épicamente malo.

La solución adecuada es usar rm como se suponía que se usara, incluyendo agregar manualmente el argumento -i cada vez que tenga dudas sobre cómo se expandirá un globo, y tener buenas copias de seguridad del sistema que pueda restaurar en el caso de error grave del usuario. Tratar de agregar "basura" a los comandos que en el resto del universo no usan es un paso a medias que es el peor de los dos mundos.

Usa la papelera o no. El uso de rm no va a la papelera, elimina.

Si quieres usar la papelera, no hay nada de malo en eso. Simplemente adquiera el hábito de usar el comando rmtrash en lugar de rm . Esto ayudará a que su cerebro entienda lo que está sucediendo y no se convierta en un mal hábito que causará dolor en el futuro.

    
respondido por el Caleb 18.07.2011 - 11:34
3

Use una herramienta de línea de comandos como rmtrash o un script tat usa appscript para llamar al Finder para que elimine.

Después de instalar rmtras para decir / usr / local / bin / rmtrash el crea un alias para bash

alias rm='rmtrash'

Puedes usar \ rm para llamar a rm directamente e ignorar el alias

    
respondido por el Mark 18.07.2011 - 11:39
-1

Solo quiero agregar un hábito útil para aquellos que todavía no lo hacen. Antes de usar rm para cualquier cosa, primero haga 'ls' en él. De esta forma, podrá ver todos los archivos que desea eliminar. Luego, en lugar de volver a escribir, simplemente levante el comando 'ls' anterior e intercambie ls por rm. Este hábito ha reducido mucha ansiedad al invocar a rm.

    
respondido por el Scott Bridgman 03.02.2016 - 01:18
-2

Introducción (puedes omitirla)

Para mí, rm -i sería suficiente, ya que te preguntará antes de eliminar cualquier archivo. Sin embargo, cierta seguridad adicional proporcionada por safe-rm no es una mala idea en absoluto.

Un simple alias como rm=safe-rm -i podría ser suficiente, sin embargo, rm -rf no funcionaría, porque -i está anulado por -f .

Por lo tanto, debemos asegurarnos de que -i siempre venga después de -f !

Mi solución (3 pasos):

  • Instala safe-rm: brew install safe-rm

    Aún puedes trabajar con rm , pero has modificado el RM_BIN en el siguiente paso

  • Edite su ~/.profile (o bash_profile o lo que sea), y coloque el siguiente fragmento de código, (que contiene un alias y un 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 "[email protected]"
    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
    }
    
  • Finalmente , logout y login , por lo que se aplican las actualizaciones en el perfil. NO úselo antes de cerrar sesión / iniciar sesión

Notas:

  • Se puede aplicar a cualquier distribución de Linux, con ligeras modificaciones.
  • NO mueve a tu personal a sacudirse. ¡Solo te pregunta antes de eliminar cada archivo!
  • Funciona con -rf y con expresiones regulares.
  • Si realmente desea utilizar rm -rf SIN que se le solicite para cada archivo / carpeta, puede seguir usando /bin/rm -rf (o safe-rm -rf si lo ha instalado).
  • No más involuntario rm -rf o rm * ;)
respondido por el Paschalis 08.06.2014 - 19:32

Lea otras preguntas en las etiquetas