2013-04-15 37 views
79

Khi tôi đang sử dụng ls -la symlinkName hoặc stat symlinkName không phải tất cả các con đường được hiển thị (ví dụ ../../../one/two/file.txt)Làm thế nào để xem đường dẫn đầy đủ liên kết tượng trưng

là gì lệnh linux mà thấy đường dẫn đầy đủ?

+4

Bạn nên cẩn thận ở đây: khi ls hoặc stat hiển thị không có đường dẫn tuyệt đối - liên kết không có đường dẫn tuyệt đối! Điều này là đặc biệt. quan trọng khi thiết bị được lắp đặt, ví dụ: trong một ngữ cảnh khác (ví dụ: nếu bạn có thứ gì đó trên đĩa CD hoặc usb-stick hoặc cố khôi phục một số hdd bị hỏng). Tất cả các giải pháp được đề cập (realpath, readlink, ....) chỉ hiển thị đường dẫn tuyệt đối trong ngữ cảnh được gắn kết. – flolo

Trả lời

138

realpath không khả dụng trên tất cả các hương vị của Linux, nhưng cần phải có readlink.

readlink -f symlinkName 

Điều trên nên thực hiện thủ thuật.

Ngoài ra, nếu bạn không có một trong các cài đặt ở trên, bạn có thể làm như sau nếu bạn có python 2.6 (hoặc mới hơn) cài đặt

hương vị
python -c 'import os.path; print(os.path.realpath("symlinkName"))' 
+10

Nếu sử dụng OSX, hãy bỏ qua cờ '-f' và sau đó nó hoạt động. tức là 'readlink symlinkName' –

+0

trên OSX bỏ qua cờ -f chỉ cho một đường dẫn tương đối – timoxley

+2

Câu hỏi này là về Linux, y'all. –

16

realpath <path to the symlink file> nên thực hiện thủ thuật.

6

unix ->ll symLinkName

OSX ->readlink symLinkName

Sự khác biệt là cách thứ nhất sẽ hiển thị đường dẫn liên kết sym theo cách nhấp nháy và cách thứ hai sẽ chỉ lặp lại trên bảng điều khiển.

0

Bạn có thể sử dụng awk với số system gọi readlink để nhận được kết quả tương đương với đầu ra ls với đường dẫn đầy đủ liên kết tượng trưng. Ví dụ:

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

Sẽ hiển thị ví dụ:

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 
0

Một cách khác để xem thông tin là stat lệnh sẽ hiển thị thêm thông tin. Lệnh stat ~/.ssh trên màn hình máy của tôi

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: - 

Hy vọng điều này có thể giúp ai đó.

Các vấn đề liên quan