¿Cómo crear un enlace suave o simbólico?

Respuestas:

666

Ver man ln.

Para crear un enlace simbólico en el /usr/bin/barque haga referencia al archivo original /opt/foo, use:

ln -s /opt/foo /usr/bin/bar

Debería aplicar el comando anterior como root (es decir, con sudo).

Michał Šrajer
fuente
Estoy usando: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redmineobteniendo error:ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
RAJ ...
1
La documentación de Ubuntu dice "Crea enlaces duros por defecto, enlaces simbólicos con --symbolic". ¿La solución anterior creará un enlace simbólico como lo solicitó OP?
Tanay
44
Pensé que César quería poner sus archivos en / opt y / usr / bin para tener el enlace simbólico, no al revés.
accidente
44
@mishap tiene razón en lo que a mí respecta. Es al revés.
Daniel Szmulewicz
2
@kevinmicke después de que su explicación finalmente se diera cuenta de que la explicación de la respuesta se indicó en orden inverso a la orden, haciendo que mi cerebro (y el de otros) la leyeran al revés
Andrew
40

El error es que está escribiendo el comando incorrectamente. La forma correcta es

ln -s /<full>/<path>/<to>/<file> /usr/local/bin

http://ubuntuforums.org/showthread.php?t=2001697

Pedro Arnoldo Machado Durán
fuente
Tenga en cuenta el preludio principal /
maza
Gracias, extrañé totalmente que necesitaba la ruta absoluta al archivo vinculado.
Andi R
21

Si el ejecutable 'p4v' está en / opt / bin / p4v, simplemente puede ejecutar:

sudo ln -s /opt/bin/p4v /usr/bin/p4v
sudo chmod ugo+x /usr/bin/p4v

Sería mejor agregar / opt / bin (o donde sea que esté el ejecutable) a su ruta:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
reset
dv3500ea
fuente
~/.profileSería mejor para la configuración $PATH.
Lekensteyn
puede editar /etc/environmentpara modificar el sistema PATH en todo el sistema.
Michał Šrajer
4

Verifique la ubicación del software con esto.

which application-name #replace for the application you are looking for

por ejemplo

which skype

La salida será esta.

/usr/bin/skype 

Para crear el enlace suave. por ejemplo, desea crear el enlace suave para skypeen su escritorio

ln -s /usr/bin/skype ~/Desktop/

Para más información sobre ln.

man ln

o

ln --help
Hafiz Shehbaz Ali
fuente
2
ln -s -n ./TargetDirectory ./Nickname

Tenga en cuenta que esto funciona si ambos nodos están debajo de usted en el mismo árbol. Puedes usar notación relativa

  • -s comando lo convierte en un enlace simbólico
  • -n hace posible crear un enlace simbólico tipo carpeta
Mohamad El Boudi
fuente
Bienvenido a askubuntu.com. En este caso, $indicar una línea de comando es una opción de estilo y no es probable que sea un problema. Sin embargo, tenga en cuenta que incluir cosas en un bloque de código que no sea el código y su salida puede causar confusión.
J. Starnes
1

Esta plantilla fue más útil para mí que las respuestas anteriores. Probablemente no más correcto, solo menos ofuscado:

ln -s <path/to/real/file-or-folder> <symlink path>

Simplemente reemplace las partes en <>'s

LucasY
fuente
0

Si está diciendo target is not a folder, significa que hay espacios en los nombres de sus carpetas, por ejemplo: New Foldertiene un espacio

Debe editar la ruta y agregar una barra diagonal inversa \después de cada espacio en las rutas

p.ej:

ln -s /opt/bin /usr/var/New\ Folder
Sam
fuente
3
Esta no es una respuesta a la pregunta de los OP. Espere hasta tener suficiente reputación para agregar comentarios.
derHugo
0

He descubierto que es más fácil ir a donde desea que esté el enlace y luego crear el enlace usando sudo ln -s /path/to/source/file, en lugar de hacerlo ln -s target source.

Entonces en tu caso lo haría cd /usr/binentonces sudo ln -s /opt/bin/pv4. La otra forma no ha estado funcionando en mi caso.

briankip
fuente