domingo, 19 de abril de 2009

Enlaces simbólicos.

Si hay algo que me parece fantastico son los enlaces simbolicos, una funcionalidad pequeña de este SO, pero no por ello menos robusta.
Y para que sirven?
Bueno para muchas cosas, basicamente un enlace simbólico (symbolic link) es un archivo que apunta a otro archivo o directorio, de ahí cada uno le encontrara la funcionalidad que necesite, yo por ejemplo los uso para no repetir contenido en instalaciones parecidas, por ejemplo que usan las mismas imagenes, o los mismos programas, pero por supuesto cada administrador/usuario le encontrara una utilidad distinta.

como hacer? bueno ahi va...

El comando que se usa es ln

El archivo de enlace simbólico contiene solamente la ruta del otro archivo o directorio.

# ln -s nota nota.ls0
crea nota.ls0 como enlace simbólico.

# ln -s dir2 dir2ls
crea dir2ls como enlace simbólico hacia un directorio.

# ls -l

muestra la letra l en el tipo de archivo para indicar que es un enlace simbólico.

# ls dir2

# ls dir2ls
muestran el mismo contenido de archivos.

# ls -l dir2ls

muestra que es un enlace simbólico e indica hacia donde apunta.

# cd dir2ls
# ls -l
muestra el contenido de dir2, enlazado desde dir2ls.
# pwd
indica el directorio con nombre del enlace, pero
# /bin/pwd
muestra el directorio verdadero, no el enlace simbólico; pwd indica la ruta por la que se llegó al directorio, /bin/pwd indica la ruta de acceso al verdadero directorio. Conviene usar /bin/pwd para evitar ser engañado por enlaces simbólicos a directorios.
El comando pwd es interno del shell, /bin/pwd es un programa aparte.

# cd ..
# mv dir2 DIR2
cambia el nombre del directorio real; el enlace simbólico sigue apuntando a dir2, por lo que
# cd dir2ls
da error, ya que no existe el objeto real.

# mv DIR2 dir2
repone el nombre original al que apunta el enlace.

# rmdir dir2ls
da error porque no es un directorio sino un enlace.

# rm dir2ls
borra el enlace. Un enlace simbólico se borra con rm, y no con rmdir, puesto que el enlace simbólico es un archivo y no un directorio, aún cuando sea un enlace simbólico hacia un directorio.

# ls dir2
cuando se borra un enlace simbólico, sólo se borra un archivo puntero, y no el objeto real.

No hay que confundir los enlaces simbolicos con los enlaces duros (hard link) ya que estos ultimos son algo distinto, son aquellos en el que el acceso es indistinguible del real, y el borrado del enlace provoca el borrado del archivo o directorio si era el último enlace duro al fichero.

Espero que les sirva

Salu2

MF

2 comentarios:

  1. bien explicado! :) muchas gracias

    ResponderEliminar
  2. Gracias por la explicación, necesitaba entender lo del pwd. Aunque todavía no me aclaro mucho ya que si hacemos un "whereis pwd" tambien apunta al mismo ejecutable..

    Para borrar el link, tambien se puede usar "unlink" en lugar de rm.
    Saludos

    ResponderEliminar