Hace algún tiempo borré erróneamente mi carpeta de inicio porque ejecuté una rm -rf *
en la terminal incorrecta, ¡cuyo directorio de trabajo era la carpeta de inicio!
Desearía tener un alias para el rm
comando, pero no fue el caso.
Ahora, estoy planeando hacer un script como un alias para rm
.
¿Tiene alguna mejor práctica que sugerir?
Gracias.
rm
sea un comando peligroso que requiera un alias por seguridad. Al usar las opcionesr
yf
, le está diciendo al shell que sé que esto es peligroso, y lo he pensado cuidadosamente, y es realmente lo que quiero hacer . Si no usa esas opciones, no puede eliminar toda su carpeta de inicio con ella.rm
, se acostumbrará a ese alias. Entonces, un día, estarás en un sistema donde el alias no existe, y harás lo incorrecto cuando menos lo esperes. Y probablemente no será tu sistema.rm
arm -i
.Respuestas:
Si desea un personalizado
rm
, no lo llamerm
sino un nombre suyomyrm
,delete
o lo que sea.El
rm='rm -i'
alias es un horror porque después de un tiempo utilizándolo, esperarárm
que le pregunte por defecto antes de eliminar archivos. Por supuesto, un día lo ejecutará con una cuenta que no tiene ese alias establecido y antes de que entienda lo que está sucediendo, es demasiado tarde.En cualquier caso, una buena manera de estar preparado para la pérdida o corrupción de archivos es hacer copias de seguridad.
Una alternativa rápida que lo protegerá contra la eliminación o sobrescritura accidental de archivos es utilizar un sistema de archivos que admita instantáneas ilimitadas como ZFS. Si las instantáneas frecuentes se realizan automáticamente, puede recuperar los archivos en el estado en que se encontraban durante la última instantánea antes del incidente.
fuente
Si desea guardar alias, pero no quiere arriesgarse a acostumbrarse a los comandos que funcionan de manera diferente en su sistema que en otros, puede deshabilitar de
rm
esta maneraLuego puede crear su propio alias seguro, p. Ej.
o usar
trash
en su lugar.fuente
remove
comoecho "rm is disabled, use trash or /bin/rm instead." -irv
. Y, como cuestión de sentido común, ¿no le gustaría que el mensaje serm
refiera a suremove
comando de seguridad ?Podrías intentar usar en su
trash
lugar. Solo recuerda vaciarlo de vez en cuando ...fuente
Sin tener que cambiar el perfil de todos, lo que puede hacer es colocar el archivo llamado -i en el directorio.
fuente
.* *
, en lugar de* .*
(lo que creo que es más común) o* . *
(lo que dijiste). ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... para que esta técnica sea verdaderamente efectiva a nivel mundial, debe hacerlo en cada directorio donde tenga permiso de escritura . Pero estoy de acuerdo, es un buen truco.Yo uso el siguiente script.
Si accidentalmente borra un archivo, recupérelo del
$HOME/tmp
.El script mueve los archivos eliminados a un
tmp
directorio y los elimina la próxima vez que se ejecute si el tiempo de acceso es 7 días después (limpieza semiautomática del$HOME/tmp
directorio).fuente
En tu perfil,
fuente
rm -I
da lo mejor de ambos mundos, @jlliagre.Un guión llamado
d
, con contenidomv $* /tmp
.editar: esta es una mala idea; vea abajo. Actualmente tengo
alias d='mv -t /tmp'
en mi.profile
lugar.fuente
d "foo bar"
eliminará los archivosfoo
ybar
). Probablemente sea más seguro#!/bin/bash TRASH="$( mktemp -d -t trashed.XXX )"; echo "Moving to trash $TRASH"; mv -v -- "$@" "$TRASH"
(mktemp
y lamv
sintaxis depende de su sistema, este funciona para Linux).d
comando aalias d='mv -t /tmp'
en mi.profile
; Creo que esa es la solución simple que estaba buscando.Este código bash agrega la función
rm
a su~/.bash_profile
archivo de configuración. Después de ejecutar esto, si escriberm file
, moverá ese archivo a/tmp
fuente
rm
a su~/.bash_profile
archivo de configuración. Después de ejecutar este archivo, si escriberm file
, moverá ese archivo a/tmp
.