Đôi khi, khi làm việc trên dòng lệnh, bạn cần tạo liên kết giữa các tệp. Bạn có thể thực hiện việc này bằng lệnh chuyên dụng, được gọi là ln. 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 công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 22.04.
Và đây là cách trang hướng dẫn của công cụ giải thích it:
Các ví dụ theo kiểu Hỏi & Đáp sau đây sẽ giúp bạn hiểu rõ hơn về cách lệnh ln hoạt động. Nhưng trước đó, bạn nên hiểu sự khác biệt giữa liên kết cứng và liên kết mềm.
Ví dụ:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22428%22%20height=%22107%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy một liên kết cứng đã được tạo với tên test_hard_link.txt.
Ví dụ:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22459%22%20height=%22112%22%3E%3C/svg%3E
Tệp test_soft_link.txt là liên kết mềm/tượng trưng, nhưxác nhận bằng màu chữ xanh da trời của nó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2232%22%3E%3C/svg%3E
Tuy nhiên, nếu muốn, bạn có thể khiến ln ghi đè hành vi này bằng cách sử dụng tùy chọn dòng lệnh -f.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2257%22%3E%3C/svg%3E
Lưu ý: Bạn có thể sử dụng tùy chọn dòng lệnh -i nếu bạn muốn thực hiện toàn bộ quá trình xóa này một cách tương tác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2263%22%3E%3C/svg%3E
Lệnh đã đề cập ở trên sẽ tạo liên kết đến tất cả các tệp test* (có trong thư mục hiện tại) và đặt chúng vào thư mục Desktop.
Lệnh ln của Linux
Như bạn đã hiểu, lệnh ln cho phép bạn tạo liên kết giữa các tệp. Sau đây là cú pháp (hay đúng hơn là một cú pháp khác có sẵn) cho công cụ này:
Mã:
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
Mã:
In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd form, create a link
to TARGET in the current directory. In the 3rd and 4th forms, create links to each TARGET in
DIRECTORY. Create hard links by default, symbolic links with --symbolic. By default, each
destination (name of new link) should not already exist. When creating hard links, each TARGET
must exist. Symbolic links can hold arbitrary text; if later resolved, a relative link is
interpreted in relation to its parent directory.
Câu hỏi 1. Làm thế nào để tạo liên kết cứng bằng ln?
Rất đơn giản - tất cả những gì bạn phải làm là sử dụng lệnh ln theo cách sau:
Mã:
ln [file] [hard-link-to-file]
Mã:
ln test.txt test_hard_link.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22428%22%20height=%22107%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy một liên kết cứng đã được tạo với tên test_hard_link.txt.
Câu 2. Làm thế nào để tạo liên kết mềm/tượng trưng bằng ln?
Để thực hiện, hãy sử dụng tùy chọn dòng lệnh -s.
Mã:
ln -s [file] [soft-link-to-file]
Mã:
ln -s test.txt test_soft_link.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22459%22%20height=%22112%22%3E%3C/svg%3E
Tệp test_soft_link.txt là liên kết mềm/tượng trưng, nhưxác nhận bằng màu chữ xanh da trời của nó.
Câu hỏi 3. Làm thế nào để ln xóa các tệp đích hiện có cùng tên?
Theo mặc định, ln sẽ không cho phép bạn tạo liên kết nếu một tệp cùng tên đã tồn tại trong thư mục đích.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2232%22%3E%3C/svg%3E
Tuy nhiên, nếu muốn, bạn có thể khiến ln ghi đè hành vi này bằng cách sử dụng tùy chọn dòng lệnh -f.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2257%22%3E%3C/svg%3E
Lưu ý: Bạn có thể sử dụng tùy chọn dòng lệnh -i nếu bạn muốn thực hiện toàn bộ quá trình xóa này một cách tương tác.
Câu hỏi 4. Làm thế nào để ln tạo bản sao lưu các tệp hiện có có cùng tên?
Nếu bạn không muốn ln xóa các tệp hiện có có cùng tên, bạn có thể yêu cầu ln tạo bản sao lưu các tệp này. Có thể thực hiện việc này bằng tùy chọn dòng lệnh -b. Các tệp sao lưu được tạo theo cách này sẽ chứa dấu ngã (~) ở cuối tên của chúng.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2263%22%3E%3C/svg%3E
Câu hỏi 5. Làm thế nào để tạo liên kết trong một thư mục khác với thư mục hiện tại?
Một thư mục đích cụ thể (khác với thư mục hiện tại) có thể được chỉ định bằng tùy chọn dòng lệnh -t. Ví dụ:
Mã:
ls test* | xargs ln -s -t /home/himanshu/Desktop/