สร้างลิงก์สัญลักษณ์ของไดเรกทอรีใน Ubuntu [ปิด]


247

ด้านล่างเป็นรหัสของฉันสำหรับสร้าง symlink ของไดเรกทอรี:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

ฉันสร้างไดเรกทอรี/etc/nginxแล้ว ฉันแค่ต้องการเนื้อหาของไดเรกทอรีแหล่งที่มา ( /usr/local/nginx/conf/) ที่จะอยู่ในเนื้อหาของไดเรกทอรีเป้าหมาย ( /etc/nginx) แต่เมื่อผมรันโค้ดที่/etc/nginxมีไดเรกทอรีที่เรียกว่าแทนเนื้อหาของconf confไดเรกทอรีนั้นมีเนื้อหาที่ฉันต้องการ แต่อยู่ผิดตำแหน่ง

ทำไมมันจึงวางไดเรกทอรีในโฟลเดอร์เป้าหมายแทนที่จะใส่เนื้อหาของไดเรกทอรีในโฟลเดอร์เป้าหมาย


คุณยังสามารถใช้ไฟล์ (เบราว์เซอร์ไฟล์เริ่มต้น) คลิกขวาที่โฟลเดอร์ที่คุณต้องการลิงค์> ตัวเลือก "Make Link" มันจะสร้างโฟลเดอร์ที่เชื่อมโยงซึ่งคุณสามารถย้ายและเปลี่ยนชื่อตามที่คุณต้องการ
John Linhart

4
ใช้bind mountคุณสมบัติlinux ตัวอย่าง
gkiko

คำตอบ:


254

นี่คือพฤติกรรมของlnถ้าอาร์กิวเมนต์ที่สองคือไดเรกทอรี มันเป็นสถานที่เชื่อมโยงไปยังหาเรื่องแรกภายในนั้น หากคุณต้องการ/etc/nginxเป็น symlink คุณควรลบไดเรกทอรีนั้นออกก่อนและรันคำสั่งเดียวกันนั้น


1

10
ลิงค์ Unix.SE นั้นกลับมาที่นี่ ดูเหมือนว่าเรามีการพึ่งพาแบบวงกลม
ไกเซอร์

30

นั่นคือสิ่งที่lnบันทึกไว้ให้ทำเมื่อเป้าหมายมีอยู่แล้วและเป็นไดเรกทอรี หากคุณต้องการ/etc/nginxที่จะเป็น symlink มากกว่าประกอบด้วย symlink คุณได้ดีกว่าไม่ได้สร้างมันขึ้นมาเป็นไดเรกทอรีเป็นครั้งแรก!


51
คำตอบของคุณเหมาะสมในบริบทของผู้อ่านที่รู้คำตอบแล้ว มันไม่มีประโยชน์กับทุกคนที่จะถามคำถาม
Ricardo Saporta

1
ฉันสามารถสร้าง symlink ไปที่รูทของอุปกรณ์ USB ที่ติดตั้ง (ดังนั้นฉันจึงไม่สามารถลบโฟลเดอร์นี้ก่อน)
กริกอคอร์นอฟอฟ

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

10

ในสคริปต์มีประโยชน์อย่างนี้:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

มันป้องกันก่อนที่จะสร้าง symlink วน "ไม่ดี" อีกครั้งหลังจากเรียกใช้สคริปต์อีกครั้ง


1
ยอดเยี่ยม นี่คือทางออกที่แน่นอน ไม่จำเป็นต้องสร้างไดเรกทอรีถ้ามันมีอยู่แล้ว มันเป็นบิดที่ดีจริง ๆ ในการเชื่อมโยงอย่างหนักและจมลงใน Blackhole (/ dev / null)
Cosmo Arun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.