Zastanów się, jaka byłaby ścieżka niebędąca dowiązaniem symbolicznym?


10

Czy w Linuksie, jeśli mam już płytę CD i jestem teraz w katalogu, czy istnieje sposób, aby dowiedzieć się, jaka jest prawdziwa ścieżka do tego katalogu, jeśli nie użyłem do tego linku symbolicznego?

Rozważać:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5

Lub:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4 4
$ cd 4/5
$ pwd 
/home/dave/tmp/4/5

Czy jest jakiś sposób, aby dowiedzieć się, że / home / dave / tmp / 5 to naprawdę / home / dave / 1/2/3/4/5?

Odpowiedzi:


13

Do użytku z cdużyj pwd -P:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5
$ pwd -P
/home/dave/tmp/1/2/3/4/5

W przypadku ogólnych dowiązań symbolicznych użyj readlink:

$ cd ..
$ readlink 5
1/2/3/4/5

Lub ls -l(z -ddla katalogów):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5

Plik readlink -f zwraca niesymetryczną ścieżkę do tego pliku, czego chcę. Dzięki!
David Mackintosh

1
huh, zawsze używałem / bin / pwd, ponieważ nie może wiedzieć, jak to się stało, w przeciwieństwie do wbudowanej powłoki pwd. Oczywiście równoważne do pwd -P.
Peter Cordes,

ls -lda z jakiegoś powodu nie działa z ukrytymi łączami sym
Casebash

2

Chcesz albo readlink -f(w coreutils, domyślnie instalowany), albo łatwiejsze do zapamiętania realpath, które musisz zainstalować.


0

Zastosowałem alternatywną metodę,

cd to the symlink
Ctrl+Shift+T #To open a new tab
pwd

Nowa karta pwd, daje dowiązanie symboliczne. ;)


Przepraszam, jakiej powłoki, menedżera okien lub terminala używasz tutaj?
David Mackintosh

Myślę, że mówi o gnome-terminalu
prestiż

Tak, mówiłem o terminalu gnomów.
Lakshman Prasad
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.