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

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

2
การแก้ไขลิงก์สัญลักษณ์ (pwd)
พูดว่าฉันทำต่อไปนี้: cd /some/path ln -s /target/path symbolic_name ถ้าเป็นเช่นนั้น: cd /some/path cd symbolic_name pwd ฉันเข้าใจ: /some/path/symblic_name และไม่: /target/path มีวิธีที่จะให้เชลล์ "แก้ปัญหาอย่างเต็มที่" ลิงก์สัญลักษณ์ (เช่นการอัปเดต CWD ฯลฯ ) ราวกับว่าฉันทำเสร็จแล้ว: cd /target/path ? ฉันต้องเรียกใช้บางโปรแกรมที่ดูเหมือนจะ "รับรู้" หรือ "ละเอียดอ่อน" เกี่ยวกับวิธีที่ฉันไปยังเส้นทางเป้าหมายของฉันและฉันต้องการให้พวกเขาคิดว่าฉันมาถึงเส้นทางเป้าหมายราวกับว่าทำcd /target/pathโดยตรง
32 files  symlink  cwd 

6
แทนที่ไฟล์ด้วยฮาร์ดลิงก์ไปที่ / dev / null
ฉันใช้งานแอปพลิเคชันที่เขียนไปยัง log.txt แอพนี้ได้รับการอัพเดตเป็นเวอร์ชั่นใหม่ทำให้ปลั๊กอินที่รองรับไม่รองรับอีกต่อไป มันบังคับให้เกิดข้อผิดพลาดจำนวนมหาศาลใน log.txt และดูเหมือนจะไม่สนับสนุนการเขียนไปยังไฟล์บันทึกอื่น ฉันจะเขียนพวกเขาไปยังบันทึกอื่นได้อย่างไร ฉันได้พิจารณาแทนที่ log.txt ด้วยฮาร์ดลิงก์ (แอปพลิเคชันไม่สามารถบอกความแตกต่างได้ใช่ไหม) หรือฮาร์ดลิงก์ที่ชี้ไปที่ / dev / null ตัวเลือกของฉันคืออะไร?


4
ฉันควรรวมเครื่องหมายทับ / ใน symlink ไปยังไดเรกทอรีหรือไม่?
symlinking ไปยังไดเรกทอรีให้กับผลที่แตกต่างกันls -lขึ้นอยู่กับว่าผมหรือln -s dir ln -s dir/แต่อะไรคือความแตกต่างที่แท้จริงและฉันควรเลือกข้อใด

5
แปลง symlink แบบสัมบูรณ์เป็น symlink แบบสัมพัทธ์ด้วยคำสั่ง Linux อย่างง่าย
ฉันมีความสมบูรณ์ย่อยระบบแฟ้มภายในเส้นทาง/home/user/systemที่มีโครงสร้างลินุกซ์มาตรฐานกับไดเรกทอรี/bin, /home, /root, /usr, /var, /etc... ระบบไฟล์ย่อยนี้มีลิงก์สัญลักษณ์ทั้งแบบสัมพันธ์หรือแบบสัมบูรณ์ symlinks /home/user/systemญาติเป็นเพียงที่ดีที่พวกเขาอยู่ในที่อยู่ภายใต้ระบบแฟ้มย่อย แต่ symlink แบบสัมบูรณ์เป็นปัญหาเนื่องจากมันชี้ไปที่เป้าหมายนอกระบบย่อย ดังตัวอย่างเราถือว่า symlink สัมบูรณ์ดังต่อไปนี้ (เห็นในระบบย่อย): /usr/file1 -> /usr/lib/file1 ในระบบไฟล์โดยรวมเรามีลิงค์ที่/home/user/system/usr/file1ตอนนี้ชี้ไปที่ไฟล์/usr/lib/file1นอกระบบย่อยแทนที่จะเป็นไฟล์/home/user/system/usr/lib/file1 ภายในระบบย่อย ฉันต้องการมีสคริปต์ง่ายๆโดยเฉพาะอย่างยิ่งบรรทัดคำสั่งเดียว (rsync, chroot, find, ... ) ที่แปลง symlink สัมบูรณ์ทุกรายการให้เป็นแบบสัมพัทธ์ ในตัวอย่างที่กำหนดลิงก์นั้นจะกลายเป็นลิงค์ /usr/file1 -> ../usr/lib/file1

7
วิธีพกพาเพื่อรับเส้นทางที่สมบูรณ์ของสคริปต์
เป็นวิธีแบบพกพาสำหรับสคริปต์ (zsh) เพื่อกำหนดเส้นทางที่แน่นอนคืออะไร? บน Linux ฉันใช้สิ่งที่ชอบ mypath=$(readlink -f $0) ... แต่นี่ไม่ใช่แบบพกพา (เช่นreadlinkในดาร์วินไม่รู้จัก-fธงและไม่มีอะไรเทียบเท่า) (เช่นเดียวกับการใช้readlinkสิ่งนี้คือเป็นที่ยอมรับว่าเป็นแฮ็คที่ดูคลุมเครือ) อะไรคือวิธีพกพาที่มากขึ้น?

1
ทำไม reboot, shutdown และ poweroff symlink ถึง systemctl?
ในซุ้มลินุกซ์ถ้าผมทำls -lใน/sbinผมจะเห็นว่าreboot, shutdownและpoweroffมี symlinks /usr/bin/systemctlทั้งหมดเพื่อ แต่ออกreboot, shutdownและsystemctlคำสั่งเห็นได้ชัดไม่ทุกคนมีพฤติกรรมเดียวกัน จะls -lไม่แสดงข้อมูลทั้งหมดเกี่ยวกับ symlink ให้ฉันหรือไม่ ยกตัวอย่างเช่นฉันจะรู้ได้อย่างไรว่า symlink ที่แท้จริงrebootคืออะไร?
28 arch-linux  ls  symlink  reboot  ln 

4
ฉันจะบอกได้อย่างไรว่าโฟลเดอร์นั้นเป็น symlink จริงหรือไม่และฉันจะแก้ไขได้อย่างไรถ้ามันเสียหาย?
ฉันจะบอกได้อย่างไรว่าฉันมี symlink ทางลัดของบางประเภทหรือโฟลเดอร์ใน Linux โปรดดูภาพหน้าจอต่อไปนี้ อย่างที่คุณเห็นlsคำสั่งแสดงรายการวัตถุที่บางส่วนมีสีเป็นสีน้ำเงินเข้มในขณะที่วัตถุอื่น ๆ มีสีน้ำเงินอ่อน (สีฟ้า) วัตถุสีสีฟ้าเหล่านี้คืออะไร? ลิงก์สัญลักษณ์ที่แท้จริงเหล่านี้มีอะไรบ้าง อย่างที่คุณเห็นฉันไม่สามารถcdเรียกหนึ่ง hdd ได้ root@dm500hd:/# cd hdd -sh: cd: can't cd to hdd ฉันคิดว่ามันต้องเปลี่ยนเส้นทาง/media/hddและฉันสังเกตว่าโฟลเดอร์ hdd หายไป มีวิธีแก้ไขปัญหานี้หรือไม่? อัปเดต:นี่คือผลลัพธ์ของls -alคำสั่ง อย่างที่คุณเห็นมันบอกว่าhdd -> /media/hddมันมีสีแดง นี่หมายความว่ามันใช้งานไม่ได้หรือว่าถูกเมานท์อัตโนมัตินั่นคือเมื่อมีการเชื่อมต่อฟิสิคัลฮาร์ดดิสก์? อัปเดต:นี่คือผลลัพธ์ของgrep media /etc/auto*คำสั่ง สิ่งเหล่านี้/etc/auto.master:/media/netและ/etc/auto.networkรายการทำอะไร นี่คือผลลัพธ์ของls -Fal /mediaคำสั่ง นี่เป็นความช่วยเหลือหรือไม่? ... นี่คือผลลัพธ์ของstatและfileคำสั่งรวมถึงรายการของ / usr และ / bin สิ่งนี้ช่วยฉันได้ไหม? ... …
28 linux  shell  symlink 

3
ทำให้ Nginx ติดตาม symlinks
Nginx ไม่ติดตามลิงก์สัญลักษณ์ ฉันได้รับข้อผิดพลาด 404 ในไดเรกทอรีของฉันฉันมีลิงค์นี้: lrwxrwxrwx 1 root root 48 Sep 23 08:52 modules -> /path/to/dir/ แต่/path/to/dirไม่พบไฟล์ที่เก็บไว้ใน
28 symlink  nginx 

2
เหตุใด ln -s จึงยอมรับอาร์กิวเมนต์เดี่ยว
> cd /tmp > ln -s foo > ls -alhF /tmp lrwxrwxrwx 1 user user 3 Jul 29 14:00 foo -> foo นี่เป็นข้อบกพร่องlnหรือมีกรณีการใช้งานสำหรับการเชื่อมโยงไฟล์กับตัวเองหรือไม่? coreutils 8.21-1ubuntu5.1นี้จะมีการ
27 symlink  coreutils  ln 

3
วิธี ls ใช้รูปแบบยาว (-l) ในขณะที่ยังคงติดตาม symlink ไดเรกทอรี?
ฉันสังเกตเห็นว่าls -lไม่เพียง แต่เปลี่ยนการจัดรูปแบบของผลลัพธ์ แต่ยังรวมถึงวิธีจัดการลิงก์ไดเรกทอรี > ls /rmn biweekly.sh daily.sh logs ... > ls -l /rmn lrwxrwxrwx 1 root root 18 Feb 11 2011 /rmn -> /root/maintenance/ ฉันต้องการรับรายละเอียดเกี่ยวกับสิ่งที่อยู่/rmnไม่ใช่ข้อมูลเกี่ยวกับ/rmnsymlink สิ่งหนึ่งที่ฉันคิดได้คือการสร้างเชลล์ฟังก์ชั่นที่ทำสิ่งนี้: cd /rmn ls -l cd - แต่ที่ดูเหมือนว่า hacky เกินไปโดยเฉพาะอย่างยิ่งนับตั้งแต่ messes up cd -การใช้งานต่อไปของ มีวิธีที่ดีกว่า? (ฉันใช้ CentOS 2.6.9)
27 ls  symlink 

4
วิธีการคัดลอกโครงสร้างไดเรกทอรีโดยไม่ต้องลบ symlink
ฉันต้อง "ติดตั้ง" กลุ่มของไฟล์ไปยังไดเรกทอรีอื่นซึ่งทำให้โครงสร้างไดเรกทอรีของไฟล์ต้นฉบับไม่เปลี่ยนแปลง ตัวอย่างเช่นถ้าผมได้./foo/bar/baz.txtไปฉันต้องการผลที่ได้จะเป็น/var/www/localhost/webroot/ มีความสามารถนี้แต่เมื่อฉันทำสิ่งนี้ฉันค้นพบว่ามันไม่เป็นมิตรกับ symlinks:/var/www/localhost/webroot/foo/bar/baz.txtrsync--relative $ ls -ald /var/www/localhost/webroot/ | grep ^l lrwxrwxrwx 1 www-data www-data 15 2014-01-03 13:45 media -> ../static/media lrwxrwxrwx 1 root root 13 2014-02-24 13:47 var -> ../static/var $ rsync -qrR . /var/www/localhost/webroot/ $ ls -ald /var/www/localhost/webroot/ | grep var drwxr-xr-x 3 root root 4096 …
27 rsync  symlink  mirror 

4
ln -s พร้อมกับพา ธ ที่สัมพันธ์กับ pwd
ฉันพยายามสร้างลิงก์สัญลักษณ์มากมาย แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงใช้งานได้ ln -s /Users/niels/something/foo ~/bin/foo_link ในขณะนี้ cd /Users/niels/something ln -s foo ~/bin/foo_link ไม่ใช่. ฉันเชื่อว่ามีบางอย่างเกี่ยวข้องกับการfoo_linkเชื่อมโยงไปยัง foo /Users/niels/binแทน/Users/niels/something ดังนั้นคำถามคือฉันจะสร้างลิงก์สัญลักษณ์ที่ชี้ไปยังเส้นทางที่แน่นอนได้โดยไม่ต้องพิมพ์ได้อย่างไร สำหรับการอ้างอิงฉันใช้ Mac OS X 10.9 และ Zsh
26 bash  shell  symlink  ln 

4
การเพิ่มไปยังเส้นทางเทียบกับการเชื่อมโยงจาก / bin
ผู้ดูแลระบบ sys ของเราติดตั้งแอปพลิเคชันซอฟต์แวร์ (Maven) บนเซิร์ฟเวอร์และบอกให้ทุกคนเพิ่ม/usr/local/maven/bin/โฟลเดอร์ลงในพา ธ ของพวกเขา ฉันคิดว่ามันจะสะดวกกว่าที่จะเชื่อมโยงโปรแกรมบางอย่างในโฟลเดอร์นั้นจาก/binโฟลเดอร์ (หรือโฟลเดอร์อื่น ๆ ที่ทุกคนมีในเส้นทางของพวกเขา) เช่นนี้ ln -s /usr/local/maven/bin/* /bin ถูกต้องหรือไม่ มีผลข้างเคียงที่ซ่อนอยู่กับคำแนะนำของฉันหรือไม่

3
mv ไฟล์โดยไม่ทำลาย symlink ไปยังไฟล์นั้น
เป็นไปได้ไหมที่ mvไฟล์มีการแบ่งลิงก์สัญลักษณ์ไปยังไฟล์นั้น? การตอบกลับครั้งแรกของฉันคือไม่และฉันกำลังหาทางออกโดยใช้สคริปต์เพื่อเปลี่ยนลิงค์ทันทีหลังจากการย้าย แต่ฉันสงสัยว่าคนอื่น ๆ เข้าหาปัญหานี้อย่างไร เส้นทางและชื่อของ symlinks เป็นที่รู้จักกันล่วงหน้าดังนั้นในทางทฤษฎีสิ่งที่ฉันต้องทำคือ: รับเป้าหมายของลิงค์ mv เป้าหมาย สร้างลิงก์ไปยังเป้าหมายใหม่ สร้างลิงค์ใหม่ไปยังเป้าหมายใหม่ (ต่างจากลิงค์เดิมซึ่งฉันยังต้องการเก็บไว้ตอนนี้) ในวันต่อมา: ลบลิงค์เก่า 1-4 จะถูกห่อหุ้มด้วยสคริปต์ทุบตี แต่ฉันสงสัยว่าใครมีวิธีการที่สง่างามกว่าหรือรู้ถึงคำสั่งในตัวหรือคำสั่งที่ฉันไม่ทราบ

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