Linux / Comando ln: crear enlaces duros y simbólicos
ln es un comando para crear enlaces duros o enlaces simbólicos entre archivos. El comportamiento predeterminado es crear un enlace duro, y usando -s se crea un enlace simbólico que guarda la cadena de ruta del destino.
En este texto se explican las diferencias estructurales entre los dos tipos de enlaces, la sintaxis básica, la selección entre enlaces simbólicos relativos o absolutos, cómo reemplazar enlaces existentes y cómo verificar el estado de un enlace.
¿Qué es el comando ln?
Un enlace duro es otro nombre para el mismo inodo: el registro que identifica un archivo y sus metadatos dentro de un sistema de archivos. Un enlace simbólico es un archivo independiente que guarda una ruta y puede apuntar a otro sistema de archivos o a un directorio. Si elimina uno de varios enlaces duros, los demás conservan el acceso a los datos; si desaparece la ruta de destino de un enlace simbólico, este puede quedar roto.
Sintaxis básica
ln [OPCIONES] DESTINO NOMBRE_DEL_ENLACE
ln [OPCIONES] DESTINO... DIRECTORIO
Si el nombre de archivo o ruta contiene espacios, se debe poner entre comillas, y los nombres que comienzan con un guion se deben especificar después de -- si es posible. Las opciones soportadas pueden variar según la distribución y la versión de GNU Coreutils, por lo que consulte la descripción del sistema actual con ln --help y man ln.
Uso básico de ln
Crear un enlace duro
Se especifica el destino y el nombre nuevo sin opciones. Ambas rutas apuntan al mismo inodo y si se modifica el contenido por un nombre, también se refleja en el otro.
ln original.txt hard-link.txt
stat -c '%i %h %n' original.txt hard-link.txt
Crear un enlace simbólico
Se utiliza -s. La cadena de destino que se guarda en el enlace se puede crear independientemente de si existe o no.
ln -s /opt/myapp/current app-current
readlink app-current
Crear varios enlaces en un directorio
Los dos ejemplos siguientes son alternativas: no los ejecute seguidos sobre los mismos nombres. Cree primero el directorio links. Guardan literalmente las rutas file1 y file2, que se interpretan desde dentro de links. Si los archivos están en el directorio padre, use rutas como ../file1 o -sr para calcular rutas relativas. Crear un enlace no garantiza que exista su destino.
ln -s file1 file2 links/
ln -s -t links file1 file2
Verificar la ruta a la que apunta un enlace simbólico
ln -s normalmente no muestra mensajes de éxito. La cadena de destino registrada dentro del enlace se verifica con readlink.
printf 'demo\n' > original.txt
ln -s original.txt shortcut.txt
readlink shortcut.txt
La salida de ejemplo es original.txt. Las rutas relativas se interpretan en función del directorio donde se encuentra el enlace, por lo que mover el enlace a otra ubicación puede romper el destino.
Opciones principales
| Opciones | Descripción |
|---|---|
-s, --symbolic |
Crear un enlace simbólico en lugar de un enlace duro. |
-r, --relative |
Cree enlaces simbólicos relativos con respecto a la ubicación del enlace. Se utiliza junto con -s. |
-f, --force |
Eliminar el nombre del enlace existente y crear un nuevo enlace. |
-i |
Compruebe antes de reemplazar el nombre del enlace existente. |
-n |
Si el destino es un enlace simbólico que apunta a un directorio, se trata como el propio enlace. |
-T |
Trate el nombre del enlace como una ruta exacta, no como un directorio. |
-b |
Hacer una copia de seguridad del archivo existente que se reemplazará. |
-v |
Mostrar el enlace creado. |
Las opciones largas facilitan entender su significado y también ayudan a revisar scripts. Sin embargo, en scripts donde la portabilidad es importante, primero verifique si el sistema objetivo soporta esas opciones de extensión GNU.
Ejemplos de uso práctico
Crear enlace simbólico relativo
Un enlace relativo es útil si necesita mover el mismo árbol de directorios a otra ubicación. La ruta relativa se interpreta en función del directorio donde se colocará el archivo de enlace, no de la ubicación actual de la shell.
ln -s ../releases/2026-09 app/current
ln -sr /srv/app/releases/2026-09 /srv/app/current
Reemplazo seguro de enlaces existentes
Compruebe primero el nombre existente y el nuevo destino. En GNU, -sfnT sustituye la ruta exacta, pero -f también puede retirar un archivo normal: no comprueba por usted que sea un enlace. No use esta combinación sobre un nombre importante o desconocido.
readlink current
ln -sfnT releases/2026-10 current
readlink current
Verificar tipo de enlace y destino
Use ls -l y readlink para ver el enlace y la cadena almacenada. readlink -f puede aceptar que no exista el último componente de la ruta. Para exigir que exista todo el destino, use readlink -e o test -e. stat sin desreferenciar muestra los metadatos del enlace simbólico.
ls -l app-current
readlink app-current
readlink -f app-current
stat app-current
Comparación con comandos relacionados con ln
| Comando / método | Rol principal | Situaciones adecuadas |
|---|---|---|
| Enlace duro | Otro nombre para el mismo inodo | Archivo normal en el mismo sistema de archivos |
| Enlace simbólico | Archivo separado que almacena la cadena de ruta del destino | Directorio·Otro sistema de archivos·Puntero de distribución |
cp |
Copia de datos independiente | Cuando se debe cambiar por separado del original |
| Montaje bind | Montar la ruta en otra ubicación | Cuando se necesita la exposición del directorio a nivel del sistema de archivos |
Precauciones al usar
Recordar el orden de los argumentos
El formato predeterminado es ln DESTINO NOMBRE_DEL_ENLACE. Si se confunde con la dirección de copia del lenguaje natural, se pueden crear enlaces diferentes a los deseados.
El criterio de un enlace relativo es la ubicación del enlace
Incluso si se ingresa la ruta relativa tal como se ve en el directorio actual, el enlace puede romperse si se crea en otro directorio. ln -sr o use la ruta relativa calculada.
Los enlaces duros no pueden atravesar los límites del sistema de archivos
Los enlaces duros comparten el mismo inodo del sistema de archivos, por lo que no se pueden crear en otros puntos de montaje. Los enlaces duros de directorios también suelen estar limitados.
FAQ
¿El valor predeterminado de ln es un enlace simbólico?
No. El valor predeterminado es un enlace duro, y se necesita -s para crear un enlace simbólico.
Si se elimina el archivo original, ¿el enlace duro también desaparece?
No. Mientras queden otros enlaces duros que apunten al mismo inodo, los datos se mantienen.
¿Cómo puedo verificar si un enlace simbólico está roto?
Al observar la ruta guardada como readlink ENLACE, puede verificar si el destino final existe como readlink -e o test -e.
¿Cuál es mejor, un enlace absoluto o relativo?
Si necesita mover todo el árbol que incluye enlaces, un enlace relativo puede ser mejor; si necesita que la ubicación del enlace apunte a una ruta del sistema fija incluso si la ubicación del enlace cambia, un enlace absoluto puede ser adecuado.
La Lista de comandos de uso frecuente en Linux permite comparar otras operaciones con archivos. Para comprobar las opciones de enlace y su alcance, consulte la Documentación oficial de GNU Coreutils ln y el Manual oficial de GNU Coreutils.




