linux - simbolicos - ln-v enlace simbolico
¿Cómo un enlace simbólico de un archivo en Linux? (17)
Quiero hacer un enlace simbólico en Linux. He escrito este comando de bash donde la primera ruta es la carpeta a la que quiero vincular y la segunda ruta es la fuente compilada.
ln -s ''+basebuild+''/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
¿Es esto correcto?
Creando enlaces simbólicos o soft-links en Linux:
Abra el indicador de Bash y escriba el comando mencionado a continuación para crear un enlace simbólico a su archivo:
A) Vaya a la carpeta donde desea crear un enlace flexible y escriba el comando como se menciona a continuación :
$ ln -s (path-to-file) (symbolic-link-to-file)
$ ln -s /home/user/file new-file
B) Vaya a la ruta de su nuevo nombre de archivo y escriba :
$ ls -lrt (To see if the new-file is linked to the file or not)
Ejemplo:
ls -lrt
lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file -> /home/user/file
Note: Where, A -> B Means, A is symbolically linked to B
(Porque una imagen ASCII vale más que mil caracteres).
Una flecha puede ser una mnemotécnica útil, sobre todo porque se ve casi exactamente como se ve en la dirección de Emacs.
Y el panorama general para que no se confunda con la versión de Windows
Linux:
ln -s target <- linkName
Windows:
mklink linkName -> target
También puedes ver estos como
ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"
El " from-here
no debería existir todavía, se creará, mientras que el to-here
ya debería existir (IIRC).
(Siempre me confundo si varios comandos y argumentos deben involucrar una ubicación preexistente, o una que se realizará).
EDIT: Todavía se está hundiendo lentamente para mí; Tengo otra forma en la que he escrito en mis notas.
ln -s (target exists) (link is made)
mklink (link is made) (target exists)
A la pregunta original:
''ln -s ''+basebuild+''/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal''
De hecho, esto creará un enlace simbólico ( -s
) desde el archivo / directorio:
<basebuild>/IpDome-kernel/kernel
a tu nuevo enlace
/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
Aquí hay algunas maneras de ayudarte a recordar:
Primero, está la http://linux.die.net/man/1/ln del http://linux.die.net/man/1/ln . Puede acceder a esto a través de la búsqueda "man ln" en google, o simplemente abra una ventana de terminal y escriba man ln
y obtendrá la misma información. La página de manual dice claramente:
En [OPCIÓN] ... [-T] OBJETIVO LINK_NAME (primera forma)
Si no tiene que buscar o leer una página de manual cada vez, quizás le resulte más fácil recordar que todos los comandos de Nix funcionan de la misma manera :
cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link
cp
copia un archivo que existe actualmente (el primer argumento) en un nuevo archivo (el segundo argumento).
mv
mueve un archivo que existe actualmente (el primer argumento) a un nuevo lugar (el segundo argumento)
Del mismo modo, vincula un archivo que existe actualmente (el primer argumento) a un nuevo enlace (el segundo argumento) *
La última opción que me gustaría sugerir es que puede crear sus propias páginas de manual que sean fáciles de leer y (para usted) de encontrar / recordar. Simplemente haga un script de shell simple que le dé la sugerencia que necesita. Por ejemplo ♦ :
En tu archivo .bash_aliases puedes colocar algo como:
commandsfx() {
echo "Symlink: ln -s /path/to/file /path/to/symlink"
echo "Copy: cp /file/to/copy /destination/to/send/copy"
}
alias ''cmds''=commandsfx
Luego, cuando lo necesite, desde la línea de comandos, simplemente escriba cmds
y obtendrá la sintaxis correcta de manera que pueda leerlo y entenderlo rápidamente. Puede hacer estas funciones tan avanzadas como desee para obtener la información que necesita, depende de usted. Incluso puedes hacer que sean interactivos, así que solo tienes que seguir las indicaciones ... algo como:
makesymlink() {
echo "Symlink name:"
read sym
echo "File to link to:"
read fil
ln -s $fil $sym
}
alias ''symlink''=makesymlink
* - bueno, obviamente todos pueden tomar diferentes parámetros y hacer cosas diferentes y pueden trabajar en archivos y directorios ... pero la premisa es la misma
♦ - ejemplos usando el shell bash
Cómo crear enlaces simbólicos en vagrant. Pasos:
- En vagrant file crea una carpeta sincronizada. eg config.vm.synced_folder "F: / Sunburst / source / sunburst / lms", "/ source" F: / Sunburst / source / sunburst / lms: - donde el código fuente, / source: - ruta del directorio dentro del vagrant
- Vagrant up y escriba vagrant ssh y vaya al directorio de origen, por ejemplo, cd source
- Verifique que su estructura de carpetas de código fuente esté disponible en el directorio de origen. por ejemplo, / source / local
- Luego, vaya al directorio de la máquina invitada donde están los archivos que están asociados con el navegador. Después de obtener copia de seguridad del archivo. ej. sudo mv local local_bk
- Luego cree un enlace simbólico, por ejemplo, sudo ln -s / source / local local. local significa el nombre del enlace (nombre de la carpeta en la máquina invitada que va a enlazar) si necesita eliminar el enlace simbólico: - escriba sudo rm local
Encuentro un poco confuso las terminologías "destino" y "directorio" en la información del hombre.
El objetivo es la carpeta con la que estamos sincronizando y el directorio el enlace simbólico real (no el directorio con el que usted estará simulando), si alguien está experimentando la misma confusión, no se sienta solo.
Esta es mi interpretación de crear un enlace simbólico (en linux):
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
Puede navegar a la carpeta donde desea crear el enlace simbólico y ejecutar el comando o especificar la RUTA COMPLETA para su enlace simbólico en lugar de NAME-OF-YOUR-SYMLINK.
cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
O
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK
Espero que esto ayude a aquellos (todavía) ligeramente confundidos.
Esto es , así que asumo que quieres el código:
El siguiente código supone que desea crear un enlace simbólico llamado /tmp/link
que enlaza con /tmp/realfile
.
PRECAUCIÓN : aunque este código comprueba si hay errores, ¡NO verifica si /tmp/realfile
existe realmente! Esto se debe a que un enlace muerto sigue siendo válido y, dependiendo de su código, es posible que (rara vez) desee crear el enlace antes del archivo real.
Shell (bash, zsh, ...)
#!/bin/sh
ln -s /tmp/realfile /tmp/link
Muy simple, al igual que lo haría en la línea de comandos (que es el shell). Todo el manejo de errores es realizado por el intérprete de shell. Este código supone que tiene un intérprete de shell en funcionamiento en /bin/sh
.
Si es necesario, aún podría implementar su propio manejo de errores usando $?
variable que solo se establecerá en 0 si el enlace se creó correctamente.
C y C ++
#include <unistd.h>
#include <stdio.h>
int main () {
if( symlink("/tmp/realfile", "/tmp/link") != 0 )
perror("Can''t create the symlink");
}
symlink
solo devuelve 0 cuando se puede crear el enlace. En otros casos, estoy usando perror
para contar más sobre el problema.
Perl
#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
print STDERR "Can''t create the symlink: $!/n"
}
Este código supone que tiene un intérprete de perl 5 en /usr/bin/perl
. symlink
solo devuelve 1 si se puede crear el enlace. En otros casos, estoy imprimiendo el motivo del fallo en la salida de error estándar.
Hay dos tipos de enlaces:
enlaces simbólicos: consulte una ruta simbólica que indica la ubicación abstracta de otro archivo
enlaces duros: Consulte la ubicación específica de los datos físicos.
En su caso enlaces simbólicos:
ln -s source target
puede consultar http://man7.org/linux/man-pages/man7/symlink.7.html
puedes crear enlaces demasiado duros
Un enlace duro a un archivo es indistinguible de la entrada de directorio original; cualquier cambio en un archivo es efectivamente independiente del nombre utilizado para hacer referencia al archivo. Los enlaces duros normalmente no se refieren a directorios y pueden no abarcar sistemas de archivos.
ln source link
Me gustaría presentar una versión simple en inglés de las descripciones ya presentadas.
ln -s /path-text/of-symbolic-link /path/to/file-to-hold-that-text
El comando "ln" crea un enlace-ARCHIVO, y la "-s" especifica que el tipo de enlace será simbólico. Se puede encontrar un ejemplo de un archivo de enlace simbólico en una instalación de WINE (usando "ls -la" para mostrar una línea del contenido del directorio):
lrwxrwxrwx 1 me power 11 Jan 1 00:01 a: -> /mnt/floppy
La información de archivo estándar está a la izquierda (aunque note que el primer carácter es una "l" para "enlace"); el nombre del archivo es "a:" y el "->" también indica que el archivo es un enlace. Básicamente, le dice a WINE cómo Windows "Drive A:" debe asociarse con una unidad de disquete en Linux. Para crear un enlace simbólico SIMILAR a eso (en el directorio actual, y hacer esto para WINE es más complicado; use la utilidad "winecfg"):
ln -s /mnt/floppy a: //will not work if file a: already exists
Para crear un enlace simbólico / soft link, use:
ln -s {source-filename} {symbolic-filename}
p.ej:
ln -s file1 link1
Para crear un nuevo enlace simbólico (fallará si ya existe un enlace simbólico):
ln -s /path/to/file /path/to/symlink
Para crear o actualizar un enlace simbólico:
ln -sf /path/to/file /path/to/symlink
Si se encuentra en el directorio donde desea crear un enlace simbólico, ignore la segunda ruta.
cd myfolder
ln -s target
Se creará un enlace simbólico de target
dentro de mi myfolder
.
Sintaxis general
ln -s TARGET LINK_NAME
ln -s sourcepath linkpathname
Nota:
-s hace enlaces simbólicos en lugar de enlaces duros
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
ln -s TARGET LINK_NAME
Donde el -s
hace simbólico.
ln -s source_file target_file
ln -s target linkName
Puedes echar un vistazo a la página de manual aquí:
ln [-Ffhinsv] source_file [target_file]
link, ln -- make links
-s Create a symbolic link.
A symbolic link contains the name of the file to which it is linked.
An ln command appeared in Version 1 AT&T UNIX.