2011-01-01 14 views
25

Khi bạn làmcó cách nào để xem nội dung thực tế của liên kết tượng trưng không?

cat some-symlink-to-some-real-file 

nó cho thấy nội dung của file thực, chứ không phải những gì nằm trong liên kết tượng trưng riêng của mình. Có cách nào để xem cái gì thực sự ở trong đó không?

+1

Bạn muốn làm điều này bằng ngôn ngữ lập trình nào? –

+4

Cuộc gọi hệ thống cơ bản là 'readlink (2)'. Như đã lưu ý trong một trong các câu trả lời, lệnh trực tiếp để sử dụng là 'readlink (1)' trên một số hệ thống (GNU và người thân). Trên các hệ thống khác - HP-UX, Solaris, AIX - cách tiếp cận gần nhất có thể là 'ls -l', nhưng hãy lưu ý các vấn đề nếu tên đường dẫn trong liên kết chứa các dòng mới hoặc các ký tự lạ khác. –

Trả lời

31

Lệnh ls -l sẽ cho bạn thấy rằng:

$ ls -l foo 
lrwxrwxrwx 1 user group 11 2010-12-31 19:49 foo -> /etc/passwd 

Hoặc readlink command:

$ readlink foo 
/etc/passwd 

Vì vậy, các liên kết tượng trưng foo điểm đến con đường /etc/passwd.

+15

Chỉ để làm cho điều này rõ ràng hơn, "nội dung" của liên kết tượng trưng không có gì khác với tên nó trỏ quá. – wnoise

+1

@Ben: meh, shell là một ngôn ngữ lập trình trong tay phải, vì vậy sự khác biệt không hoàn toàn rõ ràng. – ijw

+1

@ijw: Đúng vậy. Tuy nhiên, chúng tôi không phải ghim chính xác đường đó để tìm ra rằng đây không phải là bên lập trình viên của nó. Bên cạnh đó, những lệnh này không phải là các lệnh shell, 'ls' và' readlink' đều là các ứng dụng riêng biệt. –

1

Hãy thử

find . -type l -exec ls -la {} \; 
+0

Lệnh này sẽ tìm tất cả các liên kết bắt đầu trong thư mục hiện tại. Về cơ bản ls -l, phụ trách hiển thị nội dung của mỗi một. –

5

Bạn có thể gọi hàm readlink(2), chức năng này sẽ đặt tên được liên kết vào bộ đệm.

Lưu ý rằng kết quả có độ dài (được lưu trữ trong giá trị trả lại) thay vì bị NUL chấm dứt. Vì vậy, nếu bạn muốn sử dụng nó như là một chuỗi, thêm một NUL chính mình.

Hầu hết các ngôn ngữ lập trình/cấp cao hơn, chẳng hạn như perl hoặc python, sẽ cung cấp trình bao bọc readlink chuyển đổi thành loại chuỗi thích hợp ngôn ngữ thông thường, vì vậy bạn sẽ không bị làm phiền bởi các chi tiết như chấm dứt NUL.

1

Về trang người đàn ông http://man7.org/linux/man-pages/man7/symlink.7.html liên kết tượng trưng là tệp thông thường (có cờ đặc biệt) có đường dẫn để nhắm mục tiêu trong nội dung của nó. Vì vậy, bạn có thể sao chép liên kết tượng trưng đến phân vùng FAT và đọc nội dung đó ở đó.