texto renombrar por ejemplos crear consola comandos comando buscar basicos archivos archivo bash rm

bash - renombrar - crear archivo en linux



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

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

  • ¿Es la opción -f la forma correcta de silenciar rm ? ¿Por qué no se llama -q ?
  • ¿Esta opción hace algo más?

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

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

esto asegura que el archivo existe y es un archivo regular (no un directorio, nodo de dispositivo, etc.)


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

También puede redirigir el mensaje de error usando

$ rm file.txt 2> /dev/null

(o el equivalente de su sistema operativo). Puedes verificar el valor de $? inmediatamente después de llamar a rm para ver si un archivo se eliminó o no.


En cuanto a rm -f haciendo "cualquier otra cosa", fuerza ( -f es la abreviatura de --force ) eliminación silenciosa en situaciones en las que rm le pediría confirmación. Por ejemplo, cuando intenta eliminar un archivo que no puede escribir usted desde un directorio que puede escribir usted.


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


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.


/rm -f file nunca informará no encontrado.