Modification du répertoire parent (../) avec des liens symboliques

32

J'ai un lien symbolique

~/link -> ~/a/really/long/path

Quand je fais

cd ~/link
cd ..    

il me faut

~

mais je veux aller

~/a/really/long

Y a-t-il un moyen de faire cela?

J'utilise bash.

Xodarap
la source
1
Vous voulez dire cd ~/a/really/long/pathalors cd ..vous met en place ~pour le moment? Je ne peux pas reproduire ça.
Mikel
1
@Mikel: Non, créez d'abord un lien symbolique vers ~/a/really/long/pathpuis cd vers celui-là puis vers ... Vous devriez vous retrouver dans ~ (en supposant que c'est là que vous avez commencé).
Xodarap
Ma modification est-elle précise? Je ne pouvais pas comprendre la question avant.
Mikel

Réponses:

38

Bash (ainsi que ksh, zsh et même ash) suit les changements de répertoire de sorte que cd /foo/bar && cd ..vous amène toujours à /foomême s'il bars'agit d'un lien symbolique. Passez l' -Poption pour cdignorer la modification suivie et suivez la structure de répertoire «physique»:

cd -P ..

Voir help cdou man builtinspour la documentation sur la commande bash cd. Si vous n'aimez pas vraiment la fonction de suivi de répertoire, vous pouvez la désactiver avec set -Pen bash ( set -o no_chase_linken zsh).

Gilles, arrête de faire le mal
la source
1
La façon dont je lis la question, l'OP a -Pou a -o physicaldéjà réglé?
Mikel
+1, mais suggère un lien vers la page de manuel.
Faheem Mitha
@Mikel: Non, la question dit qu'il suit le lien symbolique, pas la structure du répertoire physique.
Faheem Mitha
Désolé, je n'ai pas essayé de modifier votre message. Modification suggérée soumise maintenant.
Faheem Mitha
4

Vous pouvez également utiliser readlink pour trouver le chemin physique vers ce répertoire, puis aller un répertoire plus haut:

cd $(readlink -f .)/..
dhasenan
la source
3

Une méthode que vous pourriez utiliser est d'utiliser un alias au lieu d'un lien symbolique pour vous amener à ~ / a / vraiment / long / chemin. C'est la méthode que j'utilise, car alors je peux simplement taper une simple commande de lettre 1/2 / et cetera au lieu de cd symlink

Wipqozn
la source