¿Sustituto seguro para OS X `rm`?


9

Estoy acostumbrado a tener rmque alias algo más seguro.

He estado usando osx-trash, pero una vez que actualizo a Ruby 1.9.2, esto deja de funcionar.

trash-clide Python, pero preferiría algo que mueva archivos a la carpeta Papelera en OS X en lugar de otro directorio.

¿Alguien tiene una buena solución?


99
Por favor, no te acostumbres a un alias rm, más bien acostumbrate mv files/to/be/deleted ~/.Trash. Es seguro y consistente en todos los sistemas.
Asmus

Asmus: Ves que solo funciona si tu mac tiene solo 1 partición. Si tiene otra partición, pasar a ~ / .Trash no es realmente correcto (mi ~ partición no es lo suficientemente grande).
desaparecido el

1
¡Bien, debería haber mencionado en su pregunta que tiene múltiples particiones!
slhck

1
desaparecido: bueno, creo que mvsigue siendo tu apuesta más segura. Podría crear fácilmente una nueva carpeta en su otra partición llamada Trash(o como quiera) y luego mvlos archivos allí. Una vez que esté seguro de que se pueden eliminar, elimine y vuelva a crear esa carpeta completa.
Asmus

y luego puede hacer que ~ / .Trash sea un enlace suave a la carpeta Papelera en la partición que tiene suficiente espacio
AlcubierreDrive

Respuestas:


8

Para OSX, puede usar safe-rm

brew install safe-rm

Debe hacer un paso adicional para preferirlo sobre el predeterminado rm: agregue un enlace simbólico.

echo $PATH

Para mí, /usr/local/bin:primero tengo el mismo directorio que safe-rminstalar

Agregar enlace simbólico a safe-rm

ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

Para eliminar y restaurar el valor predeterminado rm, puede eliminar el enlace simbólicorm /usr/local/bin/rm

El archivo de configuración se puede agregar en /etc/safe-rm.conf

p.ej:

/private
/Applications
/Developer
/Library
/Network
/System
/Users
/Volumes
/test

Probar con rm -rf /testél negará eliminar desafe-rm.conf


podría ser bueno agregar también /a la lista de rutas que no deberían eliminarse para evitar el rm clásico -fr /
Mikael Lepistö

3

hasseg.org/trash es una utilidad Objective-C como osx-trash .

He escrito una función de shell que no sobrescribe los archivos como lo mv * ~/.Trashharía. Sin embargo, siempre mueve elementos al volumen de inicio.

trash() {
    for f in "$@"; do
        bn=$(basename "$f")
        while [ -e ~/.Trash/"$bn" ]; do
            bn="$bn $(date +%H.%M.%S %p)"
        done
        mv "$f" ~/.Trash/"$bn"
    done
}

Sí, tengo más de 1 partición y me gustaría mantener los archivos eliminados en la misma partición en lugar de moverlos
desapareció el

Agregué enlaces a otras dos utilidades y otra función. Cada uno de ellos debe mantener los archivos en la misma partición.
Lri

2

Introducción (puedes omitirlo)

Para mí rm -isería suficiente, porque te solicita antes de eliminar cualquier archivo. Sin embargo, cierta seguridad adicional proporcionada por safe-rmno es una mala idea en absoluto.

Un simple aliascomo rm=safe-rm -i podría ser suficiente, sin embargo rm -rf, no funcionaría, ya que -ise anula -f.

Por lo tanto, tenemos que asegurarnos de que -isiempre venga después -f.


Mi solución (3 pasos):

  • Instale safe-rm: brew install safe-rm

    Todavía puede trabajar con rm, pero debe modificar el RM_BINen el siguiente paso

  • Edite su ~/.profile(o bash_profile o lo que sea) y coloque el siguiente fragmento de código (que contiene una aliasy a 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
    }
    
  • Finalmente , logouty login, entonces, se aplican las actualizaciones en el perfil. ¡NO lo use antes de cerrar sesión / iniciar sesión!


Notas:

  • Se puede aplicar a cualquier distribución de Linux, con ligeras modificaciones.
  • NO mueve a su personal a golpear. ¡Solo te pregunta antes de eliminar cada archivo!
  • Funciona con -rfy con expresiones regulares.
  • Si realmente desea usar rm -rf SIN que se le solicite cada archivo / carpeta, aún puede usar /bin/rm -rf(o safe-rm -rfsi lo había instalado).
  • No más involuntario rm -rf o rm * ;)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.