Hướng dẫn sử dụng lệnh readlink và realpath trên Linux dành cho người mới bắt đầu (có ví dụ)

theanh

Administrator
Nhân viên
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 realpathreadlink 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...
Và đây là những gì các trang hướng dẫn tương ứng của chúng nói:
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
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.

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
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:
Mã:
realpath /var/local/Downloadslink --relative-to=/home/himanshu
Đây là đầu ra:
Mã:
Downloads
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.

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
Và sau đây là đầu ra của lệnh này:
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]

Kết luận​

Chúng tôi đã thảo luận ở đây chỉ một số ít tùy chọn/tính năng mà các lệnh này cung cấp. Sau khi thực hành xong, hãy truy cập trang hướng dẫn readlink và realpath (tại đâytại đây) để tìm hiểu thêm về các công cụ này.
 
Back
Bên trên