Chúng ta đã thảo luận về lệnh ln, lệnh này cho phép bạn tạo liên kết giữa các tệp. Tuy nhiên, một số công cụ cho phép bạn giải quyết các liên kết này.
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh realpath và readlink tương tự nhau (nếu không muốn nói là giống hệt nhau) ở chỗ chúng hiển thị các liên kết tượng trưng đã giải quyết trong đầu ra. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên Ubuntu 24.04 LTS và Debian 12.
Cú pháp của chúng như sau:
Và đây là những gì các trang hướng dẫn tương ứng của chúng nói:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của các công cụ này.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22324%22%20height=%2272%22%3E%3C/svg%3E
Và đây là cách chúng hoạt động với các đường dẫn:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22490%22%20height=%2272%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy cả hai lệnh đều giải quyết thành công các liên kết tượng trưng trong cả hai trường hợp.
Tuy nhiên, một yêu cầu bổ sung là phải có đầu ra của lệnh này liên quan đến thư mục /home/himanshu. Sau đây là lệnh bạn cần thực thi:
Đây là đầu ra:
Vì vậy, bạn có thể thấy rằng tùy chọn '--relative-to' cho phép bạn có đầu ra tương đối với thư mục /home/himanshu.
Tất cả những gì bạn phải làm là sử dụng tùy chọn dòng lệnh -s. Đây là một ví dụ:
Và sau đây là đầu ra của lệnh này:
Tùy chọn bạn cần sử dụng trong cả hai trường hợp là -z.
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh realpath và readlink tương tự nhau (nếu không muốn nói là giống hệt nhau) ở chỗ chúng hiển thị các liên kết tượng trưng đã giải quyết trong đầu ra. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên Ubuntu 24.04 LTS và Debian 12.
Các lệnh realpath và readlink của Linux
Như đã đề cập ở phần đầu, cả lệnh realpath và readlink đều hiển thị đường dẫn đã giải quyết cho các liên kết tượng trưng trong đầu ra.Cú pháp của chúng như sau:
Mã:
realpath [OPTION]... FILE...
Mã:
readlink [OPTION]... FILE...
Mã:
In tên tệp tuyệt đối đã giải quyết
Mã:
in các liên kết tượng trưng đã giải quyết hoặc tên tệp chính tắc
Câu hỏi 1. Làm thế nào để giải quyết đường dẫn bằng realpath và readlink?
Đơn giản: chỉ cần cung cấp tệp hoặc đường dẫn làm đầu vào. Ví dụ sau đây cho thấy cả hai lệnh này đều giải quyết một liên kết tượng trưng.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22324%22%20height=%2272%22%3E%3C/svg%3E
Và đây là cách chúng hoạt động với các đường dẫn:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22490%22%20height=%2272%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy cả hai lệnh đều giải quyết thành công các liên kết tượng trưng trong cả hai trường hợp.
Câu hỏi 2. Làm thế nào để in đường dẫn đã giải quyết liên quan đến một thư mục?
Lệnh realpath cho phép bạn dễ dàng thực hiện việc này. Ví dụ, giả sử đây là những gì bạn đang cố gắng thực hiện:
Mã:
realpath /var/local/Downloadslink
Mã:
realpath /var/local/Downloadslink --relative-to=/home/himanshu
Mã:
Downloads
Câu hỏi 3. Làm thế nào để chỉ cần loại bỏ .. trong đường dẫn?
Có thể có những lúc việc mở rộng/giải quyết các liên kết tượng trưng không phải là mục tiêu, nhưng việc loại bỏ .. trong đường dẫn mới là mục tiêu. Lệnh realpath cho phép bạn thực hiện việc này.Tất cả những gì bạn phải làm là sử dụng tùy chọn dòng lệnh -s. Đây là một ví dụ:
Mã:
realpath -s ../../var/local/Downloadslink
Mã:
/var/local/Downloadslink
Câu hỏi 4. Làm thế nào để thay đổi ký tự phân cách?
Theo mặc định, ký tự xuống dòng được sử dụng làm ký tự phân cách. Tuy nhiên, cả hai lệnh đều cung cấp một cách để có NUL làm ký tự phân cách thay thế.Tùy chọn bạn cần sử dụng trong cả hai trường hợp là -z.
Mã:
realpath -z [FILE/PATH]
Mã:
readlink -z [FILE/PATH]