Section: User Commands (1)
Updated: Noviembre de 1998
Index Return to Main
Contents
ln - crea enlaces entre ficheros
Opciones de POSIX: [-f]
Opciones de GNU (en la forma más corta): [-bdfinsvF] [-S sufijo-de-respaldo] [-V {numbered,existing,simple}] [--help] [--version] [--]
Hay en Unix dos conceptos de `enlace', llamados usualmente enlace duro (o físico) y enlace blando (o simbólico). Un enlace duro es simplemente un nombre para un fichero. (Y un fichero puede tener varios nombres. Se borra del disco solamente cuando se elimine el último nombre. El número de nombres lo muestra ls(1). No existe el concepto de nombre `original': todos tienen la misma categoría. Usualmente, pero no necesariamente, todos los nombres de un fichero se encuentran en el sistema de ficheros que también contiene sus datos.)
Un enlace blando (o enlace simbólico, o acceso directo) es un animal completamente diferente: es un ficherito especial que contiene un nombre de camino. Así, los enlaces blandos pueden apuntar a ficheros en sistemas de ficheros diferentes (posiblemente montados por NFS desde máquinas diferentes), y no tienen por qué apuntar a ficheros que existan realmente. Cuando se accede a ellos (con las llamadas al sistema open(2) o stat(2)), el núcleo del sistema operativo reemplaza una referencia a un enlace blando con una referencia al fichero nombrado en el nombre de camino. (Sin embargo, con rm(1) y unlink(2) se borra el mismo enlace, no el fichero al cual apunte. Existen las llamadas al sistema especiales lstat(2) y readlink(2) que leen el estado de un enlace blando y el nombre de fichero al cual apunte. Para algunas otras llamadas al sistema, entre distintos sistemas operativos hay algunas variaciones y faltas de certeza sobre si la operación actúa en el mismo enlace, o sobre el fichero al que apunte.)
ln crea enlaces entre ficheros. De forma predeterminada, hace enlaces duros; con la opción -s, hace enlaces simbólicos (o `blandos').
Si sólo se da un fichero, lo enlaza en el directorio en curso; esto es, crea un enlace a ese fichero en el directorio de trabajo, con el nombre igual al (último componente) del fichero. (Esto es una extensión de GNU.) De otro modo, si el último argumento se refiere a un directorio existente, ln creará enlaces a cada fichero origen mencionado, en ese directorio, con un nombre igual al (último componente) de ese fichero origen. (Pero vea la descripción de la opción --no-dereference más abajo.) De otra forma, si sólo se dan dos ficheros, crea un enlace llamado dest al fichero origen. Es un error que el último argumento no sea un directorio y que se den más de dos ficheros.
De forma predeterminada, ln no borra ficheros o enlaces simbólicos que ya existan. (Así, puede emplearse para propósitos de bloqueo: tendrá éxito solamente si dest no existía ya.) Pero se le puede forzar a borrarlos con la opción -f.
En implementaciones existentes, si es que fuera posible hacer un enlace duro a un directorio, esto sólo debe ser hecho por el súper-usuario. POSIX prohíbe que la llamada al sistema link(2) y la utilidad ln hagan enlaces duros a directorios (pero no prohíbe que los enlaces duros crucen los limites de los sistemas de ficheros).
Cuando el destino es un directorio de verdad (no un enlace simbólico a uno), no hay ambigüedad. El enlace se crea en ese directorio. Pero cuando el destino especificado es un enlace simbólico a un directorio, hay dos maneras de tratar la petición del usuario. ln puede tratar el destino justo como si fuera un directorio normal y crear el enlace en él. Por otra parte, el destino puede ser visto como un no-directorio: como el enlace simbólico en sí mismo. En ese caso, ln debe borrar o hacer copia de respaldo de ese enlace simbólico antes de crear el nuevo enlace. El comportamiento predeterminado es tratar un destino que sea un enlace simbólico a un directorio como justamente un directorio.
Las versiones de GNU de programas como cp, mv, ln, install y patch harán una copia de respaldo de ficheros que estén a punto de ser sobreescritos, cambiados o destruidos, si se desea. Y para indicar que se desean estos ficheros de respaldo se emplea la opción -b. Se especifica cómo deberían nombrarse mediante la opción -V. En el caso de que el nombre del fichero de respaldo se dé con el nombre del fichero extendido con un sufijo, este sufijo se especifica con la opción -S.
Esta opción corresponde a la variable de Emacs `version-control'. Los MÉTODOs válidos son (se aceptan abreviaturas no ambiguas):
Las variables LANG, LC_ALL, LC_CTYPE y LC_MESSAGES tienen los significados usuales. Para la versión de GNU, las variables SIMPLE_BACKUP_SUFFIX y VERSION_CONTROL controlan cómo se nombran los ficheros de respaldo, según se ha descrito anteriormente.
POSIX 1003.2. Sin embargo, POSIX 1003.2 (1996) no discute sobre enlaces blandos. Los enlaces blandos fueron introducidos por BSD, y no existen en sistemas System V release 3 (ni más antiguos).
(1), rm(1), link(2), lstat(2), open(2), readlink(2), stat(2), unlink(2)
Esta página describe ln según se encuentra en el paquete fileutils-4.0; otras versiones pueden diferir un poco. Envíe por correo electrónico correcciones y adiciones a la dirección aeb@cwi.nl. Informe de fallos en el programa a fileutils-bugs@gnu.ai.mit.edu.
This document was created by man2html, using
the manual pages.
Time: 06:16:19 GMT, January 22, 2005