en (Unix)

Utilidad de gestión de archivos de Unix
En
Autor(es) original(es)Laboratorios Bell de AT&T
Desarrollador(es)Varios desarrolladores comerciales y de código abierto
Lanzamiento inicial3 de noviembre de 1971 ; hace 53 años ( 03-11-1971 )
Sistema operativoUnix , similar a Unix , IBM i
PlataformaMultiplataforma
TipoDominio
Licenciacoreutils : licencia GPLv3+

El lncomando es una utilidad de comandos estándar de Unix que se utiliza para crear un enlace duro o un enlace simbólico (symlink) a un archivo o directorio existente. [1] El uso de un enlace duro permite asociar varios nombres de archivo con el mismo archivo, ya que un enlace duro apunta al inodo de un archivo determinado, cuyos datos se almacenan en el disco . Por otro lado, los enlaces simbólicos son archivos especiales que hacen referencia a otros archivos por su nombre . [2]

El lncomando crea enlaces duros de forma predeterminada y, cuando se lo llama con el parámetro de línea de comandos , crea enlaces simbólicos. [3] La mayoría de los sistemas operativos impiden la creación de enlaces duros a directorios , ya que dicha capacidad podría alterar la estructura de un sistema de archivos e interferir con el funcionamiento de otras utilidades. [4] Sin embargo, el comando se puede utilizar para crear enlaces simbólicos a archivos inexistentes. [2] ln -sln

Versiones

lnapareció en la Edición 2 de las Directrices de Portabilidad X/Open . [5] La versión lnincluida en GNU coreutils fue escrita por Mike Parker y David MacKenzie. [6] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU Unix. [7] El comando ln también ha sido portado al sistema operativo IBM i . [8]

Los enlaces permiten que más de un nombre de archivo haga referencia al mismo archivo, como en el caso de un enlace físico , o que actúen como punteros a un nombre de archivo, como en el caso de un enlace simbólico . Tanto los enlaces físicos como los simbólicos se pueden crear mediante el lncomando. En concreto,

  1. Los enlaces duros , también conocidos simplemente como enlaces, son objetos que asocian el nombre del archivo con el inodo y, por lo tanto, el contenido del archivo en sí. [1] Un archivo determinado en el disco podría tener múltiples enlaces dispersos a través de la jerarquía de directorios , y todos los enlaces serían equivalentes ya que todos se asocian con el mismo inodo . [9] Por lo tanto, la creación de un enlace no copia el contenido del archivo, sino que simplemente hace que otro nombre se asocie con el mismo contenido. Cada vez que se crea un enlace duro, se incrementa un contador de enlaces que es parte de la estructura del inodo ; un archivo no se elimina hasta que su recuento de referencias llega a cero. [1] [10] Sin embargo, los enlaces duros solo se pueden crear en el mismo sistema de archivos ; esto puede resultar una desventaja. [11]
  2. Los enlaces simbólicos son archivos especiales que, cuando se encuentran durante la resolución de la ruta, modifican la resolución de la ruta para que se lleve a la ubicación que contiene el enlace simbólico. El contenido del enlace simbólico es, por lo tanto, la cadena de la ruta de destino , que también se puede examinar utilizando la readlinkutilidad de línea de comandos. [12] El enlace simbólico puede contener una cadena arbitraria que no haga referencia a la ubicación de un archivo existente. Un enlace simbólico de este tipo fallará hasta que se cree un archivo en la ubicación que contiene el enlace simbólico. Por el contrario, un enlace simbólico a un archivo existente fallará si el archivo existente se mueve a una ubicación diferente (o se le cambia el nombre). [9]

Especificación

La lnutilidad en sistemas compatibles con la Especificación Única de Unix se especifica en el documento Shell and Utilities (XCU), que forma parte de la Especificación Única de Unix. [13] Un documento prácticamente idéntico forma parte de POSIX . [5]

La especificación describe dos formas de invocar la lnutilidad. En concreto,

En la invocación de "archivo único", la lnutilidad crea un nuevo vínculo físico (entrada de directorio) para el archivo de origen especificado por el source_fileoperando en la ruta de destino especificada por el target_fileoperando. Sin embargo, si -sse especifica la opción, se crea un vínculo simbólico.
ln [ -fs ] [ -L | -P ] archivo_origen archivo_destino    
En la invocación de "archivos múltiples", la lnutilidad crea un nuevo enlace duro (entrada de directorio) o, si -sse especifica la opción, un enlace simbólico, para cada archivo especificado por el source_fileoperando, en una ruta de destino en un directorio existente nombrado por el operando target_dir.
ln [ -fs ] [ -L | -P ] archivo_fuente_1 archivo_fuente_2 ... directorio_destino      

La especificación también especifica las opciones de línea de comandos que deben admitirse:

-f Forzar la eliminación de las rutas de destino existentes para permitir el enlace.
-L Para cada source_fileoperando que nombre un archivo que sea un enlace simbólico, cree un enlace duro al archivo al que hace referencia el enlace simbólico.
-P Para cada source_fileoperando que nombre un archivo que sea un enlace simbólico, cree un enlace (duro) al enlace simbólico en sí.
-s Crea enlaces simbólicos en lugar de enlaces físicos. Si se especifica la opción -s, las opciones -L y -P se ignoran automáticamente.
Si se especifica más de una de las opciones mutuamente excluyentes -L, -Pla última opción especificada determina el comportamiento de la utilidad.
Si -sno se especifica la opción y no se especifica -Lni la opción a, la implementación define cuál de las opciones y se utilizará como predeterminada.-P-L-P

Si no se especifica ni el archivo ni el directorio de destino, los enlaces se crearán en el directorio de trabajo actual .

Véase también

Referencias

  1. ^ abc Kernighan, Brian W.; Pike, Rob (1984). El entorno de programación Unix . Englewood Cliffs, NJ: Prentice-Hall. p. 59. ISBN 013937681X.
  2. ^ ab "GNU Coreutils: ln invocation". gnu.org . Free Software Foundation, Inc . Consultado el 7 de agosto de 2015 .
  3. ^ "ln - The Open Group Base Specification Issue 7". pubs.opengroup.org . El IEEE y The Open Group . Consultado el 7 de agosto de 2015 .
  4. ^ "¿Por qué no se permiten los enlaces duros a directorios en UNIX/Linux?". unix.stackexchange.com . Consultado el 7 de agosto de 2015 .
  5. ^ ab ln – Referencia de shell y utilidades, La única especificación de UNIX , versión 4 de The Open Group
  6. ^ ln(1)  –  Manual de comandos generales de Linux
  7. ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
  8. ^ IBM . "Programación Qshell para IBM System i versión 7.2" (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
  9. ^ ab Loosemore, Sandra; Stallman, Richard M.; McGrath, Roland; Oram, Andrew; Drepper, Ulrich. Manual de referencia de la biblioteca C de GNU (PDF) . Free Software Foundation, Inc. p. 392 . Consultado el 7 de agosto de 2015 .
  10. ^ "Hablando de UNIX: todo es cuestión del inodo". ibm.com . IBM developerWorks . Consultado el 7 de agosto de 2015 .
  11. ^ Bovet, Daniel P.; Cesati, Marco (2005). Comprensión del kernel de Linux (3ª ed.). Boston, MA: Safari Tech Books en línea. pag. 14.ISBN 0596005652.
  12. ^ "readlink(1) - Página del manual de Linux". linux.die.net . Consultado el 7 de agosto de 2015 .
  13. ^ "La especificación única UNIX, versión 4: descripción general". unix.org . unix.org . Consultado el 7 de agosto de 2015 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Ln_(Unix)&oldid=1173816408"