จะแก้ไขลิงค์สัญลักษณ์ที่ชี้ไปยังตำแหน่งที่ผิดได้อย่างไร


3

ฉันสับสนเล็กน้อยกับฮาร์ด / ซอฟต์ลิงค์ที่นี่ ฉันใช้ OSX มีโฟลเดอร์ '4' และลิงก์สองลิงก์ชี้ไปที่:

drwxr-xr-x  4 imm  staff  136 14 Jun 21:24 4
lrwxr-xr-x  1 imm  staff    1 14 Jun 16:56 4.0 -> 4
lrwxr-xr-x  1 507  wheel    1 14 Jun 16:56 Current -> 4

เมื่อฉันติดตาม 'ปัจจุบัน' ในโฟลเดอร์มันจะนำไปสู่ตำแหน่งที่แตกต่างอย่างสิ้นเชิง (เส้นทางที่ฉันคัดลอกเนื้อหาทั้งหมดจาก) ฉันต้องการให้ 'ปัจจุบัน' ชี้ไปที่โฟลเดอร์ '4' ที่ตำแหน่งใหม่

ฉันจะบรรลุสิ่งนี้ได้อย่างไร

คำตอบ:


10

คุณต้องลบและสร้างลิงค์ใหม่ คุณสามารถทำได้ด้วย

rm Current

จากนั้นสร้างใหม่:

ln -s /path/to/the/new/location Current

คุณสามารถใช้เส้นทางที่แน่นอน (เพื่อความเรียบง่าย)

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

แก้ไข: เนื่องจากคุณพูดถึงฮาร์ดลิงก์ฉันจะดำเนินการต่อและแนะนำพวกเขาที่นี่

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

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

ระบบไฟล์จะติดตามจำนวนฮาร์ดลิงก์ที่ชี้ไปยังไอโหนดนั้นโดยอัตโนมัติและเพียงแค่ลบไอโหนดเมื่อจำนวนนั้นถึง 0


ฉันสามารถใช้เส้นทางสัมพัทธ์ได้หรือไม่?
Hedge

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

นั่นคือสิ่งที่ฉันต้องการ :)
Hedge

ย้ายข้อมูลนั้นไปยังโพสต์เนื่องจากเป็นสิ่งที่คุณเป็นอยู่จริงๆ
Darth Android

1
นั่นเป็นความอัปยศ ตราบใดที่ชัดเจนควรได้รับการตอบรับที่ดี
Darth Android

7

คุณสามารถทำสิ่งนี้:

ln -nfs /path/to/the/new/location Current

โดยที่ 'ปัจจุบัน' เป็นลิงค์สัญลักษณ์ปัจจุบัน ตัวเลือก -n และ -f ยกเลิกการเชื่อมโยงและลบ 'ปัจจุบัน' ดั้งเดิมและอนุญาตการสร้างใหม่ (-s สำหรับซอฟต์ลิงค์)

ฉันรู้ว่าคำถามได้รับคำตอบแล้วและปัญหาดั้งเดิมได้แก้ไขไปเมื่อนานมาแล้ว แต่กระบวนการของการเชื่อมโยงสัญลักษณ์โดยไม่ต้องผ่านขั้นตอนการลบแบบแยกต่างหากทำให้ฉันรำคาญอีกครั้ง หวังว่ามันจะช่วยให้คนอื่นมองหาคำตอบ!


ฉันพบจากประสบการณ์อันเจ็บปวดที่การยกเลิกการเชื่อมโยงและนำออกไม่น่าเชื่อถืออย่างสมบูรณ์และการrmแยกจากกันนั้นมีความน่าเชื่อถือมากกว่าหากค่อนข้างละเอียด
Kevin Teljeur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.