Cuando hago cd
un enlace, mi ruta actual tiene como prefijo la ruta del enlace, en lugar de la ruta del directorio al que se vincula el enlace. P.ej
~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic
~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic
~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$
Me gustaría cambiar mi ruta actual a la ruta del directorio vinculado, para poder trabajar también con los directorios principales del directorio vinculado. Además ls
del enlace para averiguar el directorio vinculado, y luego cd
en él, ¿cuáles son algunas formas más simples de lograrlo? Por ejemplo, después de cd
un enlace, ¿cómo cambia su ruta actual a la ruta del directorio vinculado?
fuente
cd -P .
después del originalcd
.Puede utilizar
readlink
para determinar dónde apunta su enlace y proporcionar esta salida como el objetivo de sucd
.En el caso de enlaces simbólicos adicionales que apuntan a enlaces simbólicos,
readlink
simplemente proporcionará el objetivo, a menos que especifique una de sus opciones para seguir enlaces simbólicos a un destino de archivo canónico, por ejemploreadlink -f <link>
.fuente
Los shells tipo Korn realizan un seguimiento de los enlaces simbólicos en la ruta al directorio actual (esto se conoce como seguimiento lógico del directorio actual). Si desea expandir todos los enlaces simbólicos, pase la opción
-P
alcd
builtin incorporado (para el seguimiento del directorio físico actual):Si está en un directorio al que ha accedido a través de un enlace simbólico y desea cambiar el directorio actual rastreado a la ruta con enlaces simbólicos expandidos, ejecute
Si desea imprimir la ruta al directorio actual con enlaces simbólicos expandidos, ejecute
pwd -P
. En bash, si desea desactivar el seguimiento lógico, ejecuteset -P
; en zsh, ejecutaset -w
osetopt chase_links
.fuente