Symlink ไปยังโฟลเดอร์ปัจจุบันเป็นเส้นทางที่แน่นอนโดยไม่ต้องพิมพ์เส้นทางทั้งหมด


10

Symlinks ถูกบันทึกทางลัดสำหรับเส้นทางที่เกี่ยวข้อง:

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

ไฟล์~/bar/fooนี้เป็น symlink ไปยังbarไดเรกทอรีปัจจุบันเช่นตัวมันเอง

ถ้าฉันต้องการสร้าง symlink ในไดเรกทอรีอื่นไปยังไดเรกทอรีที่ฉันใช้อยู่ในเวลานั้น ดังนั้นในตัวอย่างข้างต้นผมอยู่ใน~/fooและฉันต้องการที่จะสร้าง~/bar/fooเป็น symlink ~/fooไป แน่นอนไดเรกทอรีปัจจุบันของฉันอาจยาวกว่า 5 ตัวอักษรเล็กน้อยและอาจไม่ง่ายนักในการพิมพ์

คำตอบ:


13

ฉันจะบอกว่าพิมพ์

ln -s $PWD ~/bar/

หรือ

ln -s `pwd` ~/bar/

คุณสามารถใช้

ln -s $PWD ~/bar/

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

หากเส้นทางมีช่องว่างแนะนำให้ใช้:

ln -s "$PWD" ~/bar/

2
อ้างถึง$ตัวแปรและการแทนที่คำสั่งของคุณสองครั้งมิฉะนั้นชื่อไฟล์ที่มีช่องว่างจะทำให้การทำงานแย่ลง คุณไม่จำเป็นต้องลงท้ายด้วย$(basename $PWD)(และคุณลืม$(และการอ้างอิง :-))) เนื่องจากเป็นชื่อลิงก์เริ่มต้น
Daniel Andersson

ฉันคิดว่าฉันโง่ ฉันคิดว่าฉันลองpwdวิธีการนี้แล้วมีบางอย่างผิดปกติ ลองใส่ลงไปที่ข้อผิดพลาด ID-ten-T
Gareth

@DanielAndersson คุณพูดถูกว่าไม่รองรับช่องว่างในพา ธ จุดดี. ดังนั้นสำหรับบันทึกฉันจะปรับปรุงคำตอบ :)
Huygens

4

อย่าง:

ln -s "$(readlink -f .)" ~/bar

(อาจจะดีสำหรับคนทั่วไปในสคริปต์) หรือเพียงแค่

ln -s ~/foo ~/bar

ค่อนข้าง:

ln -s ../foo ~/bar

การกรอกข้อมูลในแท็บจะช่วยให้คุณพิมพ์ได้


จากความคิดเห็นของ grawity และhttp://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html :

* การเปลี่ยนแปลงที่สำคัญในรีลีส 8.16 (2012-03-26) [เสถียร]

...

lnตอนนี้ยอมรับ--relativeตัวเลือกเพื่อสร้างการเชื่อมโยงสัญลักษณ์สัมพัทธ์กับเป้าหมายโดยไม่คำนึงถึงวิธีการระบุเป้าหมาย

ดังนั้นด้วยรุ่นนี้:

ln -s --relative . ~/bar

ควรทำงาน (ด้วยในทางปฏิบัติเหมือนตัวอย่างแรกของคุณด้วยการเพิ่ม--relativeสวิตช์)


4
Coreutilsล่าสุดสามารถสร้างการเชื่อมโยงสัมพัทธ์โดยอัตโนมัติln -s -r foo ~/barได้
1686

@grawity: น่าสนใจ ไม่ได้อยู่ในระบบของฉันอย่างเห็นได้ชัด (Debian Sid)
Daniel Andersson

ดูเหมือนว่าจะถูกเพิ่มสำหรับ v8.16 ในวันที่ 22 มีนาคมตามคอมไพล์
user1686

1
นอกจากนี้สิ่งที่เป็นข้อได้เปรียบของ$(readlink -f .)กว่า$PWD?
user1686

2
@grawity: ไม่มาก มันทำงานแตกต่างกันถ้าไดเรกทอรีการทำงานปัจจุบันถึงลิงก์ readlink -fจากนั้นจะเชื่อมโยงไปยังเส้นทางเป้าหมายที่แน่นอนของไดเรกทอรีปัจจุบันในขณะที่$PWDsymlink ไปยังไดเรกทอรีที่แท้จริงอยู่ในปัจจุบันสิ่งที่ต้องการอาจแตกต่างกันเป็นครั้งคราวและเป็นครั้งแรกและสำคัญที่สุดอาจไม่เป็นปัญหาเลย
Daniel Andersson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.