Câu 1Sau khi bạn chạy ln -s target.txt link.txt, nó hiển thị thế nào trong ls -l?
Liên kết tượng trưng và liên kết cứng — ln
Tạo một liên kết tượng trưng lưu đường dẫn bằng ln -s target.txt link.txt và kiểm tra dấu -> trong ls -l, rồi tạo một liên kết cứng trỏ tới cùng phần dữ liệu bằng ln base.txt hard.txt; thấy sự khác biệt qua sơ đồ và terminal trong trình duyệt.
Liên kết tượng trưng — ln -s
Một liên kết cho phép bạn truy cập cùng một tệp dưới một cái tên khác. Bạn tạo liên kết tượng trưng bằng ln -s target name, và nó là một tệp đặc biệt lưu đường dẫn (vị trí) của target. Khi bạn mở name, nó tự động đi theo đường dẫn đã lưu để tới target. Trong ls -l, dòng của liên kết cho thấy nó trỏ tới đâu, dạng name -> target.
| Cú pháp | Tác dụng |
|---|---|
ln -s target name | -s (symbolic) tạo một liên kết tượng trưng là bí danh dựa trên đường dẫn |
ls -l | Kiểm tra nó trỏ tới đâu qua hiển thị name -> target |
ln target alias | Tạo một liên kết cứng trỏ tới cùng phần dữ liệu |
| Tượng trưng vs cứng | Tượng trưng = tệp đặc biệt lưu đường dẫn của target / Cứng = bí danh tới cùng phần dữ liệu |
| Khi target bị xóa | Tượng trưng = mất target và hỏng / Cứng = nội dung vẫn còn |
ln -s tạo ra link.txt, một tệp đặc biệt lưu đường dẫn target.txt. ls -l hiển thị nó dạng link.txt -> target.txt, và cat link.txt đi theo đường dẫn đó để đọc nội dung của tệp thật target.txt.printf 'data\n' > target.txt # Tạo tệp target
ln -s target.txt link.txt # Tạo liên kết tượng trưng
ls -l # Kiểm tra link.txt -> target.txt
cat link.txt # Hiển thị nội dung của target.txt
Liên kết cứng — ln
Không có -s, ln target alias tạo một liên kết cứng. Trong khi liên kết tượng trưng là một tệp đặc biệt lưu đường dẫn tới target, liên kết cứng là một cái tên khác trỏ tới cùng phần dữ liệu. Mở tên nào cũng cho nội dung giống hệt, và trong ls -l liên kết cứng không hiện mũi tên — nó trông như một tệp thông thường. Hãy nhớ phân biệt: tượng trưng = một tệp đặc biệt lưu đường dẫn của target, cứng = một bí danh tới cùng phần dữ liệu.
ln -s tạo sym, lưu một đường dẫn tới tệp thật, còn ln tạo hard, một bí danh tới cùng phần dữ liệu. Cả hai đều in shared với cat, nhưng sym đọc qua đường dẫn còn hard đọc trực tiếp phần dữ liệu.printf 'shared\n' > base.txt # Tạo tệp target
ln base.txt hard.txt # Tạo liên kết cứng
ls -l # hard.txt được liệt kê không có mũi tên
cat hard.txt # Hiển thị cùng nội dung như base.txt
Điều gì xảy ra khi bạn xóa target
Vì liên kết tượng trưng là một tệp đặc biệt lưu đường dẫn tới target, nó mất thứ nó trỏ tới một khi target không còn. Vì liên kết cứng là một cái tên khác trỏ tới cùng phần dữ liệu, nội dung vẫn còn ngay cả sau khi tên gốc không còn. Hãy xóa target và tự mình thấy sự khác biệt.
rm orig.txt xóa tệp thật, sl.txt, vốn chỉ lưu một đường dẫn, trở thành liên kết treo, còn hl.txt, vốn chia sẻ phần dữ liệu, vẫn in nội dung của nó với cat.printf 'v\n' > orig.txt # Tạo tệp target
ln -s orig.txt sl.txt # Liên kết tượng trưng
ln orig.txt hl.txt # Liên kết cứng
rm orig.txt # Xóa target
cat sl.txt # Mất target và thất bại
cat hl.txt # Nội dung vẫn còn và hiển thị được
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Phát biểu nào sau đây mô tả đúng sự khác biệt giữa liên kết tượng trưng và liên kết cứng?
Câu 3Sau khi bạn xóa tệp target bằng rm, với cái nào thì cat vẫn thành công?