Ln (Unix)
# Ln (Unix)

El comando ln es una utilidad de comando estándar de Unix que se usa para crear enlaces duros o simbólicos a un archivo o directorio existente. El uso de enlaces duros permite que se puedan asociar múltiples nombres de archivo con el mismo archivo, ya que un enlace duro apunta al inodo de un archivo dado, los datos de donde está almacenado en el disco. Por otro lado, los enlaces simbólicos, también llamados «blandos», son archivos especiales que se refieren a otros archivos por su nombre de archivo.

ln por defecto crea enlaces duros, y cuando es invocado con el parámetro ln -s crea enlaces simbólicos. La mayoría de los sistemas operativos evitan permitir la creación de enlaces duros a los directorios, porque tal capacidad podría romper su estructura de sistema de archivos e interferir el funcionamiento de otras utilidades. Igualmente, el comando ln puede ser usado para crear enlaces simbólicos a archivos que no existen.

## Historia

La versión de ln incluida en GNU Core Utilities fue escrita por Mike Parker y David MacKenzie.

## Tipos de enlaces

Los enlaces permiten que más de un nombre de archivo se refiera al archivo propiamente dicho, en el caso de los enlaces duros, o que actúan como referencia a un nombre de archivo, como en el caso de los enlaces simbólicos. El comando ln puede crear tanto enlaces duros como simbólicos. Específicamente,

* Los enlaces duros, también conocidos simplemente como enlaces, son objetos que asocian el nombre de archivo con el inodo, y por consiguiente al mismo archivo. Un archivo dado en un disco podría tener múltiples enlaces desparramados por toda la estructura de directorios, y todos sus enlaces ser equivalentes, ya que todos se asocian con el mismo inodo. Por lo tanto crear un enlace no copia el contenido del archivo sino que meramente provoca que otro nombre sea asociado al mismo contenido. Cada vez que es creado un enlace duro, se incrementa un contador de enlaces que es parte de la estructura de inodos; un archivo no se borra hasta que su cuenta de referencias es cero. Sin embargo, los enlaces duros solo pueden ser creados en el mismo sistema de archivos, y esto podría ser una desventaja.
* Los enlaces simbólicos son archivos especiales que cuando se encuentran durante la resolución de ruta la modifican para ser llevada a la ubicación que contiene. El contenido de los enlaces simbólicos es por entonces la ruta de ubicación, que puede ser examinada usando la utilidad de línea de comando readlink. El enlace simbólico puede contener una cadena de texto arbitraria que pueden no referirse a la ubicación de un archivo existente. Un enlace simbólico tal fallará hasta que se cree un archivo en la ubicación que contiene. Por contraste, un enlace simbólico apuntado a un archivo existente fallará si este es movido a otra ubicación, o renombrado.

## Sintaxis

La sintaxis básica de este comando es la siguiente:

ln [-s] <archivo o directorio apuntado> <nombre del enlace o directorio de destino>

