Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

วิธีสร้าง Linux Symlinks โดยใช้คำสั่ง ln

บทแนะนำนี้จะอธิบายวิธีสร้างลิงก์สัญลักษณ์ (ลิงก์สัญลักษณ์) หรือที่เรียกว่า "ซอฟต์ลิงก์" ใน Linux โดยใช้คำสั่ง ln

หากคุณมาที่ Linux จากพื้นหลังโดยใช้ระบบปฏิบัติการ Windows คุณจะคุ้นเคยกับแนวคิดของทางลัด – ไฟล์ที่ไม่มีข้อมูลจริงและมีลิงก์ไปยังไฟล์หรือโฟลเดอร์จริงที่คุณต้องการเข้าถึง

สิ่งเหล่านี้อาจมีอยู่เพื่อความสะดวกของคุณ (เพื่อประหยัดเวลาในการคลิกผ่านโฟลเดอร์ที่ซ้อนกัน) หรือเพื่อเปลี่ยนเส้นทางเอาต์พุต (คุณมีโปรแกรมที่มีไดเร็กทอรีฮาร์ดโค้ดซึ่งจะส่งออกไฟล์และคุณต้องการส่งไปที่อื่น)

Soft Links (Symlinks) ใน Linux มีจุดประสงค์เดียวกันเป็นหลัก

ฮาร์ดลิงก์กับซอฟต์ลิงก์

  • ซอฟต์ลิงค์ (เรียกอีกอย่างว่า ลิงก์สัญลักษณ์หรือลิงก์สัญลักษณ์ ) อ้างถึงตำแหน่งของไฟล์หรือโฟลเดอร์อื่นในระบบไฟล์
    • ดังนั้น หากไฟล์ที่ได้ ซอฟต์ลิงค์ ถูกลบซอฟต์ลิงก์ไม่มีความหมายเนื่องจากชี้ไปยังไฟล์ที่ไม่มีอยู่จริง
    • เนื่องจากซอฟต์ลิงก์เป็นเพียงการอ้างอิงไปยังตำแหน่งไฟล์ที่ลิงก์ จึงสามารถอยู่ในระบบไฟล์ต่างๆ ได้
    • ไม่มีการแชร์สิทธิ์ระหว่างลิงก์และลิงก์
  • ฮาร์ดลิงก์ เป็นสำเนามิเรอร์ของไฟล์ที่เชื่อมโยง – ทั้งสองสำเนาอ้างถึงข้อมูลเดียวกันบนอุปกรณ์จัดเก็บข้อมูล
      • ดังนั้น การลบไฟล์ที่ฮาร์ดลิงก์จะไม่ลบข้อมูล – “ฮาร์ดลิงก์” อีกอันไปยังข้อมูลจะยังคงเป็นไฟล์ในระบบไฟล์
        • ระบบไฟล์จะนับจำนวน การอ้างอิง มีไฟล์อยู่บนดิสก์ เมื่อฮาร์ดลิงก์ทั้งหมดถูกลบ การนับนั้นจะเป็น 0 (ศูนย์) เมื่อจำนวนถึงศูนย์ ไฟล์จะถูกลบ และพื้นที่ข้อมูลจะถูกยกเลิกการจัดสรรเพื่อให้สามารถเก็บไฟล์อื่นๆ ได้
      • เนื่องจากเป็นข้อมูลอ้างอิงสองรายการ จึงต้องมีอยู่ในระบบไฟล์เดียวกัน
      • มีการแชร์สิทธิ์ – ทั้งที่ลิงก์และลิงก์ เป็นไฟล์เดียวกันบนดิสก์ที่อ้างอิงจากสองแห่ง

ไวยากรณ์

ln [OPTIONS] SOURCE_PATH LINK_PATH

โปรดทราบว่า:

  • ทั้งไฟล์และโฟลเดอร์สามารถใช้เป็น SOURCE_PATH
  • ซอฟต์ไลค์จะถูกสร้างขึ้นที่ LINK_PATH

ตัวเลือก

คุณสามารถส่งตัวเลือกต่อไปนี้ไปยัง ln คำสั่ง:

-F หากลิงก์ที่เสนอ (link_name) มีอยู่แล้วและเป็นไดเรกทอรี ให้ลบออกเพื่อให้เกิดลิงก์ได้ ควรใช้ตัวเลือก -F กับตัวเลือก -f หรือ -i หากไม่มีการระบุ -f จะเป็นนัย อ็อพชัน -F เป็นแบบ no-op เว้นแต่จะระบุอ็อพชัน -s
-h หาก link_name หรือ link_dirname เป็นลิงก์สัญลักษณ์ อย่าทำตาม สิ่งนี้มีประโยชน์มากที่สุดกับตัวเลือก -f เพื่อแทนที่ symlink ที่อาจชี้ไปที่ไดเร็กทอรี
-f หากลิงก์ที่เสนอ (link_name) มีอยู่แล้ว ให้ยกเลิกการลิงก์เพื่อให้เกิดลิงก์ได้ (ตัวเลือก -f จะแทนที่ตัวเลือก -i ก่อนหน้า)
-i ทำให้ ln เขียนข้อความแจ้งข้อผิดพลาดมาตรฐาน หากมีลิงก์ที่เสนออยู่ หากการตอบสนองจากอินพุตมาตรฐานเริ่มต้นด้วยอักขระ y หรือ Y ให้ยกเลิกการเชื่อมโยงลิงก์ที่เสนอเพื่อให้เกิดลิงก์ มิฉะนั้น อย่าพยายามเชื่อมโยง (ตัวเลือก -i จะแทนที่ตัวเลือก -f ก่อนหน้า)
-n เหมือนกับ -h เพื่อความเข้ากันได้กับการใช้งาน ln อื่นๆ
-s สร้างลิงค์สัญลักษณ์
-v ทำให้ ln เป็น verbose แสดงไฟล์ในขณะที่ประมวลผล

ตัวเลือกเหล่านี้และรายละเอียดทั้งหมดสำหรับ ls คำสั่งสามารถพบได้ในคู่มือผู้ใช้โดยเรียกใช้:

man ls

ตัวอย่าง

เพื่อสาธิตการสร้างลิงก์สัญลักษณ์อย่างง่าย (symlink สั้น ๆ ) เราสามารถสร้างไฟล์:

touch test_file.txt

จากนั้นเราก็สร้าง ซอฟต์ลิงค์ ไปที่มัน:

ln -s test_file.txt link_to_test_file

คุณสามารถตรวจสอบลิงก์ได้โดยเรียกใช้:

ls -l

ซึ่งจะแสดงผลเช่น:

-rw-r--r--  1 user  staff        0  2 Jan 01:31 test_file.txt
lrwxr-xr-x  1 user  staff        9  2 Jan 01:32 link_to_test_file -> test_file.txt

โปรดทราบว่า:

  • ตัวอักษรในคอลัมน์แรกแสดงถึงประเภทไฟล์หรือโฟลเดอร์และการอนุญาต
  • ตัวเลขต่อไปนี้คือจำนวนไฟล์ที่มีอยู่
  • ผู้ใช้/พนักงาน คือผู้ใช้/กลุ่มที่มีสิทธิ์เข้าถึงไฟล์หรือโฟลเดอร์
  • ตามด้วยขนาดไฟล์ วันที่แก้ไข และชื่อ
  • เห็นว่า  ที่จุดเริ่มต้นของแถว? ซึ่งหมายความว่าเป็นลิงก์
  • นอกจากนี้ คุณยังสามารถดู -> bit at end ซึ่งแสดงว่าไฟล์นั้นเชื่อมโยงกับ test_file.txt
  • อ้อ นี่มันลิงค์ชัดๆ

บทสรุป

เมื่อฉันเข้าสู่ระบบส่วนใหญ่ ฉันจะถูกส่งไปยังโฮมไดเร็กทอรีของผู้ใช้โดยตรง แทนที่จะพิมพ์พาธไปยังไดเร็กทอรี ฉันต้องการทำงานในวันนั้น (เช่น ในไดเร็กทอรีที่โฮสต์ไฟล์สำหรับเว็บแอปที่ฉันปรับใช้) สิ่งแรกที่ฉันมักจะทำคือสร้างซอฟต์ ลิงก์ไปยังโฟลเดอร์นั้น เพื่อที่ฉันจะได้ไม่ต้องพิมพ์พาธแบบเต็มทุกครั้งที่ต้องการย้อนกลับไปยังโฟลเดอร์นั้น

มีประโยชน์มาก

ยังใหม่กับลินุกซ์? นำไปใช้ได้ทันทีโดยการเรียนรู้โค้ด!