GNU/Linux >> Tutoriales Linux >  >> Linux

Opción Rm para fallar en archivos inexistentes?

El man página de rm command en GNU coreutils 8.12.197-032bb describe el -f o --force opción como "ignorar archivos inexistentes, nunca preguntar". Sin esta opción, eliminará todos los archivos existentes, nunca preguntará y devolverá un código de salida distinto de cero si alguno de los archivos especificados no existiera. Me gustaría preservar los archivos si hay de los archivos especificados no existen . ¿Cuál es la forma más fácil de hacer esto?

El caso de uso es seguridad :Si estoy tratando de eliminar un archivo que no existe, podría deberse a que hay una expectativa no válida (o un simple error) en el comando. Por ejemplo el famoso rm -rf /usr /lib/nvidia-current/xorg/xorg podría haberse evitado de muchas maneras, siendo una de ellas esa opción (obviamente, a menos que el usuario, por alguna coincidencia increíble, tuviera un /lib/nvidia-current/xorg/xorg directorio), y otro siendo Use More Quotes™. Sin embargo, las comillas no siempre son suficientes. Por ejemplo, considere ssh host '/bin/rm some paths; /bin/bash foo.sh' – Si hubiera olvidado el punto y coma o insertado prácticamente cualquier otro símbolo como dos puntos o coma, habría intentado eliminar /bin/bash y ~/foo.sh .

Respuesta aceptada:

Yo uso este tipo de cosas:

mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE

Para una sola ruta:

mv /some/path DELETE && rm -rf DELETE

Aún mejor, escriba el comando rm command en una línea de comando separada:mv /some/path DELETE Entrar rm -rf DELETE Entrar . De esa forma, el único rm command El comando que lo convierte en su historial de shell está en un archivo llamado DELETE , por lo que si eliminó una versión anterior de un archivo, no corre el riesgo de eliminar la nueva versión presionando accidentalmente Arriba el número incorrecto de veces entonces Enter .

Si quieres automatizar un poco:

mv_to_DELETE () {
  mkdir DELETE &&
  mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE

Linux
  1. Eliminar actualizaciones de Windows descargadas

  2. Linux Eliminar archivos y directorios

  3. Comando de descompresión de Linux:¿Opción para forzar la sobrescritura?

  4. Eliminar archivos coincidentes en todos los subdirectorios

  5. Forma más rápida de eliminar una gran cantidad de archivos

Cómo encontrar y eliminar archivos duplicados en Linux

Cómo eliminar archivos enumerados en otro archivo en Linux

Cómo quitar/eliminar archivos en Linux usando el comando rm

Rsync con la opción de eliminación, pero conserva lo que se elimina?

Cómo eliminar archivos y directorios usando la línea de comandos de Linux

Eliminar archivos con logrotate