Aquí tenemos que enfrentar una concepción comúnmente equivocada, aun entre usuarios de UNIX®, que principalmente se debe al hecho de que los vínculos tal y como los hemos visto (erróneamente llamados vínculos “duros”) sólo están asociados a archivos regulares (y hemos visto que este no es el caso – e incluso que los vínculos simbólicos están “vinculados”). Pero esto requiere que expliquemos primero qué son los vínculos simbólicos (En inglés los vínculos simbólicos se denominan “softlinks”, o más comúnmente “symlinks”).
Los vínculos simbólicos son archivos de un tipo particular que sólo contienen una cadena de caracteres arbitraria, que puede, o no, apuntar a un nombre de archivo existente. Cuando se menciona un vínculo simbólico en la línea de comandos o en un programa, de hecho se accede al archivo al que apunta, si es que existe. Por ejemplo:
$ echo Hola >miarchivo $ ln -s miarchivo mivinculo $ ls -il total 4 169 -rw-rw-r-- 1 reina reina 6 sep 10 21:30 miarchivo 416 lrwxrwxrwx 1 reina reina 6 sep 10 21:30 mivinculo -> miarchivo $ cat miarchivo Hola $ cat mivinculo Hola
Puede ver que el tipo de archivo para
mivinculo
es 'l'
, por
Link (Vínculo) Los derechos de
acceso para un vínculo simbólico son insignificantes: siempre serán
rwxrwxrwx
. También puede ver que este
es un archivo diferente de
miarchivo
, ya que su número de inodo es
diferente. Pero se refiere al archivo
miarchivo
de manera simbólica, por lo tanto
cuando ingresa cat mivinculo, en realidad estará
imprimiendo el contenido del archivo
miarchivo
. Para demostrar que un vínculo
simbólico contiene una cadena de caracteres arbitraria, podemos
hacer lo siguiente:
$ ln -s "No soy un archivo existente" otrovinculo $ ls -il otrovinculo 418 lrwxrwxrwx 1 reina reina 20 sep 10 21:43 otrovinculo -> No soy un archivo existente $ cat otrovinculo cat: otrovinculo: No existe el fichero o el directorio $
Pero los vínculos simbólicos existen porque superan varias de las limitaciones de los vínculos normales (“duros”):
no se puede crear un vínculo a un inodo en un directorio que está en un sistema de archivos diferente a dicho inodo. La razón es simple: el contador de vínculos se almacena en el inodo en sí mismo, y los inodos no pueden compartirse entre los sistemas de archivos. Los vínculos simbólicos sí lo permiten;
no se pueden vincular dos directorios para evitar crear ciclos en el sistema de archivos. Pero Usted puede hacer que un vínculo simbólico apunte a un directorio y usarlo como si realmente fuera un directorio.
Por lo tanto los vínculos simbólicos son muy útiles en muchas circunstancias, y muy a menudo, la gente tiende a usarlos para vincular archivos entre sí, incluso cuando podría haberse usado un vínculo normal. No obstante, una ventaja de los vínculos normales es que Usted no pierde el archivo si borra el “original”.
Finalmente, si ha observado atentamente, sabrá que el tamaño de un vínculo simbólico es simplemente el tamaño de la cadena de caracteres.