คำถามติดแท็ก symlink

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

9
ฉันจะหา symlinks ที่ชำรุดได้อย่างไร
มีวิธีการค้นหาลิงก์สัญลักษณ์ทั้งหมดที่ไม่ได้ชี้ไปที่ใด? find ./ -type l จะให้ลิงก์สัญลักษณ์ทั้งหมดแก่ฉัน แต่ไม่แยกความแตกต่างระหว่างลิงก์ที่ไปที่ใดที่หนึ่งและลิงก์ที่ไม่มี ฉันกำลังทำ: find ./ -type l -exec file {} \; |grep broken แต่ฉันสงสัยว่ามีวิธีแก้ปัญหาอื่นใดบ้าง

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

4
สร้างลิงก์สัญลักษณ์ที่สัมพันธ์กับไดเรกทอรีปัจจุบัน
ฉันกำลังพยายามสร้างลิงก์สัญลักษณ์ในไดเรกทอรีบ้านของฉันซึ่งชี้ไปยังไดเรกทอรีบน HDD ภายนอกของฉัน มันทำงานได้ดีเมื่อฉันระบุเช่นนี้: cd ~ ln -s /run/media/name/exhdd/Data/ Data อย่างไรก็ตามมันสร้างลิงค์ที่ผิดพลาดเมื่อฉันลองทำสิ่งนี้: cd /run/media/name/exhdd ln -s Data/ ~/Data นี้จะสร้างการเชื่อมโยงที่ฉันไม่สามารถcdเข้าสู่ เมื่อฉันพยายามทุบตีบ่น: bash: cd: Data: Too many levels of symbolic links ลิงก์สัญลักษณ์ข้อมูลในบ้านของฉันยังเป็นสีแดงเมื่อlsตั้งค่าให้แสดงเอาต์พุตสี ทำไมสิ่งนี้จึงเกิดขึ้น ฉันจะสร้างลิงค์ในลักษณะนั้นได้อย่างไร? (ฉันต้องการสร้าง symlink ไปยังไดเรกทอรีในไดเรกทอรีทำงานของฉันในไดเรกทอรีอื่น) แก้ไข:ตามนี้คำตอบ StackOverflow ถ้าอาร์กิวเมนต์ที่สอง (ในกรณีของฉันที่ต้องการจะ ~ / ข้อมูล) อยู่แล้วและเป็นไดเรกทอรีที่lnจะสร้าง symlink เพื่อเป้าหมายภายในไดเรกทอรีที่ อย่างไรก็ตามฉันประสบปัญหาเดียวกันกับ: ln -s Data/ ~/
110 directory  symlink  ln 

8
วิธีรับพา ธ แบบเต็มของไฟล์ต้นฉบับของลิงก์สัญลักษณ์แบบนุ่ม?
ฉันต้องการscpไฟล์ไปยังเซิร์ฟเวอร์ ไฟล์นี้เป็นลิงก์สัญลักษณ์และจริงๆแล้วสิ่งที่ฉันต้องการทำคือคัดลอกไฟล์ต้นฉบับ อย่างไรก็ตามฉันไม่ต้องการติดตามเส้นทางของไฟล์ต้นฉบับด้วยตนเองเพราะสามารถเปลี่ยนได้ ถ้าฉันสามารถหาพา ธ สัมบูรณ์ของไฟล์ต้นฉบับได้ฉันsepก็ทำได้ ฉันจะหาเส้นทางได้อย่างไร
99 symlink  scp 

1
จัดทำ cd ตามลิงก์สัญลักษณ์
ฉันติดตั้งรหัสของฉันเป็น sshfs ในโฮมไดเร็กตอรี่ของฉัน, แต่ลำดับชั้นนั้นยากต่อการจดจำ, ดังนั้นฉันจึงสร้าง symlink ในโฮมไดเร็กตอรี่ของฉันซึ่งนำไปสู่ไดเรกทอรีนั้น. มีวิธีที่เมื่อฉัน cd ไปที่ลิงค์สัญลักษณ์แทนที่จะ cding ไปที่ลิงก์สัญลักษณ์จริงจะ cd ไปที่ไดเรกทอรีนั้นหรือไม่ หากคำถามไม่ชัดเจนนี่คือตัวอย่างของสิ่งที่ฉันกำลังมองหา: foo@foo:~$ ls -l lrwxrwxrwx 1 foo foo 5 2012-11-14 08:20 foo -> bar/bar foo@foo:~$ cd foo foo@foo:~/bar/bar/$

5
ฉันจะแก้ไขลิงก์ได้อย่างไร
ความเข้าใจพื้นฐานของฉันเกี่ยวกับ symlink เป็นไฟล์พิเศษไฟล์ที่มีเส้นทางสตริงไปยังไฟล์อื่น VFS ของเคอร์เนลมีจำนวนมากออกไป แต่มีเหตุผลใดที่ symlink ดูเหมือนจะเป็นไปไม่ได้ที่จะแก้ไข? กล่าวอีกนัยหนึ่ง: ฉันสามารถแก้ไข symlink ได้หรือไม่ ถ้าไม่ทำไมไม่ ฉันเข้าใจว่ามีหลายวิธีในการแทนที่ symlinks (ปัจจุบันมีสองทางเลือกในส่วนคำตอบ) แต่มันน่าสนใจที่จะได้รับคำอธิบายว่าทำไมการแทนที่จึงดูเหมือนจะเป็นวิธีเดียวที่จะจัดการกับ symlink ทำไมคุณไม่เปลี่ยนจุดที่พวกมันชี้ไป?

2
การเรียกลิงก์สัญลักษณ์ซ้ำ - อะไรทำให้ "รีเซ็ต"?
ฉันเขียนสคริปต์ทุบตีเล็ก ๆ น้อย ๆ เพื่อดูว่าเกิดอะไรขึ้นเมื่อฉันติดตามลิงก์สัญลักษณ์ที่ชี้ไปยังไดเรกทอรีเดียวกัน ฉันคาดหวังว่ามันจะสร้างไดเร็กตอรี่ที่ใช้งานได้นานมากหรือพัง. แต่ผลที่ได้ทำให้ฉันประหลาดใจ ... mkdir a cd a ln -s ./. a for i in `seq 1 1000` do cd a pwd done บางส่วนของผลลัพธ์คือ ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a ${HOME}/a ${HOME}/a/a ${HOME}/a/a/a ${HOME}/a/a/a/a ${HOME}/a/a/a/a/a ${HOME}/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a ${HOME}/a/a/a/a/a/a/a/a เกิดอะไรขึ้นที่นี่
64 bash  symlink 

7
สร้างลิงก์สัญลักษณ์ไปยังชื่อพา ธ แบบสัมพันธ์
ฉันสามารถทำสิ่งนี้: $ pwd /home/beau $ ln -s /home/beau/foo/bar.txt /home/beau/bar.txt $ readlink -f bar.txt /home/beau/foo/bar.txt แต่ฉันต้องการทำสิ่งนี้: $ pwd /home/beau $ cd foo $ ln -s bar.txt /home/beau/bar.txt $ readlink -f /home/beau/bar.txt /home/beau/foo/bar.txt เป็นไปได้ไหม ฉันสามารถแก้ไขชื่อพา ธ สัมพัทธ์และส่งต่อไปยังวิธีlnใด
64 symlink 

14
เคล็ดลับในการจดจำลำดับของพารามิเตอร์สำหรับ ln
ฉันเคยlnเขียนลิงก์สัญลักษณ์มาหลายปีแล้ว แต่ฉันก็ยังได้คำสั่งของพารามิเตอร์ผิดไปหมด ฉันมักจะเขียนสิ่งนี้: ln -s a b จากนั้นดูผลลัพธ์เพื่อเตือนตัวเอง ฉันมักจะจินตนาการว่าจะเป็นa -> bเมื่อฉันอ่านมันเมื่อมันตรงกันข้ามจริงb -> aๆ สิ่งนี้ให้ความรู้สึกต่อต้านเคาน์เตอร์ดังนั้นฉันจึงพบว่าฉันคาดเดาตัวเองอยู่เสมอ ใครบ้างมีเคล็ดลับที่จะช่วยให้ฉันจำลำดับที่ถูกต้อง?
64 symlink  ln 

2
วิธีสร้างการสำรองข้อมูลจากลิงก์สัญลักษณ์?
ฉันมีไดเรกทอรีที่มีลิงก์สัญลักษณ์ไปยังไดเรกทอรีอื่น ฉันต้องการเก็บถาวรลิงก์สัญลักษณ์ไม่ใช่ลิงก์ แต่เป็นไฟล์เก็บถาวรที่มีไฟล์ของไดเร็กทอรีที่อ้างถึงโดยใช้คำสั่ง tar ฉันจะทำสิ่งนี้ได้อย่างไร
63 tar  symlink 


5
คุณจะทำให้แซมบ้าติดตาม symlink นอกเส้นทางที่แชร์ได้อย่างไร
นี่คือเซิร์ฟเวอร์ Ubuntu 10.04 64 และ samba 3.4.7 ฉันมีไดเรกทอรีที่ใช้ร่วมกัน/home/mit/shareและอีกไดเรกทอรีหนึ่ง/home/tempที่ฉันเชื่อมโยงไปยังไดเรกทอรีที่แบ่งปัน: ln -s /home/temp /home/mit/share/temp แต่บน windows หลังจากใช้อินเทอร์เน็ตฉันไม่สามารถเปิดได้S:/tempแต่บน Linux มันเป็นไปได้ที่จะเข้าถึง/home/mit/share/tempอย่างที่คาดไว้ วิธีนี้ใช้งานได้หากฉันลิงก์ไดเรกทอรีภายใน/home/mit/share/tempดังนั้นฉันคิดว่า samba กำลัง จำกัด การข้ามไปยังลิงก์ภายนอก / เหนือไดเรกทอรีที่ใช้ร่วมกัน แก้ไข: ดูคำถามนี้ที่ชื่อUbuntu + เวอร์ชันล่าสุดของ samba, symlink ไม่สามารถใช้งานร่วมกับเมานต์ Windowsได้อีกต่อไป ดูเหมือนว่าจะเป็นการดีที่สุดที่จะนำunix extensions = noเข้าสู่ส่วนสากลfollow symlinks = yesและwide links = yesเฉพาะในส่วนของการแบ่งปันที่คุณต้องการจริงๆ การunix extensionตั้งค่าสถานะต้องอยู่ในส่วนสากลและไม่อยู่ในส่วนการแชร์แต่ละรายการ แต่เพื่อความปลอดภัยจะดีกว่าถ้าใช้ตัวเลือกอื่นในที่ที่คุณต้องการเท่านั้นไม่ใช่ทั่วโลก

4
รับเส้นทางของสคริปต์ปัจจุบันเมื่อดำเนินการผ่าน symlink
ฉันมียูทิลิตี้ที่ประกอบด้วยไดเรกทอรีคู่ที่มีสคริปต์ทุบตีและไฟล์สนับสนุนที่จะนำไปใช้กับเครื่องหลายเครื่องในไดเรกทอรีที่แตกต่างกันในแต่ละเครื่อง สคริปต์ต้องสามารถอ้างอิงพา ธ ที่สัมพันธ์กับตัวเองดังนั้นฉันจึงต้องสามารถรับพา ธ ไปยังไฟล์ที่ถูกเรียกใช้งานในปัจจุบัน ฉันรู้dirname $0สำนวนที่ใช้งานได้อย่างสมบูรณ์แบบเมื่อสคริปต์ของฉันถูกเรียกใช้โดยตรง น่าเสียดายที่มีความปรารถนาที่จะสามารถสร้างการเชื่อมโยงไปยังสคริปต์เหล่านี้จากไดเรกทอรีที่แตกต่างกันโดยสิ้นเชิงและยังคงมีการทำงานแบบลอจิกการทำเส้นทางแบบสัมพัทธ์ ตัวอย่างของโครงสร้าง driectory โดยรวมมีดังนี้: / |-usr/local/lib | |-foo | | |-bin | | | |-script.sh | | |-res | | | |-resource_file.txt |-home/mike/bin | |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh) ฉันจะอ้างอิงอย่างน่าเชื่อถือได้/usr/local/lib/foo/res/resource_file.txtจากscript.shว่ามันถูกเรียกโดย/usr/local/lib/foo/bin/script.shหรือ~mike/bin/link_to_script?

4
มีข้อเสียใด ๆ จากการใช้ mount - ผูกแทนการเชื่อมโยงสัญลักษณ์?
symlinks มีข้อ จำกัด ในการทำงานวิธีการเช่นls, mvและcpสามารถทำงานกับพวกเขาเพราะไม่เหมือนเปลือกริเริ่มคำสั่งเช่นcdฟังก์ชั่นเหล่านี้ไม่ได้มีข้อมูลเกี่ยวกับวิธีการใช้เข้าถึงไดเรกทอรีที่เกี่ยวกับเส้นทางตรรกะ (ดูที่เกี่ยวข้องกับการโพสต์ ) ดูเหมือนว่าการใช้mount --bindตัวเลือกนี้สามารถแก้ไขสิ่งนี้ได้โดยเพิ่มฟังก์ชั่นการใช้งานและความเข้ากันได้กับแซมบ้าและเซิร์ฟเวอร์ไฟล์อื่น ๆ เพราะไดเรกทอรีที่เมาท์จะมีเส้นทางฟิสิคัลที่เป็นอิสระสองเส้นทางแทนที่จะเป็นลิงค์ ฉันต้องการแทนที่ลิงก์สัญลักษณ์ทั้งหมดของฉันด้วยการอ้างอิงโดยใช้mount --bindตัวเลือก แต่นี่หมายถึงการติดตั้งมากกว่า 150 จุดใน fstab มีปัญหาเรื่องประสิทธิภาพที่อาจเกิดขึ้นจากสิ่งนี้หรือข้อเสียอื่น ๆ ที่ฉันควรพิจารณาหรือไม่?
55 mount  symlink 


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