¿Cómo evitar que rm informe que no se encontró un archivo?
Estoy usando rm
un 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
-f
opción la forma correcta de silenciarrm
? ¿ Por qué no se llama-q
? - ¿Esta opción hace algo más?
El uso principal de -f
es forzar la eliminación de archivos que no se eliminarían rm
por 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 rm
para ver si un archivo realmente se eliminó o no.
Sí, -f
es la opción más adecuada para esto.
-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.)