สร้าง shortcut ด้วยคำสั่ง ln

การใช้งาน Windows เรามักจะสร้าง shortcut ของโปรแกรมมาแปะไว้บน desktop จนเป็นเรื่องปกติอยู่แล้ว พอมาใช้ Linux เวลาที่จะต้องพิมพ์คำสั่งจัดการไฟล์ที่อยู่ซ้อนกันยาวๆ ก็มีวิธีสร้าง shortcut เหมือนกัน

การสร้าง shortcut คือการสร้าง link สำหรับผูกชื่อไฟล์ที่เรามองเห็น กับตำแหน่งของไฟล์จริงๆ ที่เก็บบน harddisk

คำสั่งที่ใช้ คือ ln (แอล-เอ็น)

ก่อนจะใช้งาน ก็ต้องทำความเข้าใจก่อน ไม่งั้นจะงง ถึงต้องมาบันทึกเขียนบล็อกไว้ เพราะตอนไม่ได้ใช้นานๆ แล้วมันงงนี่แหละ ฮา 😅


การสร้าง link เนี่ย ประโยชน์ก็คือจะได้อ้างถึงชื่อไฟล์ได้ง่ายๆ เช่น ไฟล์จริงเก็บอยู่ที่
/opt/lampp/htdocs/myweb/file1.txt

เวลาจะอ้างถึงไฟล์ ที่จะต้องพิมพ์ที่อยู่ยาวๆ ก็สร้าง link มา เช่น
~/file1.txt

การสร้างลิงก์ เราก็ใช้คำสั่ง
ln file1 file2

เช่น
ln file1.txt file2.txt

ลองเปิดไฟล์ file1.txt แล้วพิมพ์ข้อความอะไรก็ได้ แล้วสั่งบันทึก พอสั่งให้แสดงเนื้อหาในไฟล์
cat file1.txt
ก็จะเห็นข้อความที่อยู่ในไฟล์ ซึ่งถ้าสั่ง
cat file2.txt
ก็จะเห็นข้อความเดียวกัน

ถ้าเราเปิดไฟล์ file1.txt หรือ file2.txt ขึ้นมาแก้ไขข้อมูลแล้วสั่งบันทึก ก็จะบันทึกไว้ที่เดียวกัน
นี่คือการทำ link ที่เรียกว่า hard link
คือชื่อไฟล์ทั้งสองไฟล์ จะชี้ไปยังที่เก็บข้อมูลที่เดียวกัน

ถ้าเราสั่งลบ file1.txt
rm file1.txt

เรายังสามารถสั่ง
cat file2.txt
เพื่อแสดงข้อมูลขึ้นมาได้อีก เพราะตัวข้อมูลยังไม่ได้ถูกลบ เราเพียงแต่ลบชื่อไฟล์ที่ชี้ไปยังตำแหน่งที่เก็บข้อมูลนั้นเท่านั้นเอง

คำสั่ง link ก็คือคำสั่ง ln แบบสร้าง hard link เพราะฉะนั้น ทั้งสองคำสั่งนี้ จะให้ผลเหมือนกัน
link file1.txt file2.txt

ln file1.txt file2.txt

หากต้องการยกเลิกลิงก์ที่สร้าง ก็สั่ง unlink
unlink file2.txt

ข้อควรระวังสำหรับการทำ hard link
  • สร้างได้เฉพาะการ link ไฟล์เท่านั้น ไม่สามารถ link directory ได้
  • ไฟล์ต้นฉบับ และไฟล์ที่ลิงก์ ต้องอยู่ใน harddisk และ partition เดียวกันเท่านั้น

ดังนั้นในการใช้งานจริง hard link เลยไม่ค่อยสะดวกเท่าไหร่ จึงมีลิงก์อีกแบบที่เรียกว่า soft link (Symbolic link) ซึ่งสร้างด้วยคำสั่ง
ln -s file1.txt file2.txt

คือเพิ่มพารามิเตอร์ -s ต่อท้ายคำสั่ง ln (ใช้กับคำสั่ง link ไม่ได้)

การสร้าง soft link จะเหมือนกับการสร้าง shortcut บน Windows คือลิงก์ที่สร้างมา จะชี้ไปยังชื่อไฟล์ที่เป็นต้นทาง ไม่ได้ชี้ไปที่เก็บข้อมูลจริง

ทำให้การสร้าง soft link สามารถ link กับ directory และอยู่กันคนละ harddisk คนละ partition ได้

ถ้าเราสร้าง file2.txt เป็น soft link ของไฟล์ file1.txt แล้วเราสั่งลบ file1.txt จากนั้นสั่งให้แสดงข้อมูลเนื้อหาในไฟล์ file2.txt
cat file2.txt


จะขึ้นข้อความว่า ไม่มีไฟล์หรือไดเรคทอรี่นั้น แต่ถ้าเราสั่ง ls เพื่อแสดงรายชื่อไฟล์ เราจะยังเห็นไฟล์ file2.txt อยู่

เหมือนกับเวลาที่เราสร้าง shortcut บน Windows แล้วเราลบไฟล์ต้นฉบับ แต่ไม่ได้ลบ shortcut
พอเราเรียก shortcut มันจะขึ้นว่าไม่มีไฟล์นั้นอยู่

เราต้องสั่งลบ link นั้นทิ้งไปด้วย

การสร้าง soft link จะช่วยให้เราไม่ต้องพิมพ์ที่อยู่ของไฟล์ หรือ ไดเรคทอรี่ ยาวๆ เช่น
ln -s /opt/lampp/htdocs/myweb1 myweb2

จากนั้นเราก็สามารถพิมพ์คำสั่ง
cd myweb2
เพื่อเข้าไปใช้งานในไดเรคทอรี่ /opt/lampp/htdocs/myweb1 ได้เลย

แต่ปกติเวลาใช้งาน ผมจะสร้างไฟล์ต้นฉบับเอาไว้ที่ home มากกว่า แล้วค่อย soft link ไปตำแหน่งที่โปรแกรมต้องการใช้ เช่น การเขียนเว็บ ผมจะเก็บไฟล์ไว้ที่ ~/web/myweb แล้วค่อยทำ soft link ไปไว้ใน directory ที่โปรแกรมจะเรียกใช้ คือ /opt/lampp/htdocs/myweb เพราะว่าการเข้าไปใช้ใน home จะสะดวกกว่า แต่จะต้องมาสร้างลิงก์ทุกครั้งเวลาที่เราสร้างไดเรคทอรี่เว็บขึ้นมาใหม่
ln -s ~/web/myweb /opt/lampp/htdocs/myweb

ที่จริงแล้ว ถ้าสั่งสร้างลิงก์เป็น
ln -s /opt/lampp/htdocs/myweb myweb
จะสั่งสร้างลิงก์แค่ครั้งเดียวแค่นั้น หลังจากนั้นเวลาเราสร้างโฟลเดอร์ใหม่ของเว็บขึ้นมา ก็ไม่ต้องมาทำสั่งสร้างลิงก์อีก แต่อาจจะเผลอไปลบไฟล์สำคัญของโปรแกรมเข้า

ก็อยู่ที่จะเลือกใช้แบบไหนล่ะ 😅

ปกติการสั่งลบไฟล์ จะใช้คำสั่ง rm ส่วนการลบไดเรคทอรี่ จะใช้คำสั่ง rmdir

เมื่อเราสร้าง soft link ไปที่ไดเรคทอรี่ ไอ้เจ้าตัว soft link เนี่ยมันเป็นไฟล์ ไม่ได้เป็นไดเรคทอรี่ จึงต้องสั่งลบด้วยคำสั่ง rm
rm /opt/lampp/htdocs/myweb

ถึงแม้ว่าเราจะลบ soft link ไป แต่ต้นฉบับใน ~/web/myweb ก็ยังอยู่เหมือนเดิมทุกประการ เหมือนกับลบไอคอน shortcut ใน Windows นั่นเอง

เรื่องของ hard link กับ soft link ก็มีแค่นี่

อ้อ คำสั่ง ln นี่ต้องสั่งผ่านสิทธิ์ผู้ดูแลระบบ ดังนั้นต้องมี sudo นำหน้าคำสั่งด้วยนะ

จะดูว่า ln ทำอะไรได้บ้าง ก็พิมพ์ลงไปว่า
ln --help
ก็จะมีรายละเอียดขึ้นมาให้อ่านกันตาแฉะ 😅

ดูข้อมูลเพิ่มเติม
http://www.computerhope.com/unix/uln.htm

* * * * * * * * * *

[Keywords]

shortcut, hard link, soft link

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

L-Karaoke V.1.0-4 (NCN MIdi Karaoke For Linux)

โปรแกรมเล่นคาราโอเกะบนลินุกซ์

หน้าจอขึ้น busybox ไม่สามารถเข้าใช้งานได้