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?

David Mackintosh
źródło

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
jtbandes
źródło
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ć.

Ryan C. Thompson
źródło
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. ;)

Lakshman Prasad
źródło
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