¿`alias rm="rm -i"` se considera dañino?

¿`alias rm="rm -i"` se considera dañino?

Leí hace algún tiempo (no puedo encontrar la referencia) que usar un alias como ese alias rm="rm -i"era muy malo.

¿Existe evidencia histórica o explicación de sentido común para ese hecho?

Me imagino que le da al usuario el mal hábito de confiar en el mensaje de confirmación para verificar su comando, lo que podría provocar desastres si lo hace en otro perfil que no tiene el alias.

Respuesta1

Tienes razón.

Es malo porque te acostumbras. Si estás en un sistema que no lo tiene y lo haces, rminmediatamente comienza a eliminarse y te preguntas qué está pasando.

Muchos usuarios están acostumbrados a realizar SSH en diferentes sistemas; por lo que es bastante común utilizar muchos sistemas diferentes, a veces sin configurar cuentas de usuario personalizadas (incluidos alias).

En su lugar, utilice, por ejemplo, alias rmi='rm -i'y aprenda a utilizarlo. Si eso no está configurado en un sistema diferente, no eliminaste archivos accidentalmente y siempre puedes volver a escribir el comando completo.

Respuesta2

Como dijo @Daniel, no es dañino en sí mismo, aparte de entrenarte para que esperes que esté allí. De hecho, es la configuración predeterminada en máquinas CentOS (y por extensión, supongo, RHEL; ha pasado demasiado tiempo desde que usé una),y es un dolor enorme en el tuchus. Durante el resto de mi tiempo en ese concierto, escribí /bin/rm para evitar la configuración "Linux para personas que no deberían tener acceso root".

Respuesta3

Creo que el gran peligro es que la gente dependa de algo como esto para filtrar una masa. Imagine que desea eliminar algunas imágenes de un directorio, pero no todas:

rm -i pics/*.jpg

Podrías usarlo para filtrar el globo manualmente, lo cual sería completamente razonable. Pero, si le habías asignado un alias y lo estabas usando rmy aterrizaste en un shell sin ese alias y lo intentas... simplemente borraste todas tus imágenes, ¡ups!

Personalmente también encuentro que este alias es perjudicial para mi presión arterial;). Pero ese soy solo yo.

Respuesta4

Esto esmuchomenos dañino, según mi experiencia trabajando con cientos de usuarios en el pasado:

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • Los usuarios están capacitados para usar comodines correctamente, no solo '*' y luego confiar en las indicaciones y/n para seleccionar archivos.
  • El condicionamiento para usar comodines correctos a menudo salvó a los usuarios de un desastre cuando se usaron rmen algún otro contexto que carecía de esta función o del rm -ialias.
  • Pasé menos tiempo restaurando archivos donde el usuario escribía 'y' demasiadas veces
  • Los usuarios solo tienen que responder una vez, lo que proporciona una respuesta positiva y positiva a su uso.
  • Control-c interrumpe el trabajo y se informa que no hace nada
  • No es un guión, por lo que lo real rmpermanece intacto, dejando impávidos a otros programas.

El estilo del código es mayoritariamente compatible con sh (excepto el uso echo .... | tr -d '\012'para shells previos a bash), siéntete libre de crear el tuyo propio más específico de bash. No estoy publicando para compartir el código en sí, sino para compartir elexperiencia de usuariocambio que viene con ello.

información relacionada