Tìm hiểu cơ bản lệnh ln trong Linux

Like
Like Love Haha Wow Sad Angry

Lệnh ln sẽ tạo 1 liên kết tới 1 file hay thư mục trên hệ thống linux

Khi làm việc với linux, chắc hẳn bạn sẽ thấy rất nhiều file được "ln". Ví dụ khi chạy lệnh ll /etc/ các bạn sẽ thấy


...
lrwxrwxrwx 1 root  root      7 Dec  5  2018 rc -> rc.d/rc
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc0.d -> rc.d/rc0.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc1.d -> rc.d/rc1.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc2.d -> rc.d/rc2.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc3.d -> rc.d/rc3.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc4.d -> rc.d/rc4.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc5.d -> rc.d/rc5.d
lrwxrwxrwx 1 root  root     10 Dec  5  2018 rc6.d -> rc.d/rc6.d
drwxr-xr-x 1 root  root   4096 Dec  5  2018 rc.d
lrwxrwxrwx 1 root  root     13 Dec  5  2018 rc.local -> rc.d/rc.local
lrwxrwxrwx 1 root  root     15 Dec  5  2018 rc.sysinit -> rc.d/rc.sysinit
lrwxrwxrwx 1 root  root     14 Aug  5  2018 redhat-release -> centos-release
...

Để ý ở trên sẽ thấy redhat-release -> centos-release, điều này có nghĩa là khi gõ lệnh cat /etc/redhat-release hoặc cat /etc/centos-release là như nhau, làm cho việc "tương thích ngược" trở nên dễ dàng hơn.


[root@50b2c04d28ad ~]# cat /etc/centos-release
CentOS release 6.10 (Final)

[root@50b2c04d28ad ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)

Ngoài việc liên kết ngược như thế lệnh ln còn làm được nhiều việc khác nữa. Các bạn có thể gõ ln --help để tìm hiểu thêm. Trong bài viết này chỉ đề cập cách sử dụng và giới thiệu 2 loại liên kết cơ bản là liên kết mềm và liên kết cứng.

Cách sử dụng


Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
  or:  ln [OPTION]... TARGET                  (2nd form)
  or:  ln [OPTION]... TARGET... DIRECTORY     (3rd form)
  or:  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

Ví dụ phân biệt 2 loại liên kết mềm và liên kết cứng

Mở terminal và làm theo các bước dưới đây.

Tạo file demo gốc


[root@50b2c04d28ad ~]# cd ~
[root@50b2c04d28ad ~]# echo "Original File" > toilamit-demo.com

Tạo liên kết mềm giống như shortcut trong Windows


[root@50b2c04d28ad ~]# ln -sv toilamit-demo.com symbolic_link_of_toilamit-demo.com
`symbolic_link_of_toilamit-demo.com' -> `toilamit-demo.com'

Tạo liên kết cứng


[root@50b2c04d28ad ~]# ln -v toilamit-demo.com hardlink_of_toilamit-demo.com
`hardlink_of_toilamit-demo.com' => `toilamit-demo.com'

Nếu kiểm tra bằng lệnh ll thì sẽ không có dạng link mà chỉ có file hardlink_of_toilamit-demo.com được tạo ra.

Kiểm tra nội dung các file


[root@50b2c04d28ad ~]# cat toilamit-demo.com
Original File

[root@50b2c04d28ad ~]# cat symbolic_link_of_toilamit-demo.com
Original File

[root@50b2c04d28ad ~]# cat hardlink_of_toilamit-demo.com
Original File

Kết quả không khác gì nhau vì cùng hiển thị ra 1 nội dung. Tuy nhiên khác nhau sẽ được làm sáng tỏ bởi lệnh rm -v


[root@50b2c04d28ad ~]# rm -v toilamit-demo.com
rm: remove regular file `toilamit-demo.com'? y
removed `toilamit-demo.com'

[root@50b2c04d28ad ~]# cat symbolic_link_of_toilamit-demo.com
cat: symbolic_link_of_toilamit-demo.com: No such file or directory

[root@50b2c04d28ad ~]# cat hardlink_of_toilamit-demo.com
Original File

Vậy là khi xóa file gốc. Liên kết mềm (symbolic links) cũng hổng còn hiệu lực chi hết, vì file mà nó "chỉ đến cái tên" đến đâu còn nữa. :))

Hard links thì ngược lại, thay vì chỉ tham chiếu tới cái tên file gốc thì nó lại "chỉ thẳng tới vùng ghi dữ liệu trên ổ cứng". Cho nên là tên file gốc đã bị xóa khỏi bảng trong ổ cứng thì nó vẫn "biết" lấy dữ liệu ở đâu.

Kiểm chứng dễ thôi, dùng lệnh ls -i thì sẽ ra node của file.


[root@50b2c04d28ad ~]# ls -i toilamit-demo.com
2889824 toilamit-demo.com

[root@50b2c04d28ad ~]# ls -i hardlink_of_toilamit-demo.com
2889824 hardlink_of_toilamit-demo.com

Cả 2 đều cùng node, nhưng lệnh:


[root@50b2c04d28ad ~]# ls -i symbolic_link_of_toilamit-demo.com
2889932 symbolic_link_of_toilamit-demo.com

Cho ra một node khác

Như vậy là cơ bản các bạn đã hiểu liên kết mềm với liên kết cứng khi sử dụng lệnh ln rồi. Hi vọng các bạn sử dụng lệnh hiệu quả trong quá trình học tập và làm việc

Đừng ngại like, share và comment nhé. 😀

Like
Like Love Haha Wow Sad Angry

Nếu thấy hay thì like, share và comment để cùng nhau học tập nhé !^^

Bài viết liên quan

Bài viết cùng chuyên mục

Leave a Reply

Your email address will not be published. Required fields are marked *