Una vez sabemos el directorio actual en el que ejecutan los comandos, ¿cómo lo cambiamos? O más en general, ¿cómo se pueden referenciar ficheros y carpetas en el intérprete?
Linux organiza ficheros y carpetas en un estructura de árbol. Un fichero está siempre en una carpeta, y una carpeta puede contener ficheros y subcarpetas. La carpeta de más alto nivel en esta jerarquía en Linux siempre tiene el nombre “/”. Cuidado con la inclinación de esta barra, pues “\” tiene otro significado diferente.
Todo fichero o carpeta tiene una ruta
absoluta que es la secuencia de carpetas que se atraviesan
desde la raíz separadas por el símbolo “/” y que termina con
su propio nombre. Por ejemplo,
/dirA/dirB/dirC/fichero.txt
es la ruta absoluta del
fichero fichero.txt
almacenado en la carpeta
dirC
que a su vez está contenida en la carpeta
dirB
, a su vez contenida en la carpeta
dirA
almacenada en la raíz del sistema de
ficheros. El programa konsole que abre la ventana
con el intérprete está configurado para mostrar la ruta absoluta del
directorio actual en la barra de título de la ventana tal y como se
muestra en la figura 13.1.
A todo usuario en Linux se le asigna una carpeta a partir de la cual puede almacenar sus ficheros. El intérprete permite abreviar su ruta con el símbolo “~”. El comando ls sin ningún dato adicional muestra los ficheros en el directorio actual, pero si tras el nombre del comando se escribe una ruta, muestra los ficheros en esa ruta. Por tanto, el comando ls ~ muestra los ficheros en la carpeta del usuario.
Además de las carpetas y ficheros creados por el usuario o los programas, toda carpeta Linux tiene dos subcarpetas definidas por defecto:
“..”: Es la carpeta del nivel superior en la jerarquía de ficheros que contiene a esta. Esta subcarpeta también esta presente en la raíz del sistema de ficheros (la carpeta con ruta absoluta “/”), pero apunta a si misma.
“.”: Es la propia carpeta que aparece como si fuese también una subcarpeta. Se puede considerar como una “autoreferencia” o apuntador a si misma.
Estas carpetas son a todos los efectos carpetas normales
en el sistema; es decir, se pueden utilizar en las rutas. Por ejemplo, la ruta
/dirA/dirB/dirC/../fichero2.txt
se refiere al fichero
que está almacenado en la carpeta dirB
, pues desde
dirC
, la carpeta ..
apunta a su
predecesor, dirB
. La siguiente figura
muestra la interpretación de esta ruta
así como el equivalente de las carpetas “..” y
“.”.
Como consecuencia de la existencia de las carpetas
“.” y “..”, un fichero puede tener múltiples
rutas absolutas equivalentes. Por ejemplo, las siguientes rutas se
refieren todas al fichero.txt
de la figura 13.2:
/dirA/dirB/dirC/../dirC/fichero.txt
,
/dirA/dirB/dirC/./././fichero.txt
,
/dirA/dirB/dirC/../../../dirA/dirB/dirC/./fichero.txt
,
etc. Utiliza el comando ls para mostrar por pantalla el
contenido de las carpetas de los niveles superiores del directorio actual
hasta la carpeta raíz.
La rutas absolutas identifican de manera única cualquier fichero o carpeta en el sistema, pero pueden llegar a ser muy largas y por tanto costosas para escribir en un comando en el intérprete. La alternativa es utilizar rutas relativas.
Una “ruta relativa” es una secuencia de
nombres de carpetas separadas por “/” que no comienza por el
símbolo “/” (si lo hiciera sería una ruta absoluta) y que se
interpretan considerando como prefijo el directorio actual. Asumiendo que
el directorio actual del intérprete es dirC
la
siguiente figura muestra la interpretación de diferentes
rutas relativas. Nótese que ninguna de ellas comienza por el
“/”.