Cara melihat jalur symlink lengkap

128

Saat saya menggunakan ls -la symlinkNameatau stat symlinkNametidak semua jalur ditampilkan (mis. ../../../one/two/file.txt)

Apa perintah linux yang mengungkapkan jalur lengkap?

15412-an
sumber
4
Seseorang harus berhati-hati di sini: ketika ls atau stat tidak menampilkan jalur absolut - tautan tidak memiliki jalur absolut! Ini adalah esp. penting ketika perangkat dipasang misalnya dalam konteks yang berbeda (misalnya jika Anda memiliki sesuatu di cd atau usb-stick atau mencoba memulihkan beberapa hdd rusak). Semua solusi yang disebutkan (realpath, readlink, ....) hanya menampilkan jalur absolut dalam konteks yang dipasang.
flolo

Jawaban:

225

realpathtidak tersedia di semua varian linux, tetapi readlinkseharusnya tersedia.

readlink -f symlinkName

Di atas harus melakukan trik.

Alternatifnya, jika Anda tidak menginstal salah satu dari yang di atas, Anda dapat melakukan hal berikut jika Anda menginstal python 2.6 (atau yang lebih baru)

python -c 'import os.path; print(os.path.realpath("symlinkName"))'
Ian Stapleton Cordasco
sumber
16
Jika menggunakan OSX, hilangkan -fflag dan kemudian ini berfungsi. yaitureadlink symlinkName
Josh Davenport
6
di OSX menghilangkan -f flag hanya memberikan jalur relatif
timoxley
2
Pertanyaan ini tentang Linux, kalian semua.
Ian Stapleton Cordasco
27

realpath <path to the symlink file> harus melakukan triknya.

JosephH
sumber
man realpathmenunjukkan di bagian bawah bahwa ini adalah bagian dari "GNU coreutils", yang saya cukup yakin selalu hadir di Ubuntu, jadi meskipun @IanStapletonCordasco mengatakan " realpathtidak tersedia di semua varian linux", setidaknya harus tersedia di semua Rasa turunan Ubuntu dan Ubuntu saya percaya.
Gabriel Staples
10

rasa unix -> ll symLinkName

OSX -> readlink symLinkName

Perbedaannya adalah cara pertama akan menampilkan jalur tautan sym dengan cara berkedip dan cara kedua hanya akan menggemakannya di konsol.

Rupam
sumber
Pertanyaannya secara khusus menanyakan jalur lengkap / absolut, bukan jalur relatif (../../file.txt). Kedua jawaban ini akan memberikan jalan relatif.
wisbucky
3

Cara lain untuk melihat informasi adalah statperintah yang akan menampilkan lebih banyak informasi. Perintah stat ~/.sshdi layar mesin saya

File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’
  Size: 34          Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d  Inode: 25297409    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/   sumon)   Gid: ( 1000/   sumon)
Access: 2017-09-26 16:41:18.985423932 +0600
Modify: 2017-09-25 15:48:07.880104043 +0600
Change: 2017-09-25 15:48:07.880104043 +0600
 Birth: -

Semoga ini dapat membantu seseorang.

Engr. Hasanuzzaman Sumon
sumber
1

Anda bisa menggunakan awkdengan systempanggilan readlinkuntuk mendapatkan lsoutput yang setara dengan jalur symlink lengkap. Sebagai contoh:

ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'

Akan menampilkan mis

thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools
touch ->/home/user/workspace/boot/usr/bin/busybox
true ->/home/user/workspace/boot/usr/bin/busybox
pengguna3467349
sumber
ls dapat melakukannya tanpa tautan baca; gunakan saja ls -l. Ini juga tidak bekerja sama sekali, mencoba melakukannya pada semua yang ada di direktori (non-tautan) dan jika ls Anda dikonfigurasi untuk menggunakan warna yang benar-benar rusak. cukup gunakanfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'
Hashbrown