El comando rm de Linux: todo lo que necesita saber
Publicado: 2023-01-22 El comando rm
de Linux elimina archivos y directorios. Para usar esta herramienta de manera segura, debe estar seguro de lo que sucederá cuando presione "Entrar". Esto es lo que necesita saber.
¿Qué es el comando rm en Linux?
Cómo eliminar archivos con rm
Uso de comodines con rm
Uso de rm de forma interactiva
Uso de la opción de fuerza rm
Eliminación de directorios con rm
Evitar errores al usar rm
¿Qué EPI?
¿Qué es el comando rm en Linux?
El comando rm
de Linux es principalmente para eliminar archivos. Es uno que la mayoría de la gente encuentra poco después de empezar a usar Linux. Solo por el hecho de ser un recién llegado a Linux, es probable que cometa errores. Creará o copiará archivos por accidente, con el nombre equivocado o en el lugar equivocado. Todo es parte de la curva de aprendizaje de la línea de comando. Las operaciones de limpieza de tales errores implican rm
.
El comando rm
puede eliminar archivos, grupos de archivos, directorios o árboles de directorios completos. Es por eso que debe usarse con precaución. Usar rm
no es difícil, pero la penalización por fallar es alta.
Cuando se elimina un archivo con rm
, desaparece. No se mueve a la papelera. Se borra inmediatamente. Eso no significa que debas evitar usar rm
. Pero para usarlo de manera segura, debe ser consciente de lo que puede hacer y asegurarse de que lo está usando correctamente.
Algunas herramientas son más peligrosas que otras y mucho menos indulgentes con los errores. Es por eso que nunca ha habido una película llamada The Texas Wrench Massacre . rm
no es una llave inglesa, definitivamente es una motosierra.
Las personas usan motosierras todo el día, todos los días, y siempre que las usen de manera responsable y consciente, están bien. Es el mismo trato con rm
. Cuando saque rm
de su bolsa de herramientas, debe reducir la velocidad y verificar, luego volver a verificar, su línea de comando.
El comando rm
es un ejecutable, no es parte del shell. Entonces, aunque estamos usando Bash aquí, es el rm
estándar de Linux, no un rm
Bash especial.
RELACIONADO: Líneas de comando: ¿Por qué la gente todavía se molesta con ellas?
Cómo eliminar archivos con rm
La forma más sencilla de usar rm
es proporcionar el nombre de un archivo que desea eliminar.
rm config.gc
Regresa en silencio a la línea de comandos. rm
adopta la postura clásica y discreta de Linux de que si no se queja de nada, puede asumir que hizo lo que le pidió. Proporcionar un nombre de archivo como este hace que rm
busque el archivo en el directorio de trabajo actual.
Puede proporcionar varios nombres de archivo en la línea de comandos. También puede proporcionar una ruta de directorio si un archivo que desea eliminar no está en el directorio actual.
rm memlog.sh /home/dave/dev-archive/config.gc
Nuevamente, no se informa nada si rm
logra eliminar los archivos especificados.
RELACIONADO: 37 comandos importantes de Linux que debe conocer
Uso de comodines con rm
Los comodines le permiten especificar grupos o colecciones de archivos sin tener que enumerar los archivos individuales en la línea de comandos.
El asterisco “ *
” representa cualquier secuencia de caracteres, incluso ninguno. El signo de interrogación “ ?
” representa cualquier carácter individual.
Para verificar que sus comodines coincidan con lo que espera, y nada más, puede usarlos con ls antes de usarlos con rm.
Para eliminar todos los archivos PNG del directorio actual, utilice “*.png”. Esto significa que cualquier secuencia de caracteres seguida de ".png" coincidirá. Cuando los archivos se han eliminado, podemos usar ls
para verificar que se hayan ido.
ls *.png
rm *.png
ls *.png
En nuestra computadora de prueba, tenemos dos archivos en el directorio actual con nombres que comienzan con "config".
Podemos eliminar ambos usando el comodín asterisco. Coincide con ambos archivos porque rm
busca nombres de archivo que comiencen con "config", seguidos de cualquier secuencia de caracteres. En un archivo, esa secuencia de caracteres es ".sl3", la extensión del nombre de archivo. El otro nombre de archivo no tiene caracteres después de "config", pero debido a que el asterisco coincide con cualquier carácter o sin caracteres , también coincide con ese nombre de archivo.
ls configuración*
configuración rm*
ls configuración*
Puedes usar el signo de interrogación en parejas. Esto eliminará los archivos que tengan extensiones de archivo de dos caracteres exactamente.
ls *.??
rm *.??
ls *.??
RELACIONADO: 15 caracteres especiales que necesita saber para Bash
Uso de rm de forma interactiva
Una forma segura de usar rm
es forzarlo a pedir confirmación antes de eliminar cada archivo. La opción -i
(interactiva) le permite hacer esto. Cuando agrega esta opción a su línea de comando, rm
le avisará antes de cada eliminación, lo que le dará la oportunidad de pasar por alto acciones que no había previsto.
Usaremos la opción -i
(interactiva) en este comando. Intenta eliminar todos los archivos con una extensión de archivo de un solo carácter.
rm -i *.?
Cada archivo coincidente se presenta a su vez. Si responde "y" o "Y" el archivo se elimina. Si responde “n”, el archivo se conserva. De hecho, si responde con algo que no sea "y" o "y", el archivo se conserva. Simplemente puede presionar "Enter" y el archivo se conserva.
Puede trabajar rápidamente en su lista de archivos, eliminar u omitir archivos para seleccionar los que desea eliminar. Como veremos, puede usar la opción i-
(interactiva) con otras opciones de rm
.
Comandos Linux | ||
archivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cola · stat · ls · fstab · eco · menos · chgrp · chown · rev · mirar · cadenas · tipo · renombrar · zip · descomprimir · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · parche · convertir · rclone · triturar · srm · scp · gzip · chattr · cortar · encontrar · umask · wc | |
Procesos | alias · pantalla · top · agradable · renice · progreso · strace · systemd · tmux · chsh · historia · en · lote · gratis · cuál · dmesg · chfn · usermod · ps · chroot · xargs · tty · meñique · lsof · vmstat · tiempo de espera · pared · sí · matar · dormir · sudo · su · hora · groupadd · usermod · grupos · lshw · apagar · reiniciar · detener · apagar · contraseña · lscpu · crontab · fecha · bg · fg · pidof · nohup · pmap | |
Redes | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quién · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas
Uso de la opción de fuerza rm
Si intenta eliminar un archivo que es de solo lectura, rm
le solicita confirmación antes de eliminar el archivo. Esa es una buena red de seguridad, pero que podría volverse tediosa si tiene muchos archivos para eliminar.
rm geonombres.sl3
La opción -f
(forzar) indica a rm
que nunca pregunte. Le está diciendo "Sí, elimine todos los archivos sobre los que normalmente me preguntaría". También evita que rm
se queje de archivos inexistentes.
rm -f geonombres.sl3
La opción -f
(forzar) se usa a menudo cuando se elimina un conjunto anidado de archivos y directorios.
Eliminación de directorios con rm
El comando rm
también puede eliminar directorios opcionalmente, junto con los archivos que contienen. Esto es similar al comando rmdir
, pero rmdir
no puede eliminar directorios que contengan archivos. Solo elimina directorios vacíos. El comando rm
puede eliminar fácilmente directorios que contienen archivos y otros directorios.
Eliminar un directorio es similar a eliminar un archivo. Proporcionamos el nombre del directorio en la línea de comando. Necesitamos incluir la opción -d
(directorio). Como hicimos cuando estábamos borrando archivos, podemos proporcionar el nombre de varios directorios. Podemos proporcionar una ruta al directorio que no está en el directorio de trabajo actual.
rm -d proyectos antiguos
Si el directorio contiene archivos, esto fallará.
Para eliminar un directorio y su contenido, use el indicador -r
(recursivo). Esto elimina el directorio, sus archivos y cualquier directorio anidado que contenga.
rm -d archivo
rm -r archivo
El segundo comando tiene éxito.
Para cambiar rm
al modo de motosierra completo, podemos combinar las opciones -r
(recursiva) y -f
(fuerza). Esto le dice a rm
que elimine recursivamente todos los archivos y directorios en un árbol de directorios, incluso si son de solo lectura, y sin siquiera preguntarnos.
En nuestra computadora de prueba, tenemos un directorio llamado "código migrado". Contiene archivos y otro directorio llamado "6502". El directorio "6502" también contiene archivos y otro directorio llamado "ASM". También hay archivos en ese directorio. Algunos de los archivos son de sólo lectura.
También incluiremos el comando -v
(detallado) para que rm
nos diga lo que está haciendo.
rm -rfv migrado-código
En la salida podemos ver que los archivos se eliminan y, cuando están vacíos, los directorios también se eliminan.
Evitar errores al usar rm
Los espacios y otros caracteres extraños en los nombres de archivo pueden presentar problemas. Los nombres de archivo que comienzan con un guión " -
", por ejemplo, pueden confundirse con las opciones de la línea de comandos. Si tenemos un archivo llamado “-contributors.txt”, rm
intentará procesar el nombre como una secuencia de opciones de la línea de comandos.
Debido a que rm
no tiene una opción llamada “ -c
”, el análisis de la línea de comandos falla y el archivo no se elimina. Para eliminar el archivo, debe precederlo con "./" para proporcionarle una ruta.
rm -contributors.txt
rm ./-contribuyentes.txt
Los espacios en los nombres de archivo también son problemáticos. Puede citar el nombre de archivo completo o usar el tabulador para insertar el nombre del archivo en la línea de comando por usted, escapando de los espacios mientras lo hace. Si no utiliza ninguna de estas opciones, rm
tratará cada parte del nombre de archivo como un archivo individual.
Aquí tenemos dos archivos, uno llamado "copia de seguridad" y otro llamado "copia de seguridad para eliminar". Podemos demostrar el problema con estos nombres de archivo, usando ls
. Si tratamos de usar ls
en el archivo "copia de seguridad para eliminar" y no escapamos ni citamos el nombre del archivo, el comando falla.
ls -hl copia de seguridad para eliminar
ls
se queja de que no puede encontrar archivos llamados "para" o "eliminar", pero sí encuentra un archivo llamado "copia de seguridad". Eso es lo que rm
hará también. Se quejará de la falta de dos archivos y luego eliminará el archivo llamado "copia de seguridad", que no es lo que queríamos.
rm copia de seguridad para eliminar
rm
cree que está trabajando con tres archivos, "copia de seguridad", "para" y "eliminar". Se queja de que no puede encontrar "para" y "eliminar", pero encuentra y elimina silenciosamente "copia de seguridad".
Citar el nombre del archivo le permite a rm
eliminar el archivo correcto.
rm 'copia de seguridad para eliminar'
También puede escapar de los espacios con barras invertidas “ \
“, así:
rm copia de seguridad\ para\ borrar
Si usa la función de completar con tabulación para ingresar sus nombres de archivo, se escaparán automáticamente, si es necesario.
¿Qué EPI?
A diferencia de las motosierras del mundo real, no hay equipo de protección personal que pueda usar con rm
.
Lo que puede hacer es verificar su sintaxis con ls
antes de intentarlo con rm
y usar el modo interactivo para decidir qué se elimina.
Aparte de eso, es práctica hasta que te sientas cómodo y confiado. La forma más segura de hacerlo es copiar un montón de archivos de sacrificio en un directorio y practicar con ellos.
RELACIONADO: Eliminar archivos de más de x días en Linux