Un sistema multiusuario necesita una forma de permitir a los usuarios tener distintos ficheros con el mismo nombre. También debe permitirles organizar los ficheros en grupos lógicos. La mayoría de sistemas operativos resuelven estas cuestiones proporcionando un sistema de ficheros jerárquico.
En un sistema de este tipo los ficheros se organizan en directorios, que no son otra cosa que un tipo especial de fichero que agrupa a otros. Puesto que un directorio puede contener también otros directorios, la estructura del sistema de ficheros se asemeja a un árbol.
Como se puede observar en la figura, hay un directorio en la parte superior del árbol con un nombre especial (‘/’) y llamado directorio raíz (root).
Organización del sistema de ficheros
Siguiendo las convenciones habituales en Unix, el sistema de ficheros de Linux se organiza en una serie de directorios estándar de propósito específico. Algunos de los más importantes son los siguientes:
/dev | Contiene ficheros representando los dispositivos físicos del ordenador. |
/etc | Está reservado para ficheros de configuración del sistema. |
/lib | Contiene las librerías necesarias para ejecutar los programas que residen en /bin. |
/proc | Contiene ficheros especiales que reciben información del núcleo. |
/sbin | Contiene programas que sólo son accesibles para el usuario ‘root’ |
/usr | Contiene los programas de uso común para todos los usuarios y presenta una estructura con directorios /etc, /bin o /lib propios para dichos programas |
/var | Contiene información temporal sobre la ejecución de algunos programas. |
/home | Contiene los directorios personales de los usuarios del sistema. |
El directorio personal
A diferencia de otros sistemas operativos donde tras inicializar el ordenador el usuario accede por defecto al directorio raíz, en Linux cada usuario lo hace a un directorio personal (home directory) ubicado en algún lugar de la jerarquía de directorios del sistema. A menudo los directorios personales están ubicados debajo del directorio /home.
Directorios especiales
Existe una notación especial para hacer referencia a dos directorios en particular, el directorio actual y el directorio inmediatamente superior al mismo. El primero, se representa mediante un punto(.), mientras que el segundo se indica mediante dos puntos (..)
Rutas absolutas y relativas
Una ruta es el «nombre completo» de un fichero que incluye no sólo su nombre, sino su situación en la jerarquía, separando cada directorio mediante una barra (/). Por defecto, el intérprete asume que los comandos introducidos y los nombres de ficheros y directorios a los que se hace referencia poseen una ruta relativa al directorio actual. Al conectarnos por primera vez, el directorio actual es el directorio personal. Supongamos que acabamos de hacerlo y que es /home/luis. Si escribimos una orden como lista-ficheros-graficos, el intérprete asumirá que la ruta completa del fichero es /home/luis/lista-ficheros-graficos. La idea es que no es necesario indicar toda la ruta, sino sólo el desplazamiento necesario teniendo en cuenta el punto del sistema de ficheros donde estamos situados. También podemos indicar ficheros situados más arriba en la jerarquía. Por ejemplo, si escribimos la orden anterior como ../../bin/lista-ficheros-gráficos, el intérprete buscará el comando dos niveles por encima y luego bajará a bin.
En algunas ocasiones puede ser más conveniente o fácil indicar un nombre completo utilizando una ruta absoluta. Este tipo de rutas comienza siempre por una barra (/) para indicar que la ruta comienza a definirse desde el directorio raíz, independientemente de cuál sea nuestro directorio actual. En el último de los ejemplos anteriores, podríamos especificar la situación del comando como /bin/lista-ficheros-gráficos.
Montaje de unidades de disco
En Linux, a diferencia de otros sistemas, las unidades no se representan con letras (por ejemplo, ‘C:’) sino que se ubican en algún punto de la jerarquía de directorios. La acción de vincular un directorio de la jerarquía a una unidad de disco se denomina montar la unidad.
Si añadimos unidades de disco a nuestro sistema, deberemos montarlas para poder usarlas. Sea un disco duro, un CD, o una unidad USB la instrucción a usar será siempre la misma:
mount [dispositivo] [punto_de_montaje]
Donde dispositivo es el disco que queremos montar y punto_de_montaje el directorio donde queremos montarlo. Los discos duros los encontraremos en /dev/sdXN dónde la X representa el disco (el primero será a, el segundo b, etc.) y N será el número de la partición (en caso de que el disco esté particionado). Así, para montar un segundo disco en el directorio /mnt/discoduro escribiremos:
mount /dev/sdb /mnt/discoduro
El directorio /mnt/discoduro debe existir y estar vacío. Si tiene datos, no estarán disponibles hasta que no se desmonte la unidad, aunque no se perderán.
Para desmontar el disco usaremos la instrucción umount:
umount [dispositivo]
Evidentemente, el disco duro principal sda siempre estará montado, generalmente con varias particiones (sda1, sda2, sda3) . Por otra parte, cuando estemos trabajando con servidores remotos, normalmente no necesitaremos montar ni desmontar unidades.