Introducción - Estructura - Historia - Acceso - Filesystem - Shell - Comandos

En un capítulo anterior dí la definición de sistema de archivo y algunas características del Sistema de Archivos. Aquí describiré otros elementos de este componente de Unix, que ha sido adoptado por otros sistemas operativos como la familia de sistemas MS-DOS/Windows.

Nombres de Archivo

En Unix, cada archivo tiene un nombre que le da el usuario para poder utilizarlo. Un nombre de archivo puede ser casi cualquier cadena de caracteres, donde el único caracter ASCII que no se puede usar es el slash (/), que en Unix se usa como separador de directorios y archivos. Existen otros caracteres que se recomienda no usarlos pues tienen significado especial para el intérprete de comandos de Unix, como son ! # & ( ) * ' " ` ; | < > @ $ ^ { } ? : \ espacio backspace tab + - y los caracteres de control. Las mayúsculas y minúsculas son consideradas distintas en Unix y, por ejemplo, los nombres CARTA, carta y Carta corresponden a tres archivos distintos.

Se recomienda que los nombres de archivo no tengan más de 14 caracteres porque, salvo casos especiales, Unix considera iguales a dos archivos si coinciden en los primeros 14 caracteres (esto no es el caso para versiones modernas de Unix, las que pueden aceptar nombres de archivo de más de 80 caracteres).

Directorios

Los directorios son la base del sistema jerárquico de archivos de Unix. Son grupos de archivos que sirven para clasificarlos y organizarlos de acuerdo a las necesidades de los usuarios. Un directorio puede contener otros directorios y archivos, y así sucesivamente. En teoría, no existe limitación del número de archivos y directorios que se puedan crear en un directorio, con excepción del tamaño del dispositivo donde se almacena. El sistema de directorios y archivos se puede graficar en lo que se conoce como estructura de árbol.

                      /
 .---.---.---.---.---.---+---.---.---.---.---.---.---.
 |   |   |   |   |   |   |   |   |   |   |   |   |   |
 |  boot |  etc  |  lib  |  opt  |  root |  tmp  |  var
bin     dev    home     mnt     proc   sbin     usr  |
                 |                                   |
          .------^--.----.-----.          .----.-----| 
        httpd      lgm  memo  rmg        log  run  spool
   .------+-----.   |    |     |
cgi-bin  html  logs |  pubwww  |
                    |    .-----^--+------.------.
                    |  GNUstep  monos  pubwww  recetas
    .------.--------^-.           |
  disk  escritos  software    .---^---.  
           |          |     dibujos  fotos  
        .--^--.    .--^----.
       tbr   sds ch-city  utils

Este diagrama representa parte de un sistema de directorios y archivos típico, donde la raíz del árbol se encuentra en la parte superior. Se le llama directorio raíz o símplemente raíz y se denomina con el símbolo / (slash). De ella se ramifican todos los demás directorios del sistema. Por ejemplo, dentro del directorio home, que es un subdirectorio de la raíz, hay cuatro subdirectorios, httpd, lgm, memo y rmg, los que a su vez contienen otros subdirectorios. El directorio donde cada usuario se encuentra al iniciar la sesión se llama HOME o directorio de trabajo. Cada usuario tiene un único directorio de trabajo, desde el cual se puede mover hacia arriba y abajo en el árbol de directorios. Generalmente el directorio de trabajo es un subdirectorio del directorio /home, y tiene como nombre el nombre de presentación del usuario.

Nótese que pueden haber varios archivos con nombres iguales en distintos directorios, pero no dentro de un mismo directorio. Recuérdese que se considera la diferencia entre mayúsculas y minúsculas en la distinción de nombres de archivo.

¿Cómo se distinguen los archivos uno de otro? En Unix se pueden especificar nombres de archivo incluyendo los directorios en que están ubicados. Este tipo de nombre se llama nombre de camino o nombre de ruta, pues describe el camino a seguir para llegar al archivo. Son de dos tipos:

Los nombres de camino completos son los que van desde la raíz hasta un archivo. Por ejemplo:

Los nombres de archivos y directorios se separan con slashes. En los nombres de camino completos, el primer / corresponde al directorio raíz.

Especificar un nombre de camino completo elimina toda ambigüedad, ya que no pueden existir dos archivos con el mismo nombre de camino completo, pero puede ser molesto para el usuario. En la mayoría de los sistemas, es común mantener cinco, diez, más incluso, niveles de directorio y, especificar un nombre de camino como este:

/mnt/cdrom/19971125/webs/xingzangwushuxuexiao.cn/html/zhongwen/xingzhang/lishi.html

requeriría de mucha memoria y de un buen rato de tecleado. Por suerte, existe otra forma de especificar los nombres de archivo, la que se conoce como nombre de camino relativo. Se llama así pues se especifica el camino en forma relativa al directorio actual. Por ejemplo, si estoy en el directorio de trabajo de rmg y quiero ver una foto que rmg tiene entre sus monos, se puede especificar de estas dos formas:

/home/rmg/monos/fotos/lr1.jpg

o

monos/fotos/lr1.jpg

Un punto único (.) se utiliza para referirse al directorio actual. Por ejemplo, el nombre de camino

./prog/cuentas

es el nombre de camino del archivo cuentas del directorio prog del directorio actual. Los dos puntos (..) especifican el directorio padre del directorio actual, que es el siguiente de más alto nivel en el árbol de directorios. Si estamos en el directorio

/home/lgm/software/ch-city/

El directorio padre sería software, quien tiene como padre a lgm, quien a su vez tiene como padre a home, el que es hijo del directorio raíz ([/]). Este último es el único directorio sin padre, y [/../] es un sinónimo de [/]. El doble punto se utiliza para especificar cosas más abajo en el sistema de directorios. Por ejemplo, si estamos en /home/lgm/disk/, el nombre de camino relativo ../../rmg/recetas/curanto.txt apunta al archivo cuya ruta completa (o nombre de camino completo) es /home/rmg/recetas/curanto.txt.

Archivos especiales y vínculos

En Unix, además de los directorios y archivos, existen otros medios de almacenamiento de datos que también son tratados como archivos. Son los vínculos y los archivos especiales.

Los vínculos sirven para que un archivo tenga dos o más nombres. Un vínculo es eso, es un segundo nombre para un archivo. Si dos usuarios desean compartir la información de un archivo, pueden tener copias separadas de él, pero si uno realiza cambios, el otro no los podrá conocer. Los vínculos solucionan ese problema, haciendo que cada usuario parezca tener una copia del archivo, pero en realidad es un sólo archivo con dos nombres. Además, cualquier cambio que haga cada usuario es hecho en la misma versión de éste y no sólo ahorra espacio, sino que asegura que la copia utilizada por cada uno es la misma. Claro que tiene algunas limitaciones:

No se pueden utilizar para asignar más de un nombre a un directorio ni tampoco para compartición de archivos entre computadoras distintas. Para solucionar este problema, en la versión cuatro del Sistema V de Unix, los llamados vínculos simbólicos, archivos que sólo contienen el nombre de otro archivo. Cuando el sistema opera sobre ellos, se dirige al archivo que apunta cada uno. No sólo se pueden utilizar para asignar más de un nombre a un archivo, sino también para hacer lo mismo con un directorio y para ser usado por vínculos de otros sistemas físicos de archivos. Esto último posibilita la compartición de archivos entre computadoras conectadas en red.

Un archivo especial es aquel que representa a un dispositivo físico, como un terminal, un dispositivo de comunicación o una unidad de almacenamiento. Para el usuario, Unix trata a estos archivos como archivos ordinarios; lee y escribe en ellos de la misma forma. En realidad, Unix trata a casi todo como si fuera un archivo y, una vez que se aprende a manejar los archivos, se puede manejar todos los objetos del sistema.

Copyright © 2000~2013, Luis Alejandro González Miranda ( locoluis en gmail ) - Alojado en Mitocondria