บทความ:
Perl
PHP
HTML
CSS
XML
DTD
XSD
RSS
WSDL
Linux
Site Map
Board
Connect Us: facebooktwitter

การสร้าง Hard และ Symbolic Links ด้วยคำสั่ง ln

นนทชัย ทรัพย์ทวีพงศ์ 2010-03-16 15:16:26  ให้คะแนนบทความนี้(0)  ลดคะแนนบทความ(0)  จำนวน Comment(0)  จำนวนคนอ่าน(545)  

Linux สนับสนุน link ทั้งแบบ hard และ symbolic ถึงแม้ว่าเราอาจจะไม่จำเป็นที่จะต้องเข้าใจว่าลิงค์ใน Linux มันทำงานอย่างไร แต่เราก็ควรจะเข้าใจถึงความแตกต่างของ link ทั้งสองชนิดนี้ และวิธีการใช้ link

ในการที่จะสร้าง hard หรือ symbolic link ให้เราใช้คำสั่ง ln หรือ link ซึ่งคำสั่งทั้งสองนี้สามารถสร้างได้ทั้ง 2 ชนิด (hard และ symbolic link) ถ้าเราใช้คำสั่ง ln ในการสร้าง hard link เราจะต้องทำการระบุไฟล์ที่สอง ใน command link ที่ต้องการให้มันอ้างอิงไปยังไฟล์ดั้งเดิมด้วย เช่น

# cat > file
This is file1
# ln file1 file2
# ls -l file*
-rw-rw-r-- 		2 	root	root	14 	Nov 13 	18:54 	file1
-rw-rw-r-- 		2 	root	root	14 	Nov 13 	18:54 	file2
# cat file2
This is file1

เราจะเห็นว่า file2 นั้นมีเนื้อหาเหมือนกับ file1 ถ้าหากเราทำการลบ file1 ออกไป file2 ก็จะยังคงอยู่ แต่ในกรณีที่ทำการแก้ไขเนื้อหาใน file1 จะทำให้มันไปทำการ update เนื้อหาใน file2 ด้วย ในทางกลับกัน ถ้าเราทำการแก้ไขหรือเพิ่มเนื้อหาใน file2 มันก็จะทำการ update เนื้อหาใน file1 เช่นกัน

ในทางกลับกัน ถึงแม้ว่า symbolic link จะมีประโยชน์ แต่มันก็มีข้อเสียเหมือนกัน ตัวอย่างต่อไปจะทำการแสดงให้เห็นถึงข้อเสียของมัน (ในการสร้าง symbolic link จะใช้คำสั่ง ln ตามด้วย option -s ดังนี้)

# ln -s file1 file2
# ls -l file*
-rw-rw-r-- 		1 	root	root	14 	Nov 13 	18:54 	file1
lrwxrwxrwx 	1 	root	root	5 	Nov 13 	19:04 	file2 -> file1

จะเห็นว่าใน file2 จะมี ลูกศร ชี้ไปที่ file1 ( -> ) นั่นหมายความว่า file2 เป็น symbolic link ไปยัง file1 และเราจะเห็นว่า file2 นั้นมีขนาดเล็กกว่า file1

Symbolic links มีความแตกต่างจาก hard links ตรงที่มันจะทำการอ้างอิงแบบ alias ไปยัง pathname ที่ต้องการเพื่อไปยัง original file นั้น ๆ ได้ง่ายขึ้น และในกรณีที่เราทำการลบ symbolic link (ในที่นี้คือ file2) ออกไปก็ตาม แต่ original file (file1) ก็จะไม่ถูกลบออกไปตาม symbolic link แต่ในกรณีที่เราทำการลบ original file ออกไป จะทำให้ symbolic link ถูกลบตามด้วย เช่น

# rm -f file1
# cat file2
cat: file2: No such file or directory

เพราะว่า original file (file1) ถูกลบออกไปแล้ว เราก็ไม่สามารถเข้าถึงเนื้อหาของ symbolic link (file2) นั้นได้ แต่อย่างไรก็ตาม symbolic links ก็ยังมีข้อดีกว่า hard link เพราะว่า เราสามารถใช้ symbolic link เพื่อ point ไปยัง directory ใด ๆ ก็ได้บน file system ดังตัวอย่างต่อไปนี้ ถ้าเราต้องการสร้าง hard link ไปยัง /usr/local/games คำสั่ง ln จะต้องกำหนดดังนี้

# ln /usr/local/games play
ln: /usr/local/games: hard link not allowed for directory

แต่ถ้าเราใช้ symbolic link จะต้องกำหนดคำสั่งดังนี้

# ln -s /usr/local/games play
# ls -l play
lrwxrwxrwx 	1 	root	root	16 	Nov 13 	19:28 	play -> /usr/local/games

เพียงเท่านี้เราก็สามารถเข้าถึง directory play แทนก็ใช้ path เต็ม ๆ แบบ /usr/local/games ได้แล้ว เช่น

# cd /usr/local/games

ให้ใช้คำสั่งนี้แทน (เข้าถึง symbolic link)

# cd play
แหล่งที่มา:

Related Article

Related Download

ไม่มีรายการดาวน์โหลด


Login  Login
ค้นหา  Search