Zmiana katalogu nadrzędnego (../) za pomocą dowiązań symbolicznych


32

Mam dowiązanie symboliczne

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

Kiedy robię

cd ~/link
cd ..    

zabiera mnie do

~

ale chcę iść do

~/a/really/long

Czy jest na to sposób?

Używam bash.


1
Masz na myśli, cd ~/a/really/long/pathpo czym cd ..wkłada pan w ~tej chwili? Nie mogę tego odtworzyć.
Mikel

1
@Mikel: Nie, najpierw utwórz dowiązanie symboliczne, ~/a/really/long/patha następnie cd do tego, a następnie do ... Powinieneś skończyć w ~ (zakładając, że od tego zacząłeś).
Xodarap,

Czy moja edycja jest dokładna? Nie mogłem wcześniej zrozumieć pytania.
Mikel

Odpowiedzi:


38

Bash (podobnie jak ksh, zsh, a nawet ash) śledzi zmiany w katalogu, dzięki czemu cd /foo/bar && cd ..zawsze zabierasz się, /foonawet jeśli barjest dowiązaniem symbolicznym. Przekaż -Popcję cdignorowania śledzonej zmiany i postępuj zgodnie z „fizyczną” strukturą katalogów:

cd -P ..

Zobacz help cdlub man builtinsdokumentację dotyczącą wbudowanego basha cd. Jeśli naprawdę nie lubisz funkcji śledzenia katalogów, możesz ją wyłączyć za pomocą set -Pw bash ( set -o no_chase_linkw zsh).


1
Sposób, w jaki przeczytać pytanie, PO ma -Palbo -o physicaljuż ustawiony?
Mikel

+1, ale sugeruj link do strony man.
Faheem Mitha

@Mikel: Nie, pytanie mówi, że podąża za dowiązaniem symbolicznym, a nie fizyczną strukturą katalogów.
Faheem Mitha,

Niestety, nie próbowałem edytować Twojego wpisu. Sugerowana edycja przesłana teraz.
Faheem Mitha

4

Możesz także użyć readlink, aby znaleźć fizyczną ścieżkę do tego katalogu, a następnie przejść o jeden katalog wyżej:

cd $(readlink -f .)/..

3

Jedną z metod, której możesz użyć, jest użycie aliasu zamiast dowiązania symbolicznego, aby doprowadzić cię do ~ / a / naprawdę / długiej / ścieżki. To jest metoda, której używam, ponieważ odtąd mogę po prostu wpisać proste polecenie literowe 1/2 / et cetera zamiast cd symlink

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.