Friday, 3 May 2013

cp hay ln

ln trên linux gần giống như shortcut trên Windows vậy.
ln có 2 loại là hard link và soft link, ở bài này chỉ nói đến soft link (ln -s)

hvn@lappy: ~ () $ whatis ln
ln (1)               - make links between files

gần đây, tớ phát hiện ra mình hay bị dùng nhầm lệnh cp (để copy) mà đúng ra sử dụng ln sẽ tiện hơn rất nhiều. Ví dụ đây là 1 trường hợp:

Có 1 file code nằm ở /home/hvn/code/xxx.py (1)
tớ có một chương trình sẽ gọi file /usr/lib/foo/xxx.py (2)
2 file trên đều cùng một nội dung, nhưng mục đích dùng có hơi khác nhau chút:

file nằm ở (1) là file code, tớ sẽ code trực tiếp vào đây, nó có thể được quản lý bởi một chương trình quản lý mã nguồn nào đó như git chẳng hạn.
file (2) bản chất là một phần của chương trình nào đó và nó cần phải nằm ở đường dẫn đó, vị trí đó chứ không phải nằm ở home.

Và bình thường tớ sẽ copy (1) đến (2). Mỗi lần thay đổi code ở file (1) tớ phải copy từ đây vào vị trí file (2). Nếu tớ sửa "nóng" code ở file (2) - sau khi chạy ok tớ lại phải copy về file (1) để quản lý. Toàn bộ công việc nhảm nhí này có thể thay thế bằng ln.

ln -s /home/hvn/code/xxx.py /usr/lib/foo/xxx.py
vậy là từ nay, có thể thoải mái thay đổi code ở (1) mà không cần copy đến (2). Bởi (2) bây giờ là một soft-link của (1), hay nói theo Windows user,  nó là một shortcut của (1).

Chúc mừng bạn đã đến với chân lý của `ln` :))