Empezando con la terminal: manejando archivos y carpetas

Mira cómo usar la terminal para crear, eliminar y renombrar archivos y carpetas.
Cuando estamos programando es muy común encontrarnos con situaciones en las que tenemos que utilizar la terminal.
Ya sea para hacer un commit de los cambios, consultar la base de datos o simplemente buscar un archivo, la terminal siempre está ahí. Aunque a muchos no les guste o incluso le tengan miedo, puede ser una herramienta muy poderosa.
"“Pero si hoy en día tienen interfaces gráficas, ¿para qué usar la terminal?”"
Algunas interfaces gráficas, a pesar de ser muy útiles, son poco intuitivas, o son muy lentas, ya sea para iniciar, cargar módulos, u otras cosas. O queremos aprender cómo funcionan las cosas en esencia.
Con el terminal tenemos un resultado más directo y, en ocasiones, rápido que a través de la interfaz gráfica, aunque la presentación no es tan bonita. Además, podremos realizar algunas tareas con sólo unos pocos comandos, o incluso crear las nuestras propias.
Cuando hablamos de terminal, inmediatamente nos viene a la cabeza la imagen de alguna distribución Linux, pero también podemos utilizar la terminal en Mac, algunos comandos son idénticos entre estos sistemas.
En Windows también tenemos la posibilidad de utilizar la terminal, lo que se llama cmd o símbolo del sistema, pero en Linux y Mac esta práctica es más común. Por lo tanto, los comandos que veremos en la terminal se pueden utilizar en Linux y Mac, pero no son compatibles con Windows.
Pero entonces ¿cómo empezar a utilizar la terminal?
El primer paso…
Lo primero que debemos saber sobre la terminal es que podemos hacer todo lo que hacemos en el entorno gráfico . Desde la búsqueda, creación y edición de archivos y directorios, la obtención de información del sistema, la creación de usuarios y grupos, hasta incluso el acceso a un sitio web.
Es importante saber dónde estamos, es decir, en qué directorio estamos. Cuando abrimos la terminal, en la mayoría de distribuciones Linux, estaremos en la carpeta home del usuario que estemos utilizando.

¿Ves el cartel ~? Esto nos dice que estamos en el directorio de inicio. Dependiendo del tema del terminal, este signo puede no aparecer. Entonces, ¿cómo podemos asegurarnos de que estamos en el directorio de inicio?
Podemos decirle a la terminal que nos muestre el directorio actual, es decir, que imprima el directorio en el que estamos trabajando (pwd, imprimir directorio de trabajo):
pwd

Mira que nos muestra la ruta absoluta al directorio en el que estamos. Ya sabemos donde estamos pero ¿cuál será el contenido de nuestro directorio? Podemos decirle a la terminal que enumere (ls, list) su contenido:
ls

Tenga en cuenta que este comando enumera todos los archivos y carpetas dentro del directorio en el que estamos. ¿Qué pasa si queremos saber qué archivos están dentro del directorio /Documents, por ejemplo? Podemos pedirle que enumere el contenido de un directorio pasándole la ruta al mismo:
ls Documents/

¿Notaste que no pasamos la ruta absoluta al directorio, es decir, /home/ubuntu-luis/Documents? Esto se debe a que cuando estamos dentro de un directorio podemos acceder directamente a sus carpetas y archivos sin necesidad de pasar la ruta absoluta. A esto lo llamamos un camino relativo.
Genial, ahora hemos descubierto en qué directorio estamos y qué archivos contiene, pero ¿cómo cambiamos de directorio?
La mayoría de los comandos de terminal son semánticos, pero debemos recordar que los comandos están en inglés y algunos están abreviados. En otras palabras, si queremos cambiar de directorio, solo necesitamos ingresar esta información en inglés (cd, cambiar directorio):
cd Documents/

¡Listo! Estamos en el directorio Documents/. Veamos qué contiene:
ls

¿Pero qué pasa si hay un archivo o directorio oculto en la carpeta? Es decir, archivos que están ahí pero no aparecen cuando los listamos. Para poder ver estos archivos, podemos pedirle al comando ls que enumere todo (-a, all), incluso los archivos ocultos.
ls -a

Observa que han aparecido el archivo .hidden y dos símbolos más. y el...¿Qué significan?
Podríamos decir que son atajos del sistema. El . significa el directorio actual, es decir, /home/ubuntu-luis/Documents. El .. significa el directorio padre, por lo tanto, /home/ubuntu-luis/.
Podemos usar estos atajos junto con comandos, por ejemplo el comando cd .. va al directorio padre:

Ya hemos visto cómo cambiamos de directorios, listamos su contenido y cómo nos ubicamos en el sistema. Con la terminal también podemos manipular archivos y directorios, es decir, podemos crear, eliminar, renombrar y mover archivos y directorios en el sistema. ¿Pero cómo hacemos esto?
Manipulación de archivos
Hay varias formas de crear archivos en el sistema. Podemos utilizar un editor de texto, escribir el texto y luego guardarlo, o utilizar comandos para crear archivos.
Un comando que se utiliza para crear archivos en el sistema es touch, con él podemos entre otras cosas crear archivos en el sistema.
Estoy estudiando Python, así que quería crear un archivo para practicar lo que estoy estudiando. Así que podemos usar el tacto para crear este archivo para nosotros.
touch estudios.py

Pero ¿cómo podemos saber si este archivo fue realmente creado? Podemos listar el directorio y ver si está allí.

Nuestro archivo ha sido creado, ahora podemos editarlo. Pero ¿tiene sentido dejar este archivo en el sistema? Ahora sabemos dónde está y qué significa, pero ¿qué pasa cuando queremos tener más archivos relacionados con el estudio de Python? Sería bueno poner este archivo en una carpeta para organizar mejor las cosas.
Entonces, digamos a la terminal que cree un directorio (mkdir, make directory) donde podamos colocar nuestros archivos de estudio:
mkdir estudios

¿Se creó realmente la carpeta? Vamos a enumerar nuevamente el directorio para estar seguros:

Genial, tenemos nuestra carpeta estudios y nuestro archivo estudios.py que debería estar dentro de nuestro directorio. ¿Cómo podemos llevarlo allí? ¿Tendremos que crear otro archivo dentro de este nuevo directorio?
Podemos mover (mv) nuestro archivo estudos.py al directorio estudios, por lo que no necesitamos crear otro archivo:
mv estudios.py estudios/

Vamos a listar el directorio estudios/
y ver si el archivo fue movido:
ls estudios/

Como podemos ver nuestro archivo fue movido sin problemas, pero pensando en la organización ¿estamos bien organizados?
Tenemos un directorio estudios/ y dentro de él un archivo estudios.py, pero ¿de qué trata realmente este archivo? ¿Qué estaba estudiando cuando lo creé? Podemos cambiar el nombre del archivo para hacerlo más semántico.
Ya hemos visto el comando para cambiar el nombre de los archivos, pero lo usamos para otro propósito. Primero que todo, voy a ir al directorio estudios/ (cd estudios/) y pedirle a la terminal que renombre (mv) mi archivo estudios.py a recolectando_datos.py:
mv estudios.py recolectando_datos.py

Sé que puede parecer extraño usar el mismo comando para mover y renombrar, ¡pero este comando hace ambas cosas! Entonces, ¿cómo sabemos si estamos eliminando o renombrando un archivo?
Si usamos el comando mv en un archivo y ponemos otro nombre de archivo en el segundo parámetro, lo estamos renombrando, pero si ponemos la ruta de un directorio, el archivo se moverá. El mismo comportamiento se aplica a las carpetas.
Algunos comandos más..
Además de estos, hay varios otros comandos para utilizar en la terminal, por ejemplo podemos eliminar (rm, remove) un archivo:
rm recolectando_datos.py

También podemos usar este comando para eliminar directorios:
rm estudios/

Ups, no pudimos eliminarlo. Esto se debe a que cuando usamos el comando rm para eliminar un directorio, no solo queremos eliminar el directorio. Queremos eliminar el directorio y todos sus archivos. Es decir, queremos que la eliminación sea recursiva (-R, recursivo).

Recursivo para Linux es cuando ejecutamos un comando en un directorio y su contenido también se ve afectado por ese comando. Por ejemplo, cuando eliminamos un directorio. Pero tenga cuidado, no usamos la opción -R para el comando mv cuando estamos moviendo un directorio.
También podemos leer el contenido de un archivo sin abrir un editor de texto. Le decimos a la terminal que lea el contenido de un archivo (cat).
cat wordpress.txt

Pero terminamos con un montón de cosas escritas en la terminal. No necesitamos mantener esta información en la pantalla para siempre, por lo que podemos indicarle que limpie la terminal.
clear
Para borrar todos los comandos previos en nuestra consola y tener una vista más limpia de nuestra pantalla para continuar trabajando en ella.
Hay varios otros comandos y usos para la terminal. Podremos copiar archivos y directorios, acceder a otros ordenadores de forma remota, editar y buscar archivos, actualizar el sistema, particionar y formatear discos duros y pen drives, entre muchas otras cosas.
¿Interesado en descubrir el poder de la terminal? Aquí en Alura tenemos un Curso Online Linux donde aprenderás sobre estos y muchos otros comandos para usar la terminal.
Artículo traducido y adaptado por Luis Puig.