¿Cómo evitar que rm informe que no se encontró un archivo?

Resuelto Village asked hace 12 años • 6 respuestas

Estoy usando rmun script BASH para eliminar muchos archivos. A veces los archivos no están presentes, por lo que informa muchos errores. No necesito este mensaje. He buscado en la página de manual un comando para silenciar rm, pero la única opción que encontré es -f, que según la descripción, "ignorar archivos inexistentes, nunca preguntar", parece ser la opción correcta, pero el nombre no parece encajar. , por lo que me preocupa que pueda tener consecuencias no deseadas.

  • ¿Es la -fopción la forma correcta de silenciar rm? ¿ Por qué no se llama -q?
  • ¿Esta opción hace algo más?
Village avatar Apr 20 '12 20:04 Village
Aceptado

El uso principal de -fes forzar la eliminación de archivos que no se eliminarían rmpor sí solo (como caso especial, "elimina" archivos inexistentes, suprimiendo así el mensaje de error).

También puedes simplemente redirigir el mensaje de error usando

$ rm file.txt 2> /dev/null

(o el equivalente de su sistema operativo). Puede verificar el valor de $? inmediatamente después de llamar rmpara ver si un archivo realmente se eliminó o no.

chepner avatar Apr 20 '2012 16:04 chepner

Sí, -fes la opción más adecuada para esto.

Satya avatar Apr 20 '2012 13:04 Satya

-f es el indicador correcto, pero para el operador de prueba, no rm

[ -f "$THEFILE" ] && rm "$THEFILE"

esto garantiza que el archivo exista y sea un archivo normal (no un directorio, nodo de dispositivo, etc.)

technosaurus avatar Jun 12 '2013 20:06 technosaurus