Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ Symlink Linux: Hướng dẫn từng bước với lệnh ln

Hướng dẫn này giải thích cách tạo symlink (symbolic link), còn gọi “Soft Link,” trong Linux dùng lệnh ln.

Nếu bạn đến Linux từ Windows, bạn quen khái niệm shortcut – file không chứa dữ liệu thật mà chứa link tới file/thư mục thực muốn truy cập.

Chúng có thể tồn tại để tiện lợi (tiết kiệm thời gian click qua thư mục lồng) hoặc chuyển hướng output (Chương trình có đường dẫn cứng output file, bạn muốn gửi elsewhere).

Soft Link (Symlink) trong Linux phục vụ mục đích y hệt.

Hard Link vs Soft Link

  • Soft Link (còn gọi Symbolic Link hoặc Symlink) tham chiếu vị trí file/thư mục khác trên filesystem.
    • Do đó, nếu file được soft linked bị xóa, soft link vô nghĩa vì trỏ tới file không tồn tại.
    • Vì soft link chỉ tham chiếu vị trí file liên kết, chúng có thể nằm trên filesystem khác nhau.
    • Quyền không chia sẻ giữa link và file được link.
  • Hard link là bản sao gương của file liên kết – cả hai tham chiếu cùng dữ liệu trên thiết bị lưu trữ.
      • Do đó, xóa file hard-linked không xóa dữ liệu – “Hard Link” còn lại vẫn tồn tại như file trong filesystem.
        • Filesystem đếm số tham chiếu tới file trên ổ cứng. Khi xóa hết hard link, đếm về 0. Khi đếm về 0, file bị xóa và không gian dữ liệu giải phóng để lưu file khác.
      • Vì là 2 tham chiếu cùng dữ liệu, phải nằm trên cùng filesystem.
      • Quyền chia sẻ – cả link và linked là cùng một file trên ổ được tham chiếu từ 2 nơi.

Cú pháp

ln [TUY_CHON] DUONG_DAN_NGUON DUONG_DAN_LINK

Lưu ý:

  • Cả file và thư mục đều dùng được làm DUONG_DAN_NGUON
  • Soft link sẽ tạo tại DUONG_DAN_LINK

Tùy chọn

Các tùy chọn cho lệnh ln:

Tùy chọn Mô tả
-F Nếu link đề xuất (link_name) đã tồn tại và là thư mục, xóa nó để link có thể xảy ra. -F dùng với -f hoặc -i. Nếu không chỉ định, -f ngầm hiểu. -F vô hiệu nếu không có -s.
-h Nếu link_name hoặc link_dirname là symbolic link, không theo nó. Hữu ích với -f, thay thế symlink có thể trỏ tới thư mục.
-f Nếu link đề xuất đã tồn tại, unlink nó để link mới xảy ra. (-f ghi đè -i trước đó.)
-i Buộc ln ghi prompt ra standard error nếu link đề xuất tồn tại. Nếu phản hồi từ standard input bắt đầu bằng y/Y, unlink link đề xuất. Ngược lại, không link. (-i ghi đè -f trước.)
-n Giống -h, để tương thích ln khác.
-s Tạo symbolic link.
-v Verbose, hiển thị file khi xử lý.

Chi tiết đầy đủ cho lệnh ln trong manual bằng lệnh:

man ln

Ví dụ

Demo tạo symbolic link đơn giản (symlink), tạo file:

touch test_file.txt

Tạo soft link tới nó:

ln -s test_file.txt link_to_test_file

Kiểm tra link bằng:

ls -l

Kết quả dạng:

-rw-r--r-- 1 user staff 0 2 Jan 01:31 test_file.txt lrwxr-xr-x 1 user staff 9 2 Jan 01:32 link_to_test_file -> test_file.txt 

Lưu ý:

  • Chữ cái cột đầu là loại file/thư mục và quyền
  • Số tiếp theo là số file chứa
  • user/staff là user/group có quyền
  • Kích thước file, ngày sửa, tên
  • Chữ l đầu hàng = link
  • Mũi tên -> cuối hàng cho thấy link tới test_file.txt
  • So, chắc chắn là link

Kết luận

Khi đăng nhập hầu hết hệ thống, tôi bị đưa thẳng vào home directory. Thay vì gõ đường dẫn thư mục muốn làm việc hôm nay (ví dụ thư mục chứa file web app đang deploy), việc đầu tiên thường tạo soft link tới thư mục đó để không phải gõ đường dẫn đầy đủ mỗi lần quay lại.

Rất hữu ích.

Mới học Linux? Dùng ngay bằng cách học code!