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?

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

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.


0

Metode alternatif yang saya gunakan,

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

Pwd tab baru, memberikan symlink. ;)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.