04. Terminal: manipulando archivos y directorios

Publicado por

A lo largo de todo este camino has aprendido a obtener información y a crear, por el momento, directorios por medio de la consola. En esta nota, nos apropiaremos de un grupo más de herramientas que justamente nos ayudarán a avanzar en la manipulación de nuestros archivos y nos darán nuestro siguiente pequeño gran paso para convertirnos en un verdadero maestro.


Creando un ejército de clones

Por una razón o por otra, en ocasiones debemos crear una copia a partir de un archivo o un directorio que elijamos. Ya es por todos bien conocido el usar la combinación de teclas Ctrl+C seguida de un Ctrl+V para realizar la tarea en cuestión pero ¿cómo se realiza lo mismo por medio de una instrucción en consola? Para poder darle una respuesta a este cuestionamiento conozcamos el siguiente comando:

$ cp

El nombre de cp le viene perfecto ya que precisamente hace referencia a la palabra copy. Para lograr usar este comando se requiere que le pasemos 2 parámetros: el primero refiriéndose al archivo o directorio que deseamos copiar, y el segundo a la ubicación donde queremos se sitúe esta nueva copia. Veamos un primer ejemplo de cómo copiar un archivo (en este caso un archivo de texto) a otra carpeta:

Observando el entorno anterior te darás cuenta de que justo tenemos los materiales que necesitamos para nuestro pequeño ejercicio (¡que conveniente!) vayamos pues a copiar nuestro archivo usando la siguiente instrucción:

$ cp jango_fett.txt Kamino/

¿Qué ha pasado? ¿Funcionó o no? Veámoslo con ayuda de ls.

¡Genial, sí que ha funcionado! Podemos ver cómo un clon de nuestro archivo ahora reside en la carpeta Kamino. Podemos usar cualquier carpeta como destino pero habrá que tomar muy en cuenta lo referente a las rutas, ¿recuerdas lo que era una ruta relativa y una ruta absoluta? si no, puedes checarlo de nuevo volviendo a la nota no. 2 de esta misma serie.

Ahora imaginemos que no quieres guardar una copia en otro lugar sino que quieres hacerlo justo donde está el original; existen dos formas en particular para hacer mención de la carpeta donde estamos situados actualmente: una es escribiendo la dirección absoluta de la carpeta o, de manera más sencilla, escribiendo un único punto. A diferencia de lo que se había dicho en una nota previa donde dos puntos seguidos hacían referencia a la carpeta padre, un solo punto hace referencia a la carpeta actual. Veamos ambos métodos y el resultado que se nos muestra:

Como puedes ver, el comando no permite crear una copia en el mismo directorio si tiene el mismo nombre que el archivo original (¿cómo los diferenciaría?), en el anterior caso sí que se pudo mantener el mismo nombre porque la ubicación era diferente. Habiendo dicho lo anterior, necesitamos darle otro nombre al archivo para que se pueda copiar en el mismo directorio. Ya que haremos la copia en el mismo lugar, qué te parece si solamente le indicamos el nuevo nombre como destino:

$ cp jango_fett.txt boba_fett.txt

Como no indicamos nada más que el nombre como segundo parámetro, el comando deduce que queremos hacer la copia en el mismo directorio; si quisieras crear la copia en otro lugar con nombre diferente, basta que coloques ese nuevo nombre inmediatamente después de la ruta de la carpeta.

Pasemos ahora a algo parecido pero diferente: mover archivos.


La técnica de teletransportación

Cambiar archivos de lugar es sumamente fácil si utilizamos la interfaz gráfica, solo se necesita arrastrar y soltar el objeto en cuestión ayudándonos del mouse. ¿Qué sucede cuando queramos hacerlo mediante consola? Es igual de sencillo, es más, es prácticamente igual que usar el comando que vimos hace un momento, solo que en lugar de cp usaremos:

$ mv

Este comando nos dice exactamente lo que nos imaginamos, move. ¿Mover qué y mover a dónde? Esas son las preguntas que contestaremos igual que la vez pasada usando los mismos dos parámetros, la fuente y el objetivo. Crearemos otro entorno donde podamos practicar esta técnica (comando):

Queremos que el archivo se mueva de su posición actual a la carpeta planeta_kaio y, de ahí, se mueva a kame_house. Realicemos entonces lo anterior y veamos los contenidos en cada caso para estar seguros de que nuestro trabajo se realizó de forma adecuada:

Con el GIF anterior es posible ver que nuestro archivo se ha movido justo como lo queríamos. De igual forma, esta ha sido una excelente oportunidad para refrescar los conocimientos que has ido adquiriendo.

El comando mv tiene otro uso común en el ambiente de consola: puede cambiarle el nombre a un archivo. Con cp vimos que si usamos otro nombre diferente al del archivo original para el parámetro destino se creará una copia en el mismo directorio con ese nuevo nombre. Con mv realizamos el mismo procedimiento pero la diferencia será que en lugar de tener una copia, tendremos el mismo archivo con distinto nombre, veamos un ejemplo pero ahora usando un directorio:

$ mv kame_house casa_de_roshi

¡Excelente! Por último veamos la tercera y última parte de esta nota: cómo eliminar archivos.


Un gran poder conlleva una gran responsabilidad

ADVERTENCIA:
El mal uso de lo explicado en la siguiente sección podría ocasionar pérdida de material importante en su sistema ocasionando depresión o hasta pérdida de la conciencia. Se recomienda discreción.

Ok, ok, no era la intención asustarte pero de alguna forma tenía que llamar tu atención para estar alerta. Eliminar archivos haciendo uso de la interfaz gráfica es una labor relativamente segura, siempre aparecerá la, a veces molesta, «ventanita» que nos preguntará si estamos seguros de eliminar aquello que, por error o no, pedimos desaparecer de nuestro disco duro.

Realizar la misma labor en la terminal requiere pensar en nuestra decisión unas dos o tres veces más (tal vez 10), esto a causa de que no tendremos un mensaje de advertencia y la consola simplemente hará lo que le hayamos pedido explícitamente:

— “¿Eliminar todas las fotos de tus vacaciones? ¡Concedido!”

Esta gran arma que ahora aprenderemos a usar se conoce como:

$ rm

El comando rm es el alias de remove. Eliminar, borrar, remover… da igual la forma en que lo quieras llamar, este comando eliminará de tu disco (sin preguntar) lo que le pases como parámetro, así que, tómalo con calma antes de utilizarlo. Demos un vistazo a nuestro nuevo escenario para utilizar este nuevo comando:

Tenemos una combinación de archivos de texto y directorios que deseamos eliminar de nuestro disco, utilicemos primero nuestro comando con los .txt para ver qué sucede:

$ rm Wolverine.txt
$ rm SpiderMan.txt Hulk.txt

Parece que no ofrecieron la más mínima resistencia. Veamos ahora qué sucede si decidimos utilizar el comando en un directorio como el de Apocalipsis.

$ rm Apocalipsis

Por defecto rm no elimina directorios tal y como lo hace con un archivo común y corriente, necesita que le indiquemos que aquello a borrar es un directorio (parece que el comando no es tan malo como te hice creer al principio). A fin de realizar esta acción se requiere agregar una parte conocida como opción, y en este caso en particular, necesita que escribamos -d antes de nuestros parámetros.

$ rm -d Apocalipsis

Ya sabiendo esto, borremos de una vez el directorio restante:

Otra buena nueva de nuestro peligroso comando. El mensaje nos dice que no es posible borrar el directorio porque no está vacío, ¿qué piensas que significa esto con respecto a lo que hicimos poco antes? La opción -d solo funciona si el directorio a borrar es un directorio vacío, en caso contrario, necesitaremos de otra opción que indique que deseamos borrar el directorio y todo lo que haya en su interior.

¡CUIDADO!
Este último mensaje será de igual manera la última clase de advertencia antes de decirle adiós a un directorio y su contenido. Recuerda que una vez colocada la instrucción y haber presionado ‘Enter’, el comando realizará su función y no habrá marcha atrás, tus archivos serán eliminados definitivamente sin pasar siquiera por la Papelera de Reciclaje.

Teniendo la completa certeza de lo que vamos a hacer debemos agregar la opción -r en nuestra instrucción para que rm borre el directorio y su contenido (un archivo o directorio tras otro). Vamos allá entonces:

$ rm -r Onslaught

Primero observamos el contenido del directorio Onslaught, nos aseguramos que su contenido no es precisamente algo que queramos conservar y entonces ejecutamos la instrucción. Al final comprobamos que efectivamente todo se ha eliminado sin dejar nada.

Es muy importante, disculpa que sea tan insistente, que uses este comando con absoluta precaución. Cualquier error podría causar que dañes tu sistema si llegaras a actuar sobre un archivo o directorio sobre el que ignoras totalmente su función y/o contenido. La buena noticia es que ahora tienes un buen conocimiento sobre esto y puedes actuar con seguridad e incluso a ayudar a otros a entender mejor esta herramienta.


Dr. Jekyll y Mr. Hyde

Ammm ¿no habías dicho que lo anterior era la última parte de la nota? En cierta forma sí, pero hay algo más que debes de saber antes de que terminemos. Hasta ahora hemos visto que el comando rm es uno con el que hay que tener mucho cuidado pero ¿y si te dijera que también deberías tener cuidado con cp y mv?

Tal y como tratamos con este par de comandos en su momento, pareciera que no hay nada que temer con ellos, sus funciones son aparentemente inocentes y además aparecen mensajes de error si hacemos algo mal. La verdad es que si, en cualquier caso, tú decidieras copiar o mover un archivo a una ubicación donde reside otro con el mismo nombre, éste último sería reemplazado por el primero, ¿qué significa esto? Significa que también podrías perder información. Veamos cómo y de paso aprendamos un nuevo comando:

Observa que tenemos un par de archivos con nombres a.txt y c.txt en nuestra carpeta actual, así también, dentro de la carpeta nueva existen dos con el mismo nombre más uno extra llamado b.txt. Averigüemos qué contienen los archivos en cada una de los directorios usando el comando cat para que se muestren en pantalla:

En el primer intento vemos que no se mostró nada por la razón de que los archivos están vacíos, en el segundo sí aparece algo y de hecho el comando cat concatena estos datos y los muestra de una sola vez en pantalla. Sabiendo que los archivos de la carpeta nueva sí contienen algo, investiguemos qué sucede si movemos o copiamos uno con el mismo nombre desde otra carpeta a esta:

Lo que nos temíamos… Las operaciones han sustituido a los archivos que residían en carpeta y, por tanto, solo uno de ellos (b.txt) ha conservado su contenido ya que no se realizó ningún operación sobre él. Por lo que hemos aprendido, es importante que seas cuidadoso al usar cualquiera de estos tres comandos.


Para terminar

La nota en esta ocasión ha sido algo larga, puede que incluso hayas saltado directamente a esta parte para ver si puedes continuar sin saber esto pero créeme, el tiempo invertido en comprender cómo estas herramientas funcionan es de gran valor. Este tipo de herramientas, sin el debido conocimiento, pueden ocasionar problemas donde solo una copia de seguridad podría salvarnos, por eso, si deseas practicar con ellas, crea un entorno propio como los que has visto para que no tengas nada de qué preocuparte.

Has logrado un buen avance en esta serie sobre la terminal, aún así, puede que llegados a este punto te esté inquietando el escribir tantas cosas y hasta te resulte cansado presionar tantas teclas, no pasa nada, en la siguiente nota hablaré sobre cómo ser más ágiles al momento de introducir comandos y aprenderemos un poco más de ellos de forma más general.

Recuerda que cualquier duda, pregunta o inquietud es bienvenida, trataremos de ofrecerte la mejor ayuda que podamos. Hasta entonces.


Sobre algunos elementos de la imagen destacada: Designed by Dooder / Freepik

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *