`alias rm =“ rm -i ”` considerado perjudicial?

17

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

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

Me imagino que le da al usuario la mala costumbre de confiar en el aviso de confirmación para verificar su comando, lo que podría provocar desastres si lo hace en otro perfil que no tiene el alias.

Dunaril
fuente
Creo que encontré el tema que mencionaste.
Daniel Beck
1
@Daniel, de hecho, la respuesta más votada de este hilo menciona esta mala práctica, pero en realidad no es el tema central de la pregunta.
Dunaril 01 de

Respuestas:

36

Tienes razón.

Es malo porque te acostumbras. Si está en un sistema que no lo tiene, y usted rm, inmediatamente comienza a eliminarse y se pregunta qué está pasando.

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

En su lugar, use eg alias rmi='rm -i'y aprenda a usar ese. Si eso no está configurado en un sistema diferente, no eliminó accidentalmente archivos y siempre puede recurrir a escribir el comando completo.

Daniel Beck
fuente
4

Como dijo @Daniel, no es dañino en sí mismo, aparte de entrenarlo para que espere que esté allí. De hecho, es la configuración predeterminada en CentOS (y, por extensión, RHEL, supongo, 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 de root".

Andrew Beals
fuente
3
RHEL tiene esto por defecto, tienes razón, al menos los sistemas que utilicé.
Daniel Beck
4

Creo que el gran peligro es que las personas puedan confiar en algo como esto para filtrar un globo. Imagine que desea eliminar algunas imágenes de un directorio, pero no todas:

rm -i pics/*.jpg

Podrías usar eso para filtrar el globo manualmente, lo cual sería completamente razonable. Pero, si lo aliaste y lo estabas usando rmy aterrizaste en un caparazón sin ese alias y lo intentaste ... simplemente borraste todas tus fotos, ¡Uy!

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

Error fatal
fuente
Buen ejemplo Por supuesto, si te gusta el peligro o el juego ..
Dunaril
2

Además de lo que dijo Daniel Beck, me encontré usando -fpara evitar el -i, que es potencialmente peligroso ya que resulta en el uso rm -fe rm -rfinnecesariamente. De alguna manera relacionado: una forma de prevenir rm -rfproblemas es crear un archivo llamado "-i" como se dice en respuesta a esta pregunta: ¿Cómo puedo prevenir rm -rf / * accidental? .

Pero de nuevo, si ese alias no estuviera allí, no usaría -f, y todo esto no será un problema.

lupincho
fuente
3
Parece que has encontrado una manera de empeorar esta mala práctica :)
Dunaril
0

Esto es mucho menos 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 entrenados para usar los comodines correctamente, no solo '*' y luego dependen de las indicaciones y / n para seleccionar archivos
  • El condicionamiento para usar comodines correctos a menudo salvaba el desastre cuando se usaba rmen algún otro contexto que carecía de esta función o del rm -ialias.
  • Pasé menos tiempo restaurando archivos donde el usuario escribió 'y' demasiadas veces
  • Los usuarios solo tienen que responder una vez, proporcionando una respuesta positiva a su uso
  • Control-c interrumpe el trabajo y se informa que no hace nada
  • No es un script, por lo que lo real rmestá intacto, dejando otros programas sin desanimarse.

El estilo del código es en su mayoría compatible con sh (excepto el uso echo .... | tr -d '\012'para shells previos al bash), siéntase libre de hacer su propio más específico para bash. No estoy publicando para compartir el código en sí, sino para compartir el cambio de experiencia del usuario que viene con él.

Alex North-Keys
fuente
Kamil: Mi respuesta incluye que rm -ihistóricamente (en mi experiencia con tener cientos de usuarios) da como resultado la eliminación errónea de archivos, y que la función incluida ha capacitado a los usuarios para usar comodines correctos, reduciendo la tasa de error. Por lo tanto, he abordado problemas clave rm -i y proporcioné una solución por conveniencia, y el simple hecho de que las viñetas estén debajo de la función no evita que sean relevantes.
Alex North-Keys