ln
El comando ln (abreviatura de link, enlace) es una utilidad estándar en sistemas operativos tipo Unix para crear enlaces entre archivos o directorios. Permite establecer tanto enlaces físicos o duros (hard links) como enlaces simbólicos (symbolic links o symlinks), facilitando el acceso a un mismo recurso desde diferentes ubicaciones del sistema de archivos sin duplicar su contenido.
| Categoría | Gestión de archivos y enlaces |
|---|---|
| Disponible en | Linux / macOS / Sistemas Unix-like |
| Equivalente en Windows | mklink (en CMD) o New-Item -ItemType SymbolicLink / HardLink (en PowerShell) |
| Sustituye a | No sustituye a otro comando, sino que es la única herramienta nativa estándar en la terminal para gestionar y crear enlaces a nivel de inodos en el sistema de ficheros. |
| ¿Requiere permisos de administrador? | No de forma general. Un usuario normal puede crear enlaces simbólicos y enlaces duros sobre los archivos y directorios de los cuales posea permisos adecuados. Sin embargo, en sistemas tradicionales, crear enlaces duros sobre directorios suele estar restringido al superusuario (sudo) por motivos de seguridad del sistema. |
¿Qué significa su nombre?
LN proviene de la palabra link (enlace), haciendo referencia directa a su función de enlazar referencias de archivos dentro del sistema operativo.
Representa la orden nativa del sistema para apuntar a un mismo inodo o crear accesos indirectos entre ficheros.
¿Para qué sirve?
El comando ln sirve para crear conexiones entre archivos. Existen dos tipos principales de enlaces:
- Enlaces duros (Hard Links): apuntan directamente al mismo inodo en el disco. Si modificas el archivo original o el enlace, los cambios se reflejan instantáneamente en ambos, ya que comparten los mismos datos físicos. Si borras el archivo original, el contenido sigue accesible a través del enlace duro hasta que se eliminen todas sus referencias.
- Enlaces simbólicos (Symlinks): funcionan de manera similar a los accesos directos de otros sistemas operativos. Crean un archivo especial que contiene la ruta de texto hacia el archivo o directorio de destino. Si se borra el archivo original, el enlace simbólico se rompe.
Se utiliza habitualmente para simplificar rutas largas, gestionar versiones de software, compartir librerías o permitir que un archivo resida en varias carpetas simultáneamente sin duplicar espacio en disco.
Sintaxis
ln [opciones] archivo_original enlace_destino
Las opciones más habituales son:
| Opción / Subcomando | Descripción |
|---|---|
-s |
Crea un enlace simbólico (soft link) en lugar de un enlace duro. Es la opción más utilizada. |
-f |
Fuerza la creación del enlace sobrescribiendo el archivo de destino si este ya existe. |
-v |
Modo detallado (verbose), muestra un mensaje confirmando la creación de cada enlace. |
-n |
Trata un enlace simbólico que apunta a un directorio como si fuera un archivo normal (evita sobreescribir dentro del directorio enlazado). |
Comandos más utilizados
| Comando | Descripción |
|---|---|
ln -s /var/www/html/mi_web web_actual |
Crea un enlace simbólico llamado web_actual que apunta a la ruta web indicada. |
ln archivo.txt copia_dura.txt |
Crea un enlace duro (hard link) apuntando al mismo inodo del archivo original. |
ln -sf /ruta/nueva/app /usr/bin/app |
Fuerza la creación o actualización de un enlace simbólico para que apunte a un nuevo ejecutable. |
ln -s -v ~/documentos/nota.txt ./enlace_nota |
Crea un enlace simbólico con salida detallada (verbose) confirmando la operación. |
Equivalencia con otros sistemas
| Acción | Linux (ln) |
Windows (PowerShell / CMD) |
|---|---|---|
| Crear enlace simbólico | ln -s origen destino |
New-Item -ItemType SymbolicLink -Path destino -Value origen (PowerShell) o mklink /D destino origen (CMD) |
| Crear enlace duro | ln origen destino |
New-Item -ItemType HardLink -Path destino -Value origen (PowerShell) o mklink /H destino origen (CMD) |
Ejemplos
Crear un enlace simbólico a un archivo de configuración
ln -s /etc/nginx/sites-available/mi_sitio /etc/nginx/sites-enabled/mi_sitio
Crear un enlace duro de un documento importante
ln reporte.pdf respaldo_duro.pdf
Crear un enlace simbólico a una carpeta con salida detallada
ln -s -v /var/log/aplicacion/ ~/logs_app
Ejemplo de salida
'./logs_app' -> '/var/log/aplicacion/'
¿Cómo interpretar la salida?
- Mensaje de confirmación (
->): al utilizar la opción-v, indica claramente qué ruta de enlace simbólico se ha creado y hacia qué archivo o directorio de destino está apuntando. - Ausencia de salida: si el comando se ejecuta correctamente sin opciones adicionales, se realiza de forma silenciosa (comportamiento habitual en Unix).
Errores habituales
- Intentar crear un enlace simbólico o duro utilizando una ruta de destino que ya existe sin utilizar la opción de forzado (
-f), lo que genera el error File exists (El archivo ya existe). - Crear enlaces simbólicos utilizando rutas relativas incorrectas, lo que provoca que el enlace se rompa (quede "huérfano") si se reubica el archivo de enlace de su directorio original.
Conceptos relacionados
- Estructura de Inodos en Linux
- Enlaces Duros vs Enlaces Simbólicos
- Rutas absolutas y relativas
- Punteros y sistemas de archivos
- Gestión de accesos directos en Unix
Comandos relacionados
lsrmcpmvstat
Curiosidades
A diferencia de los accesos directos de Windows, que son archivos independientes gestionados por el explorador, los enlaces simbólicos en Linux son interpretados directamente por el núcleo del sistema operativo a nivel de sistema de ficheros, lo que permite que cualquier aplicación acceda al destino de manera totalmente transparente.
Prácticas propuestas
- Crea un archivo de texto llamado
origen.txtcon algo de contenido y genera un enlace duro hacia él llamadoduro.txt. Modifica el original y comprueba que el contenido del duro cambia automáticamente. - Crea un enlace simbólico (
-s) del mismo archivo llamadosimbolico.txt. Borra el archivoorigen.txte intenta leer el enlace simbólico para comprobar que se ha roto. - Crea un enlace simbólico hacia un directorio de tu sistema utilizando una ruta absoluta y verifica su funcionamiento mediante
ls -l. - Experimenta utilizando la opción detallada (
-v) al crear un enlace para observar el mensaje de confirmación por pantalla. - Intenta crear un enlace en una ruta donde ya exista un fichero y comprueba el error devuelto, luego soluciónalo aplicando la opción de forzar (
-f).
Consejo: Al crear enlaces simbólicos, se recomienda encarecidamente utilizar rutas absolutas (que comiencen por /) para evitar que el enlace quede inservible si decides moverlo de carpeta en el futuro.
Preguntas de reflexión:
- ¿Qué diferencia fundamental existe a nivel de inodos entre un enlace duro (hard link) y un enlace simbólico (symlink)?
- ¿Qué ocurre con el archivo de destino si se elimina el archivo original al que apuntaba un enlace duro? ¿Y si apuntaba un enlace simbólico?
- ¿Para qué sirve exactamente el parámetro
-sal ejecutar el comandoln? - ¿Por qué se recomienda por lo general el uso de rutas absolutas al crear enlaces simbólicos en lugar de rutas relativas?
- ¿Qué error muestra el sistema operativo si intentamos crear un enlace en una ruta donde ya existe un archivo con el mismo nombre y no añadimos opciones de sobreescritura?
- ¿Qué utilidad aporta el indicador
-v(verbose) al utilizar el comandoln?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué diferencia fundamental existe a nivel de inodos entre un enlace duro (hard link) y un enlace simbólico (symlink)?
Un enlace duro comparte exactamente el mismo número de inodo y los mismos bloques de datos físicos que el archivo original. En cambio, un enlace simbólico es un archivo independiente que posee su propio inodo y cuya única función es almacenar una cadena de texto con la ruta del archivo de destino.
2. ¿Qué ocurre con el archivo de destino si se elimina el archivo original al que apuntaba un enlace duro? ¿Y si apuntaba un enlace simbólico?
Si se borra el archivo original de un enlace duro, el contenido sigue intacto y accesible a través del enlace, ya que el inodo sigue teniendo referencias activas en el disco. Si se borra el archivo original de un enlace simbólico, el enlace se rompe ("queda huérfano") y deja de funcionar, ya que el archivo de texto que indicaba la ruta ya no encuentra el destino.
3. ¿Para qué sirve exactamente el parámetro -s al ejecutar el comando ln?
Sirve para indicar que el enlace que se desea crear debe ser de tipo simbólico (symbolic link) en lugar de un enlace duro predeterminado.
4. ¿Por qué se recomienda por lo general el uso de rutas absolutas al crear enlaces simbólicos en lugar de rutas relativas?
Porque las rutas absolutas (que empiezan desde la raíz /) garantizan que el enlace encontrará siempre el archivo de destino sin importar a qué carpeta o directorio se mueva el propio enlace simbólico en el futuro.
5. ¿Qué error muestra el sistema operativo si intentamos crear un enlace en una ruta donde ya existe un archivo con el mismo nombre y no añadimos opciones de sobreescritura?
Muestra el mensaje de error File exists (El archivo ya existe), protegiendo así los recursos existentes frente a sobrescrituras accidentales.
6. ¿Qué utilidad aporta el indicador -v (verbose) al utilizar el comando ln?
Proporciona retroalimentación visual inmediata en la terminal, imprimiendo un mensaje de confirmación que detalla la creación de cada enlace y la ruta de destino asociada.