สร้าง shortcut ด้วยคำสั่ง ln
การใช้งาน Windows เรามักจะสร้าง shortcut ของโปรแกรมมาแปะไว้บน desktop จนเป็นเรื่องปกติอยู่แล้ว พอมาใช้ Linux เวลาที่จะต้องพิมพ์คำสั่งจัดการไฟล์ที่อยู่ซ้อนกันยาวๆ ก็มีวิธีสร้าง shortcut เหมือนกัน
การสร้าง shortcut คือการสร้าง link สำหรับผูกชื่อไฟล์ที่เรามองเห็น กับตำแหน่งของไฟล์จริงๆ ที่เก็บบน harddisk
คำสั่งที่ใช้ คือ ln (แอล-เอ็น)
ก่อนจะใช้งาน ก็ต้องทำความเข้าใจก่อน ไม่งั้นจะงง ถึงต้องมาบันทึกเขียนบล็อกไว้ เพราะตอนไม่ได้ใช้นานๆ แล้วมันงงนี่แหละ ฮา 😅
การสร้าง link เนี่ย ประโยชน์ก็คือจะได้อ้างถึงชื่อไฟล์ได้ง่ายๆ เช่น ไฟล์จริงเก็บอยู่ที่
เวลาจะอ้างถึงไฟล์ ที่จะต้องพิมพ์ที่อยู่ยาวๆ ก็สร้าง link มา เช่น
การสร้างลิงก์ เราก็ใช้คำสั่ง
เช่น
ลองเปิดไฟล์ file1.txt แล้วพิมพ์ข้อความอะไรก็ได้ แล้วสั่งบันทึก พอสั่งให้แสดงเนื้อหาในไฟล์
ถ้าเราเปิดไฟล์ file1.txt หรือ file2.txt ขึ้นมาแก้ไขข้อมูลแล้วสั่งบันทึก ก็จะบันทึกไว้ที่เดียวกัน
นี่คือการทำ link ที่เรียกว่า hard link
คือชื่อไฟล์ทั้งสองไฟล์ จะชี้ไปยังที่เก็บข้อมูลที่เดียวกัน
ถ้าเราสั่งลบ file1.txt
เรายังสามารถสั่ง
คำสั่ง link ก็คือคำสั่ง ln แบบสร้าง hard link เพราะฉะนั้น ทั้งสองคำสั่งนี้ จะให้ผลเหมือนกัน
หากต้องการยกเลิกลิงก์ที่สร้าง ก็สั่ง unlink
ข้อควรระวังสำหรับการทำ hard link
ดังนั้นในการใช้งานจริง hard link เลยไม่ค่อยสะดวกเท่าไหร่ จึงมีลิงก์อีกแบบที่เรียกว่า soft link (Symbolic link) ซึ่งสร้างด้วยคำสั่ง
คือเพิ่มพารามิเตอร์ -s ต่อท้ายคำสั่ง ln (ใช้กับคำสั่ง link ไม่ได้)
การสร้าง soft link จะเหมือนกับการสร้าง shortcut บน Windows คือลิงก์ที่สร้างมา จะชี้ไปยังชื่อไฟล์ที่เป็นต้นทาง ไม่ได้ชี้ไปที่เก็บข้อมูลจริง
ทำให้การสร้าง soft link สามารถ link กับ directory และอยู่กันคนละ harddisk คนละ partition ได้
ถ้าเราสร้าง file2.txt เป็น soft link ของไฟล์ file1.txt แล้วเราสั่งลบ file1.txt จากนั้นสั่งให้แสดงข้อมูลเนื้อหาในไฟล์ file2.txt
จะขึ้นข้อความว่า ไม่มีไฟล์หรือไดเรคทอรี่นั้น แต่ถ้าเราสั่ง ls เพื่อแสดงรายชื่อไฟล์ เราจะยังเห็นไฟล์ file2.txt อยู่
เหมือนกับเวลาที่เราสร้าง shortcut บน Windows แล้วเราลบไฟล์ต้นฉบับ แต่ไม่ได้ลบ shortcut
พอเราเรียก shortcut มันจะขึ้นว่าไม่มีไฟล์นั้นอยู่
เราต้องสั่งลบ link นั้นทิ้งไปด้วย
การสร้าง soft link จะช่วยให้เราไม่ต้องพิมพ์ที่อยู่ของไฟล์ หรือ ไดเรคทอรี่ ยาวๆ เช่น
จากนั้นเราก็สามารถพิมพ์คำสั่ง
แต่ปกติเวลาใช้งาน ผมจะสร้างไฟล์ต้นฉบับเอาไว้ที่ home มากกว่า แล้วค่อย soft link ไปตำแหน่งที่โปรแกรมต้องการใช้ เช่น การเขียนเว็บ ผมจะเก็บไฟล์ไว้ที่ ~/web/myweb แล้วค่อยทำ soft link ไปไว้ใน directory ที่โปรแกรมจะเรียกใช้ คือ /opt/lampp/htdocs/myweb เพราะว่าการเข้าไปใช้ใน home จะสะดวกกว่า แต่จะต้องมาสร้างลิงก์ทุกครั้งเวลาที่เราสร้างไดเรคทอรี่เว็บขึ้นมาใหม่
ที่จริงแล้ว ถ้าสั่งสร้างลิงก์เป็น
ก็อยู่ที่จะเลือกใช้แบบไหนล่ะ 😅
ปกติการสั่งลบไฟล์ จะใช้คำสั่ง rm ส่วนการลบไดเรคทอรี่ จะใช้คำสั่ง rmdir
เมื่อเราสร้าง soft link ไปที่ไดเรคทอรี่ ไอ้เจ้าตัว soft link เนี่ยมันเป็นไฟล์ ไม่ได้เป็นไดเรคทอรี่ จึงต้องสั่งลบด้วยคำสั่ง rm
ถึงแม้ว่าเราจะลบ soft link ไป แต่ต้นฉบับใน ~/web/myweb ก็ยังอยู่เหมือนเดิมทุกประการ เหมือนกับลบไอคอน shortcut ใน Windows นั่นเอง
เรื่องของ hard link กับ soft link ก็มีแค่นี่
อ้อ คำสั่ง ln นี่ต้องสั่งผ่านสิทธิ์ผู้ดูแลระบบ ดังนั้นต้องมี sudo นำหน้าคำสั่งด้วยนะ
จะดูว่า ln ทำอะไรได้บ้าง ก็พิมพ์ลงไปว่า
ดูข้อมูลเพิ่มเติม
http://www.computerhope.com/unix/uln.htm
* * * * * * * * * *
[Keywords]
shortcut, hard link, soft link
การสร้าง 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
ความคิดเห็น
แสดงความคิดเห็น