Moverse entre carpetas

Cómo navegar por directorios desde terminal


Ahora que sabemos en la carpeta en la que nos encontramos y como ver su contenido, algo que es fundamental al trabajar en una terminal es saber moverse entre directorios o cambiar de carpetas.

Cambiar de carpetas

Existen varios comandos que nos permiten movernos entre carpetas. A continuación te presento algunos de los más interesantes, desde el clásico cd hasta el práctico j (autojump):

Para movernos entre carpetas, lo más habitual suele ser utilizar el comando cd (change directory) seguido del nombre de la carpeta (movimiento relativo) o ruta completa (movimiento absoluto) a la que queremos acceder.

$ pwd            # /home
$ cd manz        # Accede a una ruta relativa
$ pwd            # /home/manz
$ cd /var/log    # Accede a una ruta absoluta

Ten en cuenta que al escribir el nombre de la carpeta o ruta, puedes pulsar TAB y el sistema te sugiere las opciones que encajen con lo que has escrito (o autocompleta si solo hay una opción), de modo que no tendrás que escribirlo por completo.

Existen algunas palabras clave para referirnos a rutas específicas:

# «Sale» de la carpeta actual y se mueve a la carpeta padre
cd ..

# Accede a la carpeta personal del usuario
cd ~
cd

De la misma forma, se pueden hacer combinaciones como ls ~/.oh-my-fish/, que es lo mismo que ls /home/manz/.oh-my-fish/ (si soy el usuario manz) o ls ../etc sería equivalente a ls /etc si estoy en la carpeta /home.

Otra forma de trabajar entre carpetas, es utilizando los comandos pushd (push directory) y popd (pop directory). Ambos funcionan trabajando con una estructura de pila donde podemos hacer push (para meter una carpeta) o pop (para sacar una carpeta).

De esta forma, si sabemos que más adelante necesitaremos volver a acceder a una ruta compleja, podemos hacer lo siguiente:

$ pushd /etc/nginx          # Guarda la ruta /etc/nginx en la pila
$ cd /home/manz             # Cambiamos a otra ruta
...                         # Trabajamos en esa ruta
$ popd                      # Vuelve a la ruta guardada previamente en la pila

Podemos ejecutar varias veces el comando pushd e ir apilando varias rutas o carpetas diferentes. También tener en cuenta que se puede utilizar . como parámetro de pushd para guardar la ruta actual en la que nos encontramos de forma rápida.

Si acostumbras a trabajar en una terminal, es muy común perder bastante tiempo escribiendo los nombres de las carpetas o pensando cuál era la ruta, en la que estabas, si no estás muy familiarizado con ella.

El comando autojump es una mejora interesante del cd, ya que se basa en saltar a la carpeta «frecuente» que más se aproxime al parámetro escrito; esto es, la ruta o carpeta más frecuente y más reciente. Veamoslo con un ejemplo:

$ cd /etc/nginx
$ ls -lh
$ cd /home/manz
$ j nginx
/etc/nginx

En el ejemplo anterior, al escribir j nginx, el comando autojump accede a la ruta /etc/nginx, porque es la carpeta más reciente a la que hemos accedido frecuentemente que encaja con el texto escrito por parámetro: nginx. El comando nos muestra por pantalla la carpeta coincidente, y cambia a ella automáticamente.

Nota: El comando j es un alias de autojump y no viene instalado por defecto en el sistema. Para instalarlo en Debian, basta con hacer un sudo apt install autojump y añadir la línea source /usr/share/autojump/autojump.bash (la extensión depende de la shell que usemos). Existen otras mejoras similares como z, v o fasd.

Carpetas del sistema

Linux tiene una estructura de carpetas bien definida, donde cada carpeta tiene una finalidad muy concreta, y en ella se guardan los archivos correspondientes. Por otra parte, mientras que en Windows la ruta raíz (la primera carpeta del sistema) es C:\, en Linux es /, puesto que todo parte de esa ruta raíz.

Desde esa ruta / nos podemos encontrar varias carpetas, cada una con una finalidad concreta:

CarpetaDescripción
/Carpeta raíz del sistema. Equivalente a C:\ en Windows.
/binBinarios (comandos ejecutables) principales.
/bootArchivos de arranque. Equivale a C:\bootmgr en Windows.
/devDispositivos físicos de hardware.
/etcArchivos de configuración. Equivale al registro de Windows.
/homeCarpetas del usuario. Equivale a C:\Users en Windows.
/libBibliotecas del sistema. Equivale a C:\Windows\System32.
/lost+foundArchivos corruptos o recuperados.
/mediaMedios extraíbles. Generalmente, carpetas de CD/DVD, usb, unidades extraíbles...
/mntMontaje temporal reservado para el administrador de sistemas.
/optAplicaciones o paquetes adicionales (opcionales).
/procProcesos internos del sistema.
/rootCarpeta personal del administrador.
/runInformación reciente.
/sbinArchivos binarios reservados para root. Sólo accesible si tienes privilegios.
/srvDatos específicos para servicios.
/sysNueva versión o evolución de /proc/
/tmpArchivos temporales. Muchas veces, eliminados al reiniciar el sistema.
/usrDatos de paquetes instalados. Equivale a C:\Archivos de Programa en Windows.
/varLogs, cache, variables, etc...

Normalmente, como usuarios, estaremos continuamente trabajando sobre la carpeta de nuestro usuario, por ejemplo, /home/manz, que es la zona de trabajo de ese usuario.

Más adelante, en otro artículo, veremos como realizar otras operaciones de manipulación como copiar, borrar, mover y crear carpetas o ficheros.

Explorador de archivos

Otra opción interesante para trabajar con carpetas en Linux es utilizar un explorador de archivos de terminal. Antes de instalar uno, recuerda que es recomendable no instalarlo simplemente por evitar aprender a utilizar los comandos cd. Eso te llevaría a evitar aprender una herramienta sólo y exclusivamente por comodidad.

Los exploradores de archivos de terminal más populares son los siguientes:

Explorador de archivosDescripción
nnnExplorador de archivos pequeño, rápido y sin necesidad de configuración.
mcExplorador de archivos completo, diseñado en base al clásico Norton Commander de los 90.
rangerExplorador de archivos de terminal inspirado en VIM.
lfExplorador de archivos de terminal minimalista desarrollado en Go.

Si esto exploradores te ayudan a moverte por las estructuras de carpetas en tus primeros pasos, está bien, pero intenta no evitar aprender a utilizar el comando cd y anteriores, ya que probablemente desemboque en carencias.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev