Uso la terminal a diario, a menudo usaré rm DirectoryName
. A veces me impaciento un poco y lo hago rm *
sin deliberar si es seguro. Como puedes imaginar, estas travesuras a veces han regresado y me han golpeado en la cara. ¿Alguien sabe cómo creo un mapeo para rm whatever
mover todo a la papelera que luego elimino manualmente?
Usar rm
para mover archivos a la papelera es un golpe de dopamina. Es común y placentero, pero puede ser malo para ti si lo sacas de contexto.
Realmente necesitas controlarte cuando usas rm
. Especialmente si sus copias de seguridad no están actualizadas o no tiene tiempo para borrar/instalar/restaurar.
Imagínate , te acostumbras a moverte a la basura y lo conviertes en un hábito. Claro, su sistema es seguro, pero ¿cuándo inicia sesión en el cuaderno de un amigo (o de su esposa o de su jefe) y tiene que borrar algo? De hecho, estarás usando lo real rm
, eliminando esos archivos para siempre. Sin mucha preparación y calificadores, es un mal hábito, y debes saberlo.
Entonces, en su lugar, instálelo rmtrash
y acostúmbrese a usarlo:
# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias del="rmtrash" # del / trash are shorter than rmtrash
Aquí es donde comienza el consejo personal: cambiar el comportamiento de uno es difícil. Otra cosa que puede hacer para forzarse a usar rmtrash
en lugar de rm
es crear un alias en un mensaje personalizado en su archivo .profile
.
alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"
Por lo tanto, cada vez que use rm
, se le pedirá que use rmtrash
o /bin/rm
. Recuerde, esto es solo temporal, después de un tiempo debe eliminar el alias.
Nunca jamás, haz algo como esto:
$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory
Prueba sorpresa: ¿En qué directorio se rm
ejecutará el comando? :)
&&
es tu salvavidas. ;
es el diablo PD La respuesta es que casi todo en su sistema desaparece, en el ejemplo anterior.trash-cli
en su lugar, ej. aptitude install trash-cli
- ver github.com/andreafrancia/trash-clibrew install trash
rmtrash
es realmente antiguo, ya que se actualizó por última vez en 2003, y se nota. Tiene muchas menos opciones que rm
, y si dice rmtrash
en un volumen secundario, mueve esos archivos a la carpeta de papelera de su usuario en la unidad del sistema, lo que puede llevar mucho tiempo para archivos grandes. La trash
opción recomendada por parth es mejor, resuelve el problema de mantener el mismo volumen, pero todavía faltan muchas rm
opciones.rmtrash
ya no se encuentra en homebrew, por lo que recomiendo instalar trash
en su lugar: brew install trash
.cd /tnp; rm -rf *
comando del infiernoPuedo pensar en una docena de formas de codificar esto, pero me niego categóricamente a escribir ninguna de ellas en una respuesta. Le recomiendo enfáticamente que frene su hábito de volverse un poco loco . No debe tener el hábito de usar rm
nada si no puede 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 algún día que no tenga las mismas protecciones personalizadas, hacer algo épicamente malo.
La solución adecuada es utilizarlo rm
como debe ser, incluida la adición manual del -i
argumento cada vez que tenga dudas sobre cómo se expandirá un globo y tener buenas copias de seguridad del sistema que pueda restaurar en caso de un error grave del usuario. Intentar agregar "basura" a comandos que en el resto del universo no se usa es un paso a medio camino que es lo peor de ambos mundos.
Usa la basura o no. El usorm
no va a la basura, se elimina.
Si quieres usar la basura, no hay nada de malo en eso. Simplemente acostúmbrese a usar el rmtrash
comando en lugar de rm
. Esto ayudará a su cerebro a comprender lo que está sucediendo y no creará un mal hábito que le causará dolor más adelante.
rm
por definición elimina un archivo del disco. No lo envía a la basura. Enseñarte a ti mismo a consumir rm
cuando te refieres a enviar a la basura te prepara para el desastre. Si desea enviar a la papelera, usar rmtrash
o un programa que fue diseñado para el trabajo, entonces no tendrá pesadillas más adelante. No estaba diciendo que usar la basura sea intrínsecamente malo, pero si quieres usarla, ¡no la conectes a algo que no estaba destinado a usarla!brew install rmtrash
y dejar de usarrm
rmtrash
en lugar de rm
.Use una herramienta de línea de comandos como rmtrash (que generalmente solo mueve los archivos a ~/.Trash asegurándose de que el archivo tenga un nombre único) o una secuencia de comandos que usa appscript para llamar al Finder para realizar la eliminación. Este último es más lento pero agrega la capacidad de usar la opción Volver a colocar de Finder para restaurar el archivo fácilmente.
Utilicé basura tal como está en MacPorts y Homebrew y rmtrash ahora es muy viejo y no se mantiene. Sin embargo, al leer los cambios de código al editar esta nota, noté que en 2017 cambió de usar el Finder de forma predeterminada a moverse de forma predeterminada (que no es lo que quería y es un cambio importante). Así que buscaré otra herramienta.
Como se señaló en los comentarios, no es una buena idea hacer que rm sea un alias. Es mejor recordar usar el programa de basura que instaló directamente.
Pero si quisieras podrías hacerlo
Después de instalar rmtrash para decir /usr/local/bin/rmtrash, puede crear un alias para bash
alias rm='rmtrash'
Puede usar \rm
para llamar a rm directamente e ignorar el alias
rmtrash
, hágase un favor y utilícela con su propio nombre . Nunca alias las cosas que no son rm
para rm
, algún día te morderá.rmtrash
no es compatible con rm
(no admite los mismos parámetros de línea de comando como -r
) por lo que un alias realmente no es útil en ningún casormtrash
para rm
. No solo no son compatibles, sino que también reforzará el mal hábito y lo usará accidentalmente rm
en otro sistema pensando que solo está usando rmtrash
.Solo quiero agregar un hábito útil para aquellos que aún no lo hacen. Antes de usar rm para cualquier cosa, primero haga 'ls' en él. De esa manera, puede 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 mucho la ansiedad a la hora de invocar rm.
Hay formas de protegerse de los horribles resultados de rm
. Sin embargo, estoy de acuerdo con los otros comentaristas aquí: muy pocos son buenos.
No crea ni por un minuto que cambiar el entorno de comando lo ayudará. Por ejemplo, encontrará personas en línea en todas partes que recomiendan hacer este tipo de cosas:
alias rm="rm -i"
o
function rm()
{
echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm
Esto no funcionará. Período. Hay muchos casos de uso en los que estos pequeños trucos de salón te fallarán miserablemente.
La única forma robusta que he usado para evitar el peligro rm
es configurar un proceso de copia de seguridad regular a través de cron sobre los directorios donde trabajo. Raw UNIX lo hace muy bien, con gran sencillez, usándolo find
junto con -mtime
para buscar archivos que se han actualizado dentro o desde un cierto tiempo.
Para mí rm -i
sería suficiente, porque te avisa antes de borrar cualquier archivo. Sin embargo, un poco de seguridad adicional proporcionada por safe-rm
no es una mala idea en absoluto.
Un simple me alias
gusta rm=safe-rm -i
podría ser suficiente, sin embargo rm -rf
, no funcionaría, porque -i
está anulado por -f
.
Entonces, ¡tenemos que asegurarnos de que -i
siempre venga después -f
!
Instalar caja fuerte-rm:brew install safe-rm
Todavía puede trabajar con rm
, pero ha 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 una alias
y una 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 , logout
y login
, para que se apliquen las actualizaciones en el .profile. ¡NO lo use antes de cerrar sesión/iniciar sesión!
-rf
y con expresiones regulares.rm -rf
SIN que se le solicite cada archivo/carpeta, aún puede usar /bin/rm -rf
(o safe-rm -rf
si lo ha instalado).rm -rf
o rm *
;)alias rm='sudo rm'
) es como atar una Uzi a un cuchillo de cocina: algún día obtendrá más de lo que esperaba cuando vaya a cortar esa piña. Alias rm a algo más pequeño que sí mismo (por ejemplo, alias rm='rmtrash'
) es como dejar que sus hijos jueguen con granadas de mano desarmadas y no enseñarles lo que realmente son: algún día, cuando se encuentren con una real, no la tratarán con la debida precaución. De cualquier manera, el alias rm es malo para los administradores de sistemas, ya que la falta de higiene es para la seguridad personal y la salud pública.rm
? Además, el punto de Caleb es aún más válido: si te acostumbras a un sistema con alias de rm seguro, entonces podrías volverte imprudente y eventualmente usarlo en un sistema con un rm sin alias.Mac BigSur
brew install trash
alias rm='trash'
which rm
touch a.md
rm a.md
ls ~/.Trash
usuario6124
mv /file/to/delete ~./Trash
bmike
alias rm=/bin/rm -i
debería devolverte a la seguridad. Además, ¿qué directorio Papelera quieres que use rm? Se vuelve torpe ya que Mac OS X tiene un directorio de basura para cada volumen, así como un bote de basura a nivel de usuario.daniel serodio
rm *
orm /path/*
Wilfredo Smith
bmike