Ä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.


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.


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 .)/..

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.