Cari tahu apa jalur non-symlink nantinya?

10

Di Linux, jika saya sudah berkeliling dan sekarang dalam direktori, apakah ada cara untuk mengetahui apa jalan sebenarnya ke direktori itu jika saya tidak menggunakan tautan simbolis untuk sampai ke sana?

Mempertimbangkan:

$ 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

Atau:

$ 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

Apakah ada cara untuk mengetahui bahwa / home / dave / tmp / 5 benar-benar / home / dave / 1/2/3/4/5?

David Mackintosh
sumber

Jawaban:

13

Untuk digunakan bersama cd, gunakan 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

Untuk tautan simbolik generik, gunakan readlink:

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

Atau ls -l(dengan -duntuk direktori):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
sumber
file readlink -f mengembalikan jalur non-symlink ke file itu, yang saya inginkan. Terima kasih!
David Mackintosh
1
ya, saya selalu menggunakan / bin / pwd, karena tidak bisa tahu bagaimana ia bisa sampai di tempatnya, tidak seperti builtin shell pwd. Jelas sama dengan pwd -P.
Peter Cordes
ls -lda tidak bekerja untuk tautan sym tersembunyi karena alasan tertentu
Casebash
2

Anda ingin readlink -f(dalam coreutils, diinstal secara default) atau yang lebih mudah diingat realpath, yang harus Anda instal.

Ryan C. Thompson
sumber
0

Metode alternatif yang saya gunakan,

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

Pwd tab baru, memberikan symlink. ;)

Lakshman Prasad
sumber
Maaf, shell, window manager, atau terminal apa yang Anda gunakan di sini?
David Mackintosh
Saya pikir dia berbicara tentang gnome-terminal
prestomation
Ya, saya berbicara tentang Terminal Gnome.
Lakshman Prasad