Symbolic link (liên kết tượng trưng - hay còn gọi là symlink) là một loại file trỏ đến các file hoặc thư mục khác trong Linux.
Bạn có thể tạo symlink bằng cách sử dụng lệnh ln trong dòng lệnh.
Symbolic link rất hữu ích vì chúng đóng vai trò như các shortcut (đường dẫn tắt) tới một file hoặc thư mục.
Trong bài viết này, tôi sẽ hướng dẫn cách sử dụng lệnh ln để tạo symlink trỏ đến file hoặc thư mục.
Khác biệt giữa Soft Link và Hard Link trong Linux là gì?
Soft link (hay symbolic link) sẽ trỏ đến file gốc trên hệ thống của bạn. Hard link sẽ tạo ra một bản sao của file đó.
Soft link có thể trỏ đến file hoặc thư mục trên một hệ thống file khác, trong khi hard link thì không thể.
Cách tạo symlink trỏ đến file
Bạn có thể mở dòng lệnh bằng ứng dụng Terminal trên Mac hoặc Command Prompt trên Windows.
Dưới đây là cú pháp cơ bản để tạo symlink cho file trong terminal:
ln -s existing_source_file optional_symbolic_link
Bạn sử dụng lệnh ln để tạo liên kết cho file và tùy chọn -s để chỉ định đây là symbolic link. Nếu bỏ qua tùy chọn -s, một hard link sẽ được tạo thay thế.
existing_source_file đại diện cho file trên máy tính mà bạn muốn tạo symbolic link cho.
Tham số optional_symbolic_link là tên của symbolic link bạn muốn tạo. Nếu bỏ qua, hệ thống sẽ tự tạo link mới trong thư mục hiện tại bạn đang đứng.
Hãy xem một ví dụ để hiểu rõ hơn cách thức hoạt động.
Trên Desktop của tôi có một file tên là example_fcc_file.txt.
Tôi cần mở terminal trước, sau đó đảm bảo đang ở thư mục Desktop. Chạy lệnh cd Desktop để điều hướng đến Desktop.
Sau khi chạy lệnh đó, bạn sẽ thấy mình đã ở Desktop.
jessicawilkins@Dedrias-MacBook-Pro-2 ~ % cd Desktop
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop %
Sau đó tôi dùng lệnh ln để tạo symbolic link mới tên là fcc_link.txt.
ln -s example_fcc_file.txt fcc_link.txt
Khi chạy lệnh này trong terminal, bạn sẽ thấy không có output nào trả về. Đó là vì khi lệnh ln thành công, nó không xuất ra gì và trả về mã 0.
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % ln -s example_fcc_file.txt fcc_link.txt
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop %
Để kiểm tra xem symbolic link đã được tạo thành công chưa, bạn có thể dùng lệnh ls. Lệnh ls liệt kê thông tin file và cờ -l hiển thị symbolic link.
ls -l fcc_link.txt
Khi chạy lệnh đó, bạn sẽ thấy kết quả như sau trong terminal:
lrwxr-xr-x 1 jessicawilkins staff 20 Feb 19 19:56 fcc_link.txt -> example_fcc_file.txt
Phần fcc_link.txt -> example_fcc_file.txt trong output cho thấy symbolic link đang trỏ đến file tên example_fcc_file.txt.
Bạn cũng sẽ thấy symbolic link mới xuất hiện trong thư mục của mình.
Cách tạo symbolic link trỏ đến thư mục
Trong ví dụ này, chúng ta muốn tạo symbolic link tên my_music trỏ đến thư mục Music trong thư mục home của máy tính.
Trước hết, hãy đảm bảo bạn đang ở thư mục home. Bạn có thể chạy cd để quay về thư mục home trong dòng lệnh.
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % cd
jessicawilkins@Dedrias-MacBook-Pro-2 ~ %
Sau đó dùng lệnh ln để tạo symlink trỏ đến thư mục Music.
ln -s /Users/jessicawilkins/Music ~/my_music
Nếu thành công, bạn sẽ thấy nó xuất hiện trong thư mục home.
Cách xóa symbolic link
Để xóa symlink, bạn có thể dùng lệnh unlink hoặc rm.
Nếu muốn xóa symlink fcc_link.txt tạo trước đó, dùng một trong hai lệnh sau:
rm fcc_link.txt
unlink fcc_link.txt
Bây giờ bạn sẽ thấy symlink đã bị xóa khỏi thư mục.
Cách ghi đè symlink
Nếu thử tạo symlink mới tên fcc_link.txt, sẽ báo lỗi vì nó đã tồn tại và trỏ đến file khác.
ln: fcc_link.txt: File exists
Bạn có thể ghi đè lỗi này bằng tùy chọn force (-f).
ln -sf example_fcc_file.txt fcc_link.txt
Cách tìm hiểu thêm về lệnh ln
Nếu muốn tìm hiểu thêm về lệnh ln, bạn có thể đọc trong trang man (manual cho các lệnh Linux).
Chạy man ln trong terminal và bạn sẽ thấy trang manual cho lệnh ln.
Kết luận
Symlink (symbolic link) là loại file trỏ đến file hoặc thư mục khác trong Linux. Bạn tạo symlink bằng lệnh ln trong dòng lệnh.
Symbolic link hữu ích vì đóng vai trò shortcut đến file hoặc thư mục.
Cú pháp cơ bản tạo symlink cho file:
ln -s existing_source_file optional_symbolic_link
Cú pháp cơ bản tạo symlink cho thư mục:
ln -s path_to_existing_directory name_of_symbolic_link
Để xóa symlink, dùng unlink hoặc rm:
rm name_of_symbolic_link
unlink name_of_symbolic_link
Nếu cần ghi đè symlink, dùng lệnh:
ln -sf path_to_existing_directory name_of_symbolic_link
Hy vọng bạn thích bài viết này về symbolic links. Chúc bạn thành công trên con đường lập trình!