Quand je suis cd
un lien, mon chemin actuel est préfixé avec le chemin du lien, plutôt que le chemin du répertoire vers lequel le lien est lié. Par exemple
~/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$
J'aimerais que mon chemin actuel soit changé pour le chemin du répertoire lié, afin de pouvoir également travailler avec les répertoires parents du répertoire lié. Outre ls
le lien pour découvrir le répertoire lié, puis y cd
accéder, quelles sont les façons les plus simples d'accomplir cela? Par exemple, après cd
dans un lien, comment changez-vous votre chemin actuel en chemin du répertoire lié?
cd -P .
après l'originalcd
.Vous pouvez utiliser
readlink
pour déterminer où votre lien pointe et fournir cette sortie comme cible de votrecd
.Dans le cas de liens symboliques supplémentaires pointant vers des liens symboliques,
readlink
fournira simplement la cible, sauf si vous spécifiez l'une de ses options pour suivre les liens symboliques vers une cible de fichier canonique, par exemplereadlink -f <link>
.la source
Les shells de type Korn gardent une trace des liens symboliques dans le chemin vers le répertoire courant (c'est ce qu'on appelle le suivi logique du répertoire courant). Si vous souhaitez développer tous les liens symboliques, passez l'option
-P
aucd
builtin (pour le suivi du répertoire physique actuel):Si vous vous trouvez dans un répertoire auquel vous avez accédé via un lien symbolique et que vous souhaitez basculer le répertoire courant suivi vers le chemin avec les liens symboliques développés, exécutez
Si vous souhaitez imprimer le chemin d'accès au répertoire actuel avec des liens symboliques développés, exécutez
pwd -P
. En bash, si vous souhaitez désactiver le suivi logique, exécutezset -P
; en zsh, exécutezset -w
ousetopt chase_links
.la source