Carpetas o directorios

Cómo mostrar el contenido de una carpeta


GNU/Linux tiene su propia distribución de ficheros y carpetas que, para usuarios que provengan de Windows, puede ser confusa, ya que es bastante diferente. En Linux hay una máxima que se sigue como filosofía: todo son ficheros: los «accesos directos», los dispositivos físicos como el ratón o el teclado, los discos duros, las carpetas, e incluso y obviamente, los ficheros.

Mientras que en Windows, una ruta normal de carpetas podría ser C:\Users\Manz, una ruta equivalente en un sistema operativo Linux sería /home/manz:

Comparativa de carpetas (directorios) en Windows y Linux

En Linux, los nombres de ficheros son sensibles a mayúsculas y minúsculas, es decir, puede coexistir un fichero llamado gato y otro Gato en la misma carpeta, puesto que son ficheros diferentes. Sin embargo, en un sistema Windows, serían el mismo fichero.

¿En qué carpeta estoy?

En una terminal de Linux, normalmente a la izquierda se nos muestra la carpeta donde nos encontramos (o parte de ella). Sin embargo, dependiendo de la configuración de nuestra shell, es posible que no aparezca.

Si queremos saber en que carpeta nos encontramos, la forma más sencilla es utilizar el comando pwd, que son las siglas de print work directory. Escribimos el siguiente comando:

$ pwd
/home/manz

Otra forma de obtener la carpeta actual es mostrar la variable $PWD. Para ello, utilizamos el comando echo que permite mostrar información por pantalla:

$ echo $PWD
/home/manz

Mostrar un árbol de carpetas

Si no tenemos muy clara la estructura de carpetas donde estamos, en Linux existen ciertos comandos que permiten mostrar la estructura de carpetas de una forma más gráfica.

El comando tree nos permite mostrar un árbol de carpetas esquematizado. Por ejemplo, si escribimos tree /var/log nos mostrará algo parecido a esto:

$ tree /var/log

/var/log
|-- alternatives.log
|-- apt
|   |-- eipp.log.xz
|   |-- history.log
|   `-- term.log
|-- btmp
|-- dpkg.log
|-- faillog
|-- lastlog
`-- wtmp

1 directory, 9 files

De esta forma podemos ver «pseudo-gráficamente» la estructura de carpetas.

Ten en cuenta que el comando tree no suele venir instalado en el sistema, y hay que instalarlo previamente con un sudo apt install tree.

Existe una mejora que es una especie de mezcla entre tree y du, llamada erd (erdtree). Este comando permite mostrar en forma de árbol la estructura de carpeta, pudiendo personalizar como queremos mostrarlo:

erdtree command

Por aquí tienes el github de erdtree, donde puedes encontrar la instalación y el formato de configuración para personalizarlo. Por ejemplo, creando un fichero en ~/.erdtreerc con el siguiente contenido:

--level 2
--icons
--human

-s size

En estas opciones establecemos que como máximo muestre 2 niveles de profundidad de subcarpetas, que muestre iconos de archivos, que muestre el tamaño de archivo de forma legible y que ordene por tamaño. De esta forma, estas opciones serán las opciones por defecto al escribir erd sin parámetros.

Recuerda que el comando erd no viene instalado por defecto. Necesitas compilarlo con Rust mediante cargo install erdtree. Si no lo tienes instalado, revisa guía de instalación de Rust.

Listar ficheros

Al trabajar desde una terminal, es necesario conocer en todo momento los archivos que tenemos en una carpeta, para poder examinarlos o trabajar con ellos. Hay varias formas de hacer esto.

Para ver los ficheros y carpetas del directorio actual, basta con utilizar el comando ls (LiSt files). Esto mostrará una lista en horizontal con todos los ficheros y carpetas encontradas. También podemos especificar la ruta que queremos listar por parámetro, por ejemplo: ls /home. Por ejemplo:

$ ls /

bin  boot  dev  etc  home  lib  lib64  media  mnt
opt  proc root  run  sbin  srv  sys  tmp  usr  var

En algunos casos, puede que el ls devuelva los ficheros sin resaltado de sintaxis de color. Puedes probar con ls --color para ver si muestra los ficheros con colores. Las distribuciones de Linux, suelen crear un alias en el fichero ~/.bashrc o ~/.zshrc para que cuando se escriba ls, realmente se haga un ls --color.

Existen algunos parámetros interesantes para mostrar más información al listar ficheros y carpetas, como por ejemplo ls -lh, donde la l usa el formato ancho (más información) y la h muestra «en humano» el tamaño de los ficheros (usando unidades para que sea más fácil).

Aquí vemos algunos de los más interesantes:

ParámetrosDescripción
-l (long)Usa el formato ancho para mostrar datos adicionales (tamaño, permisos, etc...)
-a (all)Muestra también ficheros ocultos (que empiezan por punto)
--colorActiva colores al mostrar los ficheros.
-h (human)Muestra el tamaño de los archivos con la unidad K, M o G.
-S (size)Ordena ficheros por tamaño, el más pesado primero.
-t (time)Ordena ficheros por fecha de modificación, el más reciente primero.
-r (reverse)Invierte el orden de los ficheros.

Observa que para indicar varios parámetros, en lugar de escribir, por ejemplo, ls -l -h -S puedes contraer los parámetros y escribir ls -lhS.

Existen dos mejoras del ls muy interesantes, que utilizan el resaltado de sintaxis para que sea más sencillo identificar los permisos u otros detalles rápidamente. Por un lado, tenemos exa y por otro lado, tenemos eza. Ambos están desarrollados en Rust, pero eza es un fork de la comunidad que está más actualizada.

Observa como se ve un eza en una carpeta, con ciertos parámetros:

eza: ls mejorado con sintaxis de color

Aunque no es un reemplazo 100% idéntico en parámetros, puedes crear un alias de ls para que ejecute eza en su lugar. Como curiosidad y para una mejor identificación de ficheros, con el parámetro eza --icons puede mostrar iconos de los tipos de ficheros a la izquierda.

Recuerda que eza es un comando hecho en Rust, por lo que necesitarás instalar Rust e instalarlo con cargo install eza.

¿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