lnes un comando de shell para crear un enlace a un archivo o directorio existente . [ 1 ] Por defecto, el comando crea un enlace duro , pero con la opción de línea de comandos , crea un enlace simbólico . [ 2 ] La mayoría de los sistemas no permiten un enlace duro a un directorio, ya que tales enlaces podrían alterar la estructura de un sistema de archivos e interferir con el funcionamiento de otras utilidades. [ 3 ] El comando puede crear un enlace simbólico a un archivo inexistente. [ 4 ]-s
El comando apareció en el número 2 de las Directrices de Portabilidad de X/Open . [ 5 ] La versión en GNU Core Utilities fue escrita por Mike Parker y David MacKenzie. [ 6 ] El comando está disponible en Windows a través de UnxUtils [ 7 ] y ha sido portado a IBM i . [ 8 ]
Campo de golf
Un enlace permite que más de una ruta haga referencia al mismo archivo.
Un enlace duro es una entrada de directorio que hace referencia al inodo de un archivo (una referencia interna ). Un archivo puede tener varios enlaces duros , cada uno haciendo referencia al mismo inodo . [ 9 ] Crear un enlace duro no copia el contenido del archivo, sino que simplemente hace que otro nombre se asocie con el mismo contenido. Cuando se crea un enlace duro para un archivo, se incrementa un contador en su inodo, y eliminar un enlace duro resulta en la disminución del contador. Un archivo no se elimina (para permitir la reutilización de su espacio de almacenamiento) hasta que su contador de referencias llega a cero. [ 1 ] [ 10 ] Un enlace duro solo puede hacer referencia a un objeto en el mismo sistema de archivos . [ 11 ]
Un enlace simbólico hace referencia a otro archivo mediante su ruta (una referencia simbólica). [ 4 ] Cuando se encuentra durante la resolución de rutas, modifica la resolución de rutas para que se dirija a la ubicación que contiene el enlace simbólico. El contenido de un enlace simbólico es la ruta de destino, que también se puede examinar mediante el readlinkcomando. [ 12 ] Un enlace simbólico puede especificar una ruta que no hace referencia a un archivo existente. La resolución de dicho enlace simbólico fallará hasta que se cree un archivo en la ruta especificada. Además, un enlace simbólico a un archivo existente no se resolverá si el archivo se mueve. [ 9 ]
Usar
Según la Especificación Única de Unix , el lncomando se especifica en el documento Shell and Utilities (XCU). [ 13 ] POSIX incluye una especificación similar. [ 5 ]
Si no se especifica ni el archivo de destino ni el directorio de destino, los enlaces se crean en el directorio de trabajo actual .
Opciones
La especificación indica las opciones de línea de comandos que deben ser compatibles:
-f(force) Sobrescribe un archivo existente si la ruta de salida especifica un archivo existente.-LSi un operando de origen especifica un enlace simbólico, cree un enlace físico al archivo de destino del enlace.-PSi un operando de origen especifica un enlace simbólico, cree un enlace físico al archivo de enlace simbólico.-sCrea enlaces simbólicos en lugar de enlaces duros; causas-Ly-Pdeben ser ignoradas silenciosamente
-LSi se especifica más de una de las opciones mutuamente excluyentes -P, la última opción especificada determinará el comportamiento resultante.
Si -sno se especifica la opción y no se especifica ni la opción -Lni la opción, la implementación define cuál de las opciones y se utiliza por defecto.-P-L-P
Invocación de un solo archivo
El comando crea un nuevo enlace a la ruta indicada por source, almacenado en la ruta indicada por target. La sintaxis es la siguiente:
ln [-fs] [-L|-P] origen destino Invocación de múltiples archivos
El comando crea un nuevo enlace a cada archivo especificado por los source_#operandos, almacenado en un directorio existente indicado por target_dir.
ln [-fs] [-L|-P] origen_1 origen_2 ... directorio_destino Ejemplos
Lo siguiente crea un enlace físico al archivo foo llamado bar .
ln foo bar
Lo siguiente crea un enlace simbólico al archivo foo llamado bar .
ln -s foo bar
Véase también
Referencias
- 1 2 Kernighan, Brian W.; Pike, Rob (1984). El entorno de programación Unix . Englewood Cliffs, NJ: Prentice-Hall. pág . 59. ISBN 013937681X.
- ↑ "ln - The Open Group Base Specifications Issue 7" . pubs.opengroup.org . IEEE y The Open Group. Archivado del original el 6 de marzo de 2019. Consultado el 7 de agosto de 2015 .
- ↑ "¿Por qué no se permiten enlaces duros a directorios en UNIX/Linux?" . unix.stackexchange.com . Archivado del original el 20 de noviembre de 2015 . Consultado el 7 de agosto de 2015 .
- 1 2 "GNU Coreutils: invocación ln" . gnu.org . Free Software Foundation, Inc. Archivado del original el 16 de febrero de 2019. Recuperado el 7 de agosto de 2015 .
- 1 2 – Referencia de shell y utilidades, Especificación única de UNIX , Versión 5 de The Open Group
- ↑ – Manual de comandos generales de Linux de ManKier.com
- ↑ "Adaptaciones nativas para Win32 de algunas utilidades GNU" . unxutils.sourceforge.net . Archivado del original el 9 de febrero de 2006. Consultado el 9 de agosto de 2025 .
- ↑ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . IBM . Archivado (PDF) del original el 18-09-2020 . Recuperado el 05-09-2020 .
- 1 2 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ág. 392. Consultado el 7 de agosto de 2015 .
- ↑ "Hablando UNIX: Todo gira en torno al inodo" . ibm.com . IBM developerWorks. Archivado del original el 24 de septiembre de 2015. Consultado el 7 de agosto de 2015 .
- ^ 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.
- ↑ "readlink(1) - Página man de Linux" . linux.die.net . Consultado el 7 de agosto de 2015 .
- ↑ "La especificación única de UNIX, versión 4 - Descripción general" . unix.org . unix.org. Archivado del original el 15 de enero de 2018. Consultado el 7 de agosto de 2015 .
Enlaces externos
- Programas estándar de Unix
- Utilidades Unix SUS2008
- Comandos de Qshell para IBM i