Kiedy jestem cd
linkiem, moja bieżąca ścieżka jest poprzedzona ścieżką łącza, a nie ścieżką katalogu, do którego prowadzi łącze. Na przykład
~/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$
Chciałbym, aby moja bieżąca ścieżka została zmieniona na ścieżkę połączonego katalogu, dzięki czemu mogę również pracować z katalogami nadrzędnymi połączonego katalogu. Poza ls
linkiem do znalezienia połączonego katalogu, a następnie cd
do niego, jakie są prostsze sposoby na osiągnięcie tego? Na przykład, po cd
przejściu do linku, jak zmienić bieżącą ścieżkę na ścieżkę połączonego katalogu?
źródło
cd -P .
po oryginalecd
.Możesz użyć,
readlink
aby określić, gdzie twój link wskazuje i podać ten wynik jako cel twojegocd
.W przypadku dodatkowych dowiązań symbolicznych wskazujących na dowiązania symboliczne,
readlink
po prostu zapewni cel, chyba że określisz jedną z jego opcji, na przykład śledzenie dowiązań symbolicznych do kanonicznego celu plikureadlink -f <link>
.źródło
Powłoki podobne do Korna śledzą dowiązania symboliczne w ścieżce do bieżącego katalogu (jest to znane jako logiczne śledzenie bieżącego katalogu). Jeśli chcesz rozwinąć wszystkie dowiązania symboliczne, przekaż opcję
-P
docd
wbudowanego polecenia (dla fizycznego śledzenia aktualnego katalogu):Jeśli znajdujesz się w katalogu, do którego masz dostęp za pomocą dowiązania symbolicznego i chcesz przełączyć śledzony katalog bieżący na ścieżkę z rozwiniętymi dowiązaniami symbolicznymi, uruchom
Jeśli chcesz wydrukować ścieżkę do bieżącego katalogu z rozwiniętymi dowiązaniami symbolicznymi, uruchom
pwd -P
. W bash, jeśli chcesz wyłączyć śledzenie logiczne, uruchomset -P
; w Zsh, uruchomset -w
lubsetopt chase_links
.źródło