Linux / Comando / rm / Comando para eliminar archivos o directorios

El comando rm en Linux elimina archivos, y usar la opción -r también elimina directorios y su contenido. Dado que generalmente no pasa por la papelera, asegúrese de verificar la ruta y los elementos a eliminar antes de ejecutar el comando.

Cosas a verificar antes de la eliminación

Este artículo se basa en rm de GNU coreutils y en el shell Bash. Los archivos eliminados con rm pueden ser difíciles de recuperar por métodos normales. Haga una copia de seguridad de los archivos importantes por separado y verifique su ubicación actual y el destino primero con pwd y ls -la.

rm no muestra un mensaje de confirmación cada vez. El comportamiento predeterminado depende de los permisos de escritura de los archivos, si la entrada es desde un terminal, etc., y los alias configurados en el shell también pueden afectarlo. Para confirmar cada archivo explícitamente, use -i. Para condiciones detalladas, consulte el manual de rm de GNU.

Eliminando archivos

A continuación se muestra un ejemplo de cómo crear un nuevo directorio de práctica y preparar archivos para eliminar dentro de él. Si rm-practice ya existe en la ubicación actual, use otra ubicación vacía, y si el primer comando falla, no continúe ejecutando.

mkdir rm-practice
cd rm-practice
printf 'practice\n' > sample.txt
ls

Después de confirmar que sample.txt se muestra, ejecute el comando a continuación. En el mensaje de confirmación, ingrese y para eliminar, o ingrese n si no desea eliminar.

rm -i sample.txt
ls

Si aprobó la eliminación, sample.txt ya no aparecerá en los resultados de ls. rm sample.txt puede eliminar el archivo sin confirmación, por lo que no asuma que siempre aparecerá un mensaje de confirmación.

Eliminando Directorios

Para eliminar únicamente un directorio vacío, puede usar rmdir. Normalmente falla si el directorio no está vacío.

mkdir empty-dir
rmdir empty-dir

Para eliminar directorios con contenido, use -r. El comando siguiente crea directorios y archivos de práctica, los verifica y luego los elimina. Usar -i junto pedirá confirmación para cada elemento.

mkdir example-dir
printf 'practice\n' > example-dir/file.txt
ls -la example-dir
rm -ri example-dir

Los mensajes de confirmación pueden preguntar sobre entrar en directorios y eliminar archivos y directorios. Antes de responder cada pregunta, verifique el nombre y apruebe únicamente los elementos que tenga intención de eliminar. Rehusar algunas preguntas puede resultar en que el directorio permanezca o se muestren errores.

Comodines y archivos ocultos

Los patrones como *.txt son expandidos por la shell a los nombres que coinciden antes de que rm se ejecute. Antes de eliminar múltiples archivos a la vez, primero verifica los nombres que coinciden con un comando como el siguiente en lugar del comando de eliminación.

printf '%s\n' ./*.txt

Después de confirmar que los nombres de salida son los objetivos deseados, utiliza rm -i ./*.txt solo cuando sea necesario. Si no hay archivos que coincidan, el patrón puede mostrarse tal cual o el comportamiento del comando puede cambiar dependiendo de la configuración de Bash. Encerrar todo el patrón entre comillas previene la expansión habitual de nombres de archivo.

En la configuración predeterminada de Bash, * no incluye elementos ocultos que comienzan con un punto, pero esto puede variar según configuraciones como dotglob. Los comandos que eliminan un rango amplio como rm -rf * sin comprobar pueden causar daños significativos si se juzga mal la ubicación actual y los resultados de la expansión. Las diferencias para cada configuración se pueden consultar en Documentación de expansión de nombres de archivo de Bash.

Opciones y rutas de uso frecuente

  • -i: Confirmar cada elemento a eliminar. Los elementos que sean denegados no se eliminarán.
  • -r: Eliminar recursivamente el contenido dentro del directorio.
  • -f: Ignorar los objetivos que no existen y no mostrar mensajes de confirmación. Esta opción no soluciona errores de permisos.
  • -v: Mostrar los elementos eliminados para ayudar a verificar los resultados.

Las rutas con espacios deben estar entre comillas como rm -i "my file.txt". Si el nombre del archivo comienza con un guion, especifíquelo después de -- como rm -i -- -draft.txt para evitar que se interprete como una opción.

Si hay un error de permisos, verifique si tiene los permisos necesarios en el directorio padre del destino y consulte con el administrador. La posibilidad de eliminación no se determina únicamente por el permiso de escritura del archivo en sí. Después de la eliminación, verifique nuevamente la lista del directorio y, si ha eliminado un archivo que necesita, detenga inmediatamente la operación y verifique el procedimiento de respaldo o recuperación del entorno de producción.