Latinoamérica
de.novatoanovato@gmail.com

Comando -rm-

Dedicado al nuevo usuario de software libre

Comando -rm-

Comando rm

El comando rm perteneciente a la familia de sistemas operativos del tipo Unix. Es un programa que viene por defecto en todos los sistemas GNU/Linux, cumple la función de eliminar archivos y directorios del sistema de archivos. Esta orden debe utilizarse con cautela, ya que puede ser muy destructiva, debido a que, ejecutada por defecto, borra los archivos sin pedir confirmación. El nombre del comando rm, proviene de la palabra remove que significa «borrar» en inglés.

Objetivos de éste artículo

En esta entrada veremos para que sirve el comando rm, aprenderemos a utilizar su sintaxis para explotar al máximo esta herramienta que hace a la gestión de archivos y directorios en GNU/Linux y los sistemas operativos del tipo Unix en general. También conoceremos las opciones del comando rm y como combinarlas con el uso de rutas relativas y absolutas.

Sintaxis

El comando rm se corresponde con la siguiente sintaxis:

rm [Ruta] [Parámetros] [Elemento]

Manual del comando rm

Para la construcción de esta entrada, en primera instancia nos basaremos en las opciones del comando rm aplicadas al uso por medio de su sintaxis. Nos servirá de guía para ello el uso de sus paginas de manual. Si quieres saber como usar las paginas de manual, te comparto el siguiente articulo sobre el comando man.

Opciones del comando rm

Para poder llevar adelante este articulo, cree una serie de directorio sobre los que trabajaremos. Este sera el contexto sobre el que se basara el articulo completo. Dentro de cada directorio encontraremos un archivo de texto que lleva el mismo nombre que el directorio de extensión .txt.

Para verlos con mayor claridad ejecutamos el comando tree sobre el directorio A.

tree /Home/cristian/A

Eliminar archivo con el comando rm

Por defecto (sin ningún argumento), el comando rm elimina directamente un archivo valido. Entiéndase por valido a aquel archivo que existe o cuya ruta fue indicada de forma correcta.

Si nos encontramos en el mismo directorio que el archivo, nos bastara con ejecutar rm archivo y este sera eliminado. Borremos el fichero H.txt, pero antes veamos el contexto:

Con el comando pwd, vemos que nos encontramos en la ruta /home/cristian/A/D/H. Si listamos su contenido con ls -l observamos que existe el archivo H.txt. Para eliminarlo ejecutamos:

rm H.txt

Y el archivo H.txt habrá sido eliminado.

Eliminar un directorio con el comando rm

Por defecto, el comando rm no elimina directorios. Para ello contamos con una serie de parámetro que, según sea el caso, nos permitan llevar a delante el proceso de eliminación de un directorio. Conozcamos cada caso.

Eliminar directorios vacíos con el comando rm

Si el directorio se encuentra vació, es decir que no contiene ni archivos ni directorios en el, podemos llevar a cabo su supresión con rm bajo el parámetro -d.

Como podemos observar, nos encontramos en la ruta /home/cristian/A/D donde H es un directorio vació. Si lo queremos eliminar directamente, nos resultara:

No nos sera posible por defecto eliminarlo. Esto es debido a que la sintaxis de rm necesita que especifiquemos que es un directorio, ya que por default entiende que vamos a borrar un archivo. Siempre que este directorio se encuentre vació, como en este caso, podremos eliminarlo con el parámetro -d. Observemos:

rm -d H

De esta forma hemos eliminado el directorio vació H.

Eliminar un directorio que contiene archivos o directorios con el comando rm

El el caso de que un directorio contenga archivos o directorios, el parámetro -d no surgirá efecto. Veamos el contexto.

Como observamos, el directorio H contiene el archivo H.txt. Al intentar eliminarlo con el parámetro -d se nos imprimirá:

Para poder llevar a cabo esta tarea es necesario indicarlo con el parámetro -r, donde la acción llevara la eliminación de forma recursiva tanto del directorio en cuestión, como de su contenido (ya sea que en el contenga archivos o directorios en el).

rm -r H

De esta forma la carpeta H junto al archivo que contenía fuero eliminados.

Me gustaría señalar que el parámetro -R cumple con la misma función que -r. A modo de ejemplo eliminemos el directorio A, que contiene los subdirectorios utilizados como ejemplo para esta entrada esta entrada.

rm -R A

El directoria A junto a todo su contenido, fueron eliminados de forma recursiva.

Eliminar elemento con el comando rm solicitando confirmación por cada uno

Como venimos viendo hasta ahora, siempre que suprimimos un elemento, indistintamente del como lo hicimos, esta tarea se efectuó de forma directa. Podemos llevar a cabo una supresión pidiendo que se nos solicite una confirmación por cada elemento que esté por ser eliminado previamente. Ésto nos permite tener un control sobre las acciones a realizar.

En su sintaxis el comando rm cuenta con el parámetro -i, siendo este quien nos permita acceder a la confirmación previa a la eliminación de cada elemento (ya sea de un archivo o de un directorio y su contenido). Asumiendo que ya entendemos la diferencia de uso de rm respecto a un archivo y a un directorio, acudamos a un ejemplo.

Pongámonos en contexto:

Estamos ubicados en el directorio A, cuya ruta es /home/cristian/A, nos disponemos a borrar el directorio B donde su contenido se lista en la imagen. ¿Qué parámetro de rm utilizarías para eliminar B observando que contiene directorios dentro?. Si respondiste -r o -R estuviste en lo correcto.

Ejecutemos:

rm -ri B

Como podrás observar, nos pide que confirmemos por si o por no a cada elemento que se dispone a eliminar. Es muy recomendable utilizar este parámetro cuando suprimimos directorios con contenido.

Los elementos que fueron indicados para no ser eliminados permanecerán conservando sus respectivos directorios padres, comenzando por el directorio que fue pasado como parámetro y todos los directorios que pasa hasta el elemento.

Eliminar elemento con el comando rm solicitando confirmación si hay mas de tres

otra de las opciones de confirmación a la hora de eliminar un directorio con contenido, es la que ofrece el parámetro -I, donde solicitara confirmación en el caso de que el directorio que nos disponemos a borrar contenga mas de tres elemento.

Si nos basamos en el directorio utilizado para el desarrollo de éste articulo, el directorio A, sabemos a estas alturas que éste contiene mas de tres elementos. Procedamos a eliminarlo utilizando este parámetro para observar como ocurre la interacción:

Sea el directorio A:

Ejecutamos:

rm -rI A

Dado a que A posee mas de tres elemento entre subdirectorios y archivos, bajo este parámetro se nos pedirá una confirmación previa a la eliminación.

Eliminar elementos con el comando rm solicitando detalles del proceso

Si quisiésemos obtener un detalle del proceso de eliminación de un elemento, el comando rm cuenta con el parámetro -v. Este nos brindara un informe detallado de todos aquellos elementos que fueron eliminados en una instancia o ejecucion. Volvamos a borrar el directorio A para ejemplificar.

rm -rv A

Donde se nos indican los elementos y las direcciones de la que fueron suprimidos. ¿Puedes distinguir cual era un directorio y cual era un archivo? ¿Puedes deducir las direcciones de los elementos?

Eliminación forzada

Especial cuidado y atención con esto. El comando rm de por si lleva adelante el proceso de eliminación desvinculando un nombre de archivo o directorio del sistema de archivos y de sus datos asociados. Marcando ese espacio en el dispositivo de almacenamiento como utilizable en futuras escrituras. El borrado es permanente e irrecuperable (no va a la papelera).

El forzado al la hora de solicitar una supresión llevara a delante el proceso sin ningún tipo de reparos ni de confirmación alguna, incluso si éste está protegido contra escritura.

El parámetro que lleva adelante esta acción es -f. Y para ejemplificar su uso eliminaremos por ultima vez en este articulo el directorio A.

Como podemos observar el directorio A fue eliminado.

Uso de rutas como parámetros

Si retomamos a la sintaxis del comando rm, veremos que uno de sus parámetros permite indicar rutas de elementos. Esto nos sera de utilidad para cuando nos encontremos en un directorio distinto a donde se encuentra el archivo o directorio. Existen dos tipo de rutas que podemos indicar, unas son relativas y otras absolutas.

rm [Parámetros] [Ruta] [Elemento]

Uso del comando rm con rutas relativas

Si necesitas eliminar un elemento que se encuentra en un directorio distinto al que nos encontramos posicionado con el prompt, las rutas relativas son aquellas que se indican desde nuestra ubicación y van hacia la del elemento.

Nos encontramos dentro del directorio A, ubicado en /home/cristian/A donde su contenido es el siguiente:

De querer borrar el archivo G.txt, deberíamos pasar como parámetro la ruta desde donde estamos y hacia el directorio a borrar. En este caso seria ./D/G/G.txt.

Ejecutemos:

rm ./D/G/G.txt

Como vemos el archivo indicado con la ruta relativa fue eliminado.

¿Cómo eliminarías el directorio G, desde el directorio A con una ruta relativa? Si tu respuesta fue la siguiente, estuviste en lo correcto.

rm -d ./D/G

¿Porqué se uso el parámetro -d?

Comando rm con rutas absolutas

Si necesitas eliminar un elemento que se encuentra en un directorio distinto al que nos encontramos posicionado con el prompt, las rutas absolutas son aquellas que se indican desde la raíz (/) y pasan por todos los directorios hacia la del elemento.

Nos encontramos dentro del directorio A, ubicado en /home/cristian/A donde su contenido es el siguiente:

Vamos a eliminar el directorio F y su contenido indicando una ruta absoluta:

rm -r /home/cristian/A/B/F

¿Porqué se utilizó el parámetro -r para eliminar el directorio F?¿Qué hubiese paso si en vez de usar el parámetro -r, utilizase -R?

Como vemos, es posible trabajar con distinto tipo de rutas para ejecutar una supresión con el comando rm. Cada una de se ajusta a un tipo de necesidad distinta. Si quieres saber mas sobre los tipos de rutas, te invito a leer este articulo escrito especialmente para entradas como estas.

Puedes unírtenos en el grupo de Facebook GNU/Linux Para Todos
Grupo en Telegram Novato en Linux

Espero sea de utilidad.
Saludo. Cristian.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada.

once − ocho =