NAVEGAR ENTRE ARCHIVOS
Este es uno de los capítulos del tutorial El terminal. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
El capítulo anterior del tutorial pudiste ver que era eso de la línea de comandos. En este capítulo vas a dar un paso mas allá, vas a comenzar a navegar entre archivos. Empezando por saber donde te encuentras, para terminar desplazándote y moviéndote a lo largo de todo tu sistema de archivos, solo con tus dedos sin necesidad de recurrir al ratón en ningún momento.
Además de los comandos básicos que se utilizan para navegar entre archivos, he incluido algunos adicionales, que te permitirán o bien, mejorar tu experiencia en la navegación, o bien hacerlo de otra forma, o bien que te aporta mas información.
NOTA DEL CAPÍTULO
En este artículo, solo nos vamos a desplazar entre los diferentes directorios con lo que no es necesario que utilices docker
. Sin embargo, a la hora de probar algunas aplicaciones que indico, tendrás que instalarlas, con lo que si no tienes claro, lo que estás haciendo, no dudes en recurrir a docker
para evitarte inseguridad.
Recuerda que para iniciar el contenedor, deberás ejecutar,
docker container start <nombre-del-contendor>
Y luego vamos al terminal,
docker exec -it <nombre-del-contenedor> /bin/bash
ECHO
Antes de meterte en faena necesitas conocer un comando que utilizarás en mas de una ocasión. Se trata de echo
. Este es uno de los comandos mas ampliamente utilizados, sobre todo en scripts. Este comando nos permite mostrar texto directamente en el terminal. Algunos ejemplos para que conozcas su uso,
echo hola
nos mostraráhola
- Ahora introducimos una variable, para ello, ejecutaremos lo siguiente
nombre=Lorenzo
echo Hola $nombre
Esto nos mostrará Hola Lorenzo
¿QUIENES SOMOS?
Si, ya se que sabes quien eres ?. Sin embargo, en el terminal, puedes estar utilizando un usuario u otro, dependiendo de lo que estés haciendo. No quiero adelantarme en este aspecto, pero, si que te interesa recordar este comando whoami
. De esta manera sabrás el usuario que utilizas.
Así, por ejemplo en mi caso, si utilizo whoami
en un terminal cualquiera me mostrará lorenzo
. Sin embargo, si lo hago en el contenedor, lo que dice es que siy root
.
Otra opción es utilizar echo $USER
. Sin embargo, no siempre te devolverá el usuario. Depende de lo que esté configurado en el shell. Así, para conocer las variables definidas, puedes utilizar printenv
.
En este caso, para un shell de mi equipo al ejecutar echo $USER
, mostrará lorenzo
. Mientras que si esto mismo lo hacemos en nuestro contenedor docker, no nos devolverá nada.
¿DONDE ESTAMOS?
Ahora que ya sabes quien eres ?, lo siguiente que querrás saber es donde estás.
- Con
pwd
podrás ver en que directorio te encuentras. Igual que en el caso de nuestro usuario, también podemos utilizarecho $PWD
para conocer el directorio en el que nos encontramos. Aquí hay que hacer una pequeña matización, si utilizamospwd -L
nos mostrará el directorio actual con enlaces simbólicos, mientras que si utilizamospwd -P
nos mostrará la dirección real. uname -a
. Por supuesto, no podemos quedarnos en saber donde nos encontramos. También nos interesa saber el sistema operativo y la arquictura que utilizamos. Para esto, tendremos que ejecutaruname -a
. En mi caso me devuelve lo siguiente,
Linux xps13 4.18.0-13-generic #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
. Este comando nos da información relativa a la distribución que estamos utilizando. De nuevo, en mi caso, el resultado de ejecutar este comando, es el siguiente,
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.10
Release: 18.10
Codename: cosmic
Es posible que te estés preguntando que es eso de los enlaces simbólicos. No es mas que una etiqueta, una forma de llamar a un directorio o un archivo. Con un enlace simbólico podemos tener un acceso rápido a un directorio o archivo que se encuentra en otro lugar de nuestro equipo.
Por otro lado, en la línea de comandos, tal y como vimos en el capítulo anterior, verás algo como esto root@7b69de258bbc:/usr/local/lib#
. Con est ya sabes tanto quien eres root
, como donde te encuentras /usr/local/lib
. Entonces ¿para que estos comandos?. Hay dos razones. Por un lado, esto depende de la configuración establecida. Es posible que no muestre ningún tipo de información. Por otro lado si estamos haciendo un script, no vemos la línea de comandos.
¿QUE HAY POR AQUÍ?
Ahora ya sabes quien eres y donde te encuentras, pero ¿Que es lo que hay donde estás?. Para poder navegar entre archivos, es necesario conocer no solo donde te encuentras, sino también que otros directorios hay, para poder navegar o moverte por ellos.
ls
. Este primer comando nos muestra el contenido del directorio en el que nos encontramos. Es necesario conocer las opciones de ls, porque depende de lo que indiquemos nos mostrará un resultado u otro. Algunas de las opciones básicas sería,ls -a
te muestra los archivos ocultosls -l
imprimirá el resultado con un formato largo, dando todo tipo de información.ls -h
los tamaños de los archivos aparecerán en formato legible.
tree
. Esta herramienta no viene instalada por defecto en tu distribución, con lo que para poder utilizarla necesitarás instalarla. Para instalarlo,
sudo apt update
sudo apt install tree
Así por ejemplo, si ejecutamos tree -L 1 -d
para que solo nos muestre el primer nivel de sub directorios, nos mostrará algo como lo que ves a continuación,
root@7b69de258bbc:/usr# tree -L 1
.
|-- bin
|-- games
|-- include
|-- lib
|-- local
|-- sbin
|-- share
`-- src
8 directories, 0 files
La ventaja de utilizar tree
es que te da una visión gráfica de tu arbol de directorios.
df
es una herramienta que te muestra información del sistema de archivos. Para que no se muestren algunos tipos de sistemas de archivos tienes que utilizar la opción-x
. Así, por ejemplo, para que no muestre todos los sistemas de archivos que generan los paquetes snap, nuestra opción sería-x squashfs
. Así, por ejemplo, en mi caso la ejecución dedf
me muestra la siguiente información,
$ df -x tmpfs -x squashfs
S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
udev 4012860 0 4012860 0% /dev
/dev/sda2 50132760 41805996 5750420 88% /
/dev/sda1 632532 8812 623720 2% /boot/efi
/dev/sda7 161374080 137756012 15391260 90% /datos
du
. Esta utilidad te servirá sobre todo para conocer el uso de espacio de disco. Indicarte que tiene gran número de opciones, con lo que tendrás que utilizar la ayuda para seleccionar las que consideras mas importantes. Así, por ejemplodu -chd 1
te mostrará el primer nivel de directorios,-d 1
, en formato legible-h
y el espacio total ocupado-c
. Así, en mi caso, muestra el siguiente resultado para/usr
,
$ du -chd 1
8,0K ./games
4,8G ./lib
24M ./libx32
24M ./lib32
43M ./include
22M ./sbin
2,8G ./share
165M ./local
1,5M ./libexec
395M ./src
832M ./bin
9,0G .
9,0G total
Indicarte que la estructura de directorios en Linux es mas o menos fija. Me refiero a que es mas o menos fija, a que puede cambiar ligeramente con la distribución que utilices. De esta manera, en mi caso es el siguiente,
root@7b69de258bbc:/# tree -L 2 -d
.
|-- bin
|-- boot
|-- dev
|-- etc
| |-- apt
| |-- cron.daily
| |-- cron.weekly
| |-- dpkg
| |-- init.d
| |-- kernel
| |-- systemd
| `-- update-motd.d
|-- home
| `-- lorenzo
|-- lib
| |-- init
| |-- lsb
| |-- systemd
| |-- terminfo
| |-- udev
| `-- x86_64-linux-gnu
|-- lib64
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- srv
|-- sys
| |-- bus
| |-- class
| |-- dev
| |-- devices
| |-- firmware
| |-- fs
| |-- hypervisor
| |-- kernel
| |-- module
| `-- power
|-- tmp
|-- usr
| |-- bin
| |-- games
| |-- include
| |-- lib
| |-- local
| |-- sbin
| |-- share
| `-- src
`-- var
|-- backups
|-- cache
|-- lib
|-- local
|-- lock -> /run/lock
|-- log
|-- mail
|-- opt
|-- run -> /run
|-- spool
`-- tmp
No aparecen todos los directorios, porque he eliminado algunos de ellos, dejando los que me han parecido mas relevantes.
Con toda seguridad, tarde o temprano, tendrás que recurrir a uno de ellos, con lo que te recomiendo que tengas en mente, como puedes ver el arbol de archivos.
NAVEGAR ENTRE ARCHIVOS
Ahora que ya sabes donde estás y su contenido, es muy probable que quieras cambiar de directorio. Moverte o navegar a un directorio superior o inferior. Para ello tienes la herramienta cd
. Esta herramienta te permite cambiar el directorio de trabajo en el que te encuentras. Pero además tiene algunas llamadas interesantes. Por ejemplo,
cd
ycd ~
te llevarán a tu directoriohome
.cd .
te mantiene en el directorio en el que te encuentrascd ..
este te llevará al directorio inmediatamente superior, si es que hay directorio superior, claro.cd -
te lleva al directorio en el que te encontrabas anteriormente.cd /
por supuesto, te lleva al directorio raiz.bd
es una herramienta que nos ayuda a desplazarnos a un directorio superior de forma sencilla. Así por ejemplo, si nos encontramos en/dir1/dir2/dir3/dir4/dir5/dir6
y queremos movernos adir3
, podemos o bien ejecutarcd ../../../
o bienbd dir3
. Está clara la ventaja. Esta herramienta no se encuentra instalada por defecto. Para instalar esta utilidad, simplemente ejecutasudo apt install bd
.
EL HISTORIAL DE COMANDOS
Lo normal cuando estás utilizando el terminal, es que repitas órdenes ejecutadas con anterioridad. Algunas son sencillas, y las tienes muy interiorizadas. Sin embargo, en ocasiones utilizas alguna herramienta que tiene multitud de opciones y que te resultará difícil de recordar, sobre todo si nos las utilizas con frecuencia.
Para soslayar este problema, puedes recurrir al historial. Y es que cada una de las órdenes que ejecutas en el terminal se guarda en un registro. De esta forma, recuperar una orden anterior, es tan sencillo como o bien utilizar algún atajo, o bien consultar directamente este registro, consultar el historial.
⬆
óCtrl+P
. Te permite desplazarte entre las órdenes ejecutadas anteriormente.⬇
óCtrl+N
. Este segundo atajo es justo el opuesto al anterior, pues te permite desplazarte hacia delante en el historial. Siempre que no hayas llegado al final.Ctrl+R
. Te permite realizar una búsqueda de las órdenes que has ejecutado. Se trata de una búsqueda inversa, es decir, de las últimas ejecutadas hacia las primeras.history
. Si ejecutashistory
verás un listado de todas las órdenes que has ejecutado. Cada una de las órdenes ejecutadas está precedida por un número. Este número te permite acceder a estas órdenes, para que de esta forma te evites volver a escribir la orden en cuestión. Es una forma sencilla de navegar por el historial de órdenes ejecutadas. Así,!n
se refiere a la ordenn
. De esta forma, si, por ejemplo, escribes en el terminal!123
ejecutrá la orden número123
.- Si ejecutas
!-n
ejecutará la orden númeron
contando desde el final.
tab
. Este atajo, realmente no pertenece al historial, pero seguro te será de mucha ayuda, pues te permite autocompletar las órdenes que estás escribiendo en el mismo. De esta manera si escribehist
y pulsas la teclatab
, se completará la orden hastahistory
.
Más información,
Listado de capítulos
Estos son todos los capítulos del tutorial El terminal,
- 2.- La línea de comandos
- 3.- Navegar entre archivos
- 4.- Gestionar archivos en Linux
Archivo localizado en https://www.atareao.es/tutorial/terminal/navegar-entre-archivos/