Estoy usando rmdentro de 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 del manual un comando para rmsilenciarlo, pero la única opción que encontré es -fque, según la descripción, "ignorar archivos inexistentes, nunca preguntar", parece ser la opción correcta, pero el nombre no parece encajar , así que me preocupa que pueda tener consecuencias no deseadas.
- ¿Es la
-fopción la forma correcta de silenciarrm? ¿Por qué no se llama-q? - ¿Esta opción hace algo más?

Respuestas:
El uso principal de
-fes forzar la eliminación de archivos que no se eliminaríanrmpor sí solos (como un caso especial, "elimina" archivos inexistentes, suprimiendo así el mensaje de error).También puede simplemente redirigir el mensaje de error usando
(o el equivalente de su sistema operativo). Puede verificar el valor de
$?inmediatamente después de llamarrmpara ver si realmente se eliminó un archivo o no.fuente
--fes válido para GNU Coreutilsrm, pero solo porque es una abreviatura única para--force. La forma corta-fes más clara y más portátil.--faquí es solo un error tipográfico para-f.2>?Sí,
-fes la opción más adecuada para esto.fuente
rmarm -i.-f es el indicador correcto, pero para el operador de prueba, no rm
esto asegura que el archivo existe y es un archivo normal (no un directorio, nodo de dispositivo, etc.)
fuente
if [ -f "$THEFILE" ]; then rm "$THEFILE"; fique hace que la prueba y los pasos de eliminación de archivos sean secuencialmente explícitos.testyrm. No hay forma dermejecutar antestestaquí. Mirar antes de saltar es un error común en la programación concurrente: ya no puedes confiar en el resultado de la "mirada" cuando realmente "saltas"; la solución a eso es usar operaciones de bloqueo o atómicas. Que es precisamente por lo que quieresrm -f, que es un ejemplo de esto último.\rm -f filenunca informará no encontrado.fuente
rm(como era popular en algunos sitios a principios de la década de 1990 para evitar que los principiantes eliminen cosas y luego llamen al administrador del sistema para recuperar sus archivos).&&sin -f se rompe una vez que no se encuentra el archivo.En cuanto a
rm -fhacer "cualquier otra cosa", fuerza (-fes una forma abreviada de--force) la eliminación silenciosa en situaciones en las que dermlo contrario le pediría confirmación. Por ejemplo, cuando intente eliminar un archivo que no pueda escribir de un directorio que pueda escribir.fuente
Tuve el mismo problema para cshell. La única solución que tuve fue crear un archivo ficticio que coincidiera con el patrón antes de "rm" en mi script.
fuente
rm -form filename >&/dev/null?