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
:
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 unsudo 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:
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 mediantecargo 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 conls --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 escribals
, realmente se haga unls --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ámetros | Descripció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) |
--color | Activa 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:
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 concargo install eza
.