Ändern des übergeordneten Verzeichnisses (../) mit Symlinks

32

Ich habe einen Symlink

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

Wenn ich es tue

cd ~/link
cd ..    

es bringt mich zu

~

aber ich möchte gehen

~/a/really/long

Gibt es eine Möglichkeit, dies zu tun?

Ich benutze Bash.

Xodarap
quelle
1
Du meinst cd ~/a/really/long/pathdann cd ..setzt du im ~Moment ein? Das kann ich nicht reproduzieren.
Mikel
1
@Mikel: Nein, erst einen Symlink erstellen, ~/a/really/long/pathdann eine CD dazu und dann dazu ... Sie sollten wieder in ~ landen (vorausgesetzt, Sie haben dort angefangen).
Xodarap
Ist meine Bearbeitung korrekt? Ich konnte die Frage vorher nicht verstehen.
Mikel

Antworten:

38

Bash (sowie ksh, zsh und sogar ash) verfolgen Verzeichnisänderungen, sodass Sie cd /foo/bar && cd ..immer zu einem Symlink weitergeleitet werden , /fooselbst wenn bares sich um einen Symlink handelt. Übergeben Sie die -POption zum cdIgnorieren der nachverfolgten Änderung und folgen Sie der „physischen“ Verzeichnisstruktur:

cd -P ..

Siehe help cdoder man builtinsfür die Dokumentation zur Bash-Funktion cd. Wenn Sie die Verzeichnisverfolgungsfunktion wirklich nicht mögen, können Sie sie mit set -Pin bash ( set -o no_chase_linkin zsh) deaktivieren.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Wie habe ich die Frage gelesen, die OP hat -Poder -o physicalschon gestellt?
Mikel
+1, aber Link zur Manpage vorschlagen.
Faheem Mitha
@Mikel: Nein, die Frage besagt, dass er der symbolischen Verknüpfung folgt, nicht der physischen Verzeichnisstruktur.
Faheem Mitha
Entschuldigung, ich habe nicht wirklich versucht, Ihren Beitrag zu bearbeiten. Vorgeschlagene Bearbeitung jetzt eingereicht.
Faheem Mitha
4

Sie können auch readlink verwenden, um den physischen Pfad zu diesem Verzeichnis zu finden, und dann ein Verzeichnis höher gehen:

cd $(readlink -f .)/..
dhasenan
quelle
3

Sie können auch einen Alias ​​anstelle eines Symlinks verwenden, um zu ~ / a / really / long / path zu gelangen. Das ist die Methode, die ich benutze, da ich dann einfach einen einfachen 1/2 / usw. Buchstabenbefehl anstelle von cd symlink eingeben kann

Wipqozn
quelle