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 deautojump
y no viene instalado por defecto en el sistema. Para instalarlo en Debian, basta con hacer unsudo apt install autojump
y añadir la líneasource /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:
Carpeta | Descripción |
---|---|
/ | Carpeta raíz del sistema. Equivalente a C:\ en Windows. |
/bin | Binarios (comandos ejecutables) principales. |
/boot | Archivos de arranque. Equivale a C:\bootmgr en Windows. |
/dev | Dispositivos físicos de hardware. |
/etc | Archivos de configuración. Equivale al registro de Windows. |
/home | Carpetas del usuario. Equivale a C:\Users en Windows. |
/lib | Bibliotecas del sistema. Equivale a C:\Windows\System32 . |
/lost+found | Archivos corruptos o recuperados. |
/media | Medios extraíbles. Generalmente, carpetas de CD/DVD, usb, unidades extraíbles... |
/mnt | Montaje temporal reservado para el administrador de sistemas. |
/opt | Aplicaciones o paquetes adicionales (opcionales). |
/proc | Procesos internos del sistema. |
/root | Carpeta personal del administrador. |
/run | Información reciente. |
/sbin | Archivos binarios reservados para root. Sólo accesible si tienes privilegios. |
/srv | Datos específicos para servicios. |
/sys | Nueva versión o evolución de /proc/ |
/tmp | Archivos temporales. Muchas veces, eliminados al reiniciar el sistema. |
/usr | Datos de paquetes instalados. Equivale a C:\Archivos de Programa en Windows. |
/var | Logs, 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 archivos | Descripción |
---|---|
nnn | Explorador de archivos pequeño, rápido y sin necesidad de configuración. |
mc | Explorador de archivos completo, diseñado en base al clásico Norton Commander de los 90. |
ranger | Explorador de archivos de terminal inspirado en VIM. |
lf | Explorador 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.