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

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

1
ls -l vs ls -lL
ฉันรู้ว่าสิ่งนี้ดูเหมือนซ้ำซ้อน แต่คำถามที่ถามไปก่อนหน้านี้ไม่ตอบคำถามของฉัน ดังนั้นในเชลล์ฉันไปที่/homeไดเรกทอรีและสร้างไดเรกทอรีมีเรียกมันplay จากนั้นฉันไปที่ไดเรกทอรีนี้/home/playและสร้างไฟล์สองไฟล์อันแรกคือไฟล์ข้อความที่สองคือลิงก์สัญลักษณ์ไปยังเทอร์มินัลที่เรียกว่าtty ตอนนี้ถ้าฉันใช้ls -lฉันจะได้รับผลลัพธ์ต่อไปนี้ ฉันจะเอาls -lLมันไปที่ไหน ความแตกต่างนี้ควรจะหมายถึงอะไร? เครื่องหมายคำถามหมายถึงอะไร

1
ln หมายถึงอะไร
ใน Linux คุณสามารถใช้lnคำสั่งเพื่อสร้างลิงก์ $ touch foo $ ln -s foo foo_link $ ls -l lrwxrwxrwx 1 cklein cklein 3 May 29 16:11 foo_link -> foo ฉันคิดว่า 'l' ในคำlnว่า "ลิงก์" แต่ "n" หมายถึงอะไร สิ่งที่lnยืนหยัดเพื่อ?
17 symlink  ln 

2
/ dev / fd เกี่ยวข้องกับ / proc / self / fd / อย่างไร
$ ls -l /dev/stdin /dev/fd/0 lrwx------ 1 tim tim 64 2011-08-07 09:53 /dev/fd/0 -> /dev/pts/2 lrwxrwxrwx 1 root root 15 2011-08-06 08:14 /dev/stdin -> /proc/self/fd/0 $ ls -l /dev/pts/2 /proc/self/fd/0 crw--w---- 1 tim tty 136, 2 2011-08-07 09:54 /dev/pts/2 lrwx------ 1 tim tim 64 2011-08-07 09:54 /proc/self/fd/0 -> /dev/pts/2 อะไรคือความแตกต่างและความสัมพันธ์ระหว่าง …

8
ls เนื้อหาของไดเรกทอรีที่ละเว้น symlinks
ฉันมีไดเรกทอรีที่ฉันต้องการแสดงรายการเนื้อหาทั้งหมด (ไฟล์และไดเรกทอรีย่อย) โดยไม่แสดงลิงก์สัญลักษณ์ ฉันใช้โปรแกรมอรรถประโยชน์ GNU บน Linux lsรุ่นคือ 8.13 ตัวอย่าง: รายการไดเรกทอรีเต็ม: ~/test$ ls -Gg total 12 drwxrwxr-x 2 4096 Jul 9 10:29 dir1 drwxrwxr-x 2 4096 Jul 9 10:29 dir2 drwxrwxr-x 2 4096 Jul 9 10:29 dir3 -rw-rw-r-- 1 0 Jul 9 10:29 file1 -rw-rw-r-- 1 0 Jul 9 10:29 …
17 ls  symlink  recursive 

3
แทนที่ลิงก์สัญลักษณ์ซึ่งเชื่อมโยงกับเป้าหมายไดเรกทอรี
ฉันต้องการอัพเกรดเซิร์ฟเวอร์ Tomcat จาก 7.0.19 เป็น 7.0.20 ฉันเคยไปln -s apache-tomcat-7.0.19 tomcat7มาแล้วดังนั้นตอนนี้ฉันต้องเชื่อมโยง tomcat7ไปยังเป้าหมายใหม่โดยใช้คำสั่งต่อไปนี้ln -s --force apache-tomcat-7.0.21 tomcat7แต่มันไม่ทำงานอย่างที่ฉันคาดไว้: มันสร้างลิงก์สัญลักษณ์tomcat7/apache-tomcat-7.0.21แทนการแทนที่tomcat7ลิงก์สัญลักษณ์ที่มีอยู่ด้วยเป้าหมายใหม่ ตัวอย่าง # mkdir v1 v2 # ln -s v1 v # ln -s v2 v # ll v* lrwxrwxrwx. 1 root root 2 Sep 5 16:02 v -> v1 v1: total 0 lrwxrwxrwx. 1 …

5
มีอัลกอริทึมในการตัดสินใจว่า symlink วนซ้ำหรือไม่
ระบบ Unix มักจะผิดพลาดหากพวกเขาเผชิญกับเส้นทางที่มีการวนรอบ symlink หรือเพียงแค่ symlink มากเกินไปเพราะพวกเขามีข้อ จำกัด จำนวน symlink พวกเขาจะเข้าไปสำรวจในเส้นทางเดียว แต่มีวิธีการตัดสินใจจริง ๆ ว่าเส้นทางที่กำหนดให้แก้ไขบางสิ่งบางอย่างหรือมีการวนรอบแม้ว่ามันจะมีการเชื่อมโยงมากขึ้นกว่า Unix ยินดีที่จะปฏิบัติตาม? หรือนี่เป็นปัญหาที่ไม่สามารถตัดสินใจได้อย่างเป็นทางการ? และหากสามารถตัดสินใจได้จะสามารถตัดสินใจได้ในเวลา / หน่วยความจำที่สมเหตุสมผล (เช่นโดยไม่ต้องไปที่ไฟล์ทั้งหมดในระบบไฟล์)? ตัวอย่างบางส่วน: a/b/c/d where a/b is a symlink to ../e and e is a symlink to f and f is a symlink to a/b a/b/c/d where a/b/c is a symlink …

2
คำสั่ง idempotent ใดที่ฉันสามารถใช้เพื่อสร้าง symlink ให้ชี้ไปที่ไดเรกทอรี
ฉันต้องการใส่คำสั่งลงในเชลล์สคริปต์ซึ่งจะสร้าง symlink ไปยังไดเรกทอรี แต่สคริปต์นี้สามารถเรียกใช้ซ้ำแล้วซ้ำอีกดังนั้นในการเรียกใช้ครั้งต่อไปคำสั่งไม่ควรเปลี่ยนแปลงอะไร นี่คือโครงสร้างไดเรกทอรี: % tree /tmp/test_symlink /tmp/test_symlink ├── foo └── repo └── resources └── snippets ├── php.snippets ├── sh.snippets ├── snippets.snippets ├── sql.snippets └── vim.snippets ผมต้องการสร้าง symlink ในที่เรียกว่าตัวอย่างที่ชี้ไปยังไดเรกทอรีfoo/ ดังนั้นฉันวิ่ง:/tmp/test_symlink/repo/resources/snippets % ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets '/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets' ซึ่งให้ผลลัพธ์ที่ต้องการ % tree /tmp/test_symlink /tmp/test_symlink ├── foo │ └── snippets -> …

5
ค้นหาไฟล์ที่ซ้ำกันและแทนที่ด้วย symlink
ฉันพยายามหาวิธีการตรวจสอบภายในไดเรกทอรีที่กำหนดสำหรับไฟล์ที่ซ้ำกัน (แม้จะมีชื่อที่แตกต่างกัน) และแทนที่ด้วย symlink ชี้ไปที่เกิดขึ้นครั้งแรก ฉันได้ลองแล้วfdupesแต่มันจะแสดงรายการที่ซ้ำกันเหล่านั้น นั่นคือบริบท: ฉันกำหนดธีมไอคอนตามความชอบของฉันและฉันพบว่ามีไอคอนมากมายแม้ว่าพวกเขาจะมีชื่อและสถานที่แตกต่างกันภายในโฟลเดอร์หลักของพวกเขาและใช้เพื่อจุดประสงค์ที่แตกต่างกัน ภาพ. เนื่องจากการใช้การปรับเปลี่ยนแบบเดียวกันยี่สิบหรือสามสิบครั้งนั้นซ้ำซ้อนเมื่อจำเป็นเพียงภาพเดียวฉันต้องการเก็บเพียงภาพเดียวและเชื่อมโยงภาพอื่น ๆ ทั้งหมด ตัวอย่างเช่นถ้าฉันทำงานfdupes -r ./ในไดเรกทอรีtestdirมันอาจกลับมาให้ฉันผลลัพธ์ต่อไปนี้: ./file1.png ./file2.png ./subdir1/anotherfile.png ./subdir1/subdir2/yetanotherfile.png เมื่อได้รับเอาต์พุตนี้ฉันต้องการเก็บเฉพาะไฟล์file1.pngลบส่วนที่เหลือทั้งหมดและแทนที่ด้วย symlink ที่ชี้ไปที่มันในขณะที่ยังคงชื่อไฟล์เดิมทั้งหมด ดังนั้นfile2.pngจะรักษาชื่อไว้ แต่จะกลายเป็นลิงก์ไปสู่file1.pngแทนที่จะเป็นข้อมูลซ้ำ ลิงก์เหล่านั้นไม่ควรชี้ไปที่พา ธ สัมบูรณ์ แต่ควรสัมพันธ์กับtestdirไดเร็กทอรีพาเรนต์ คือyetanotherfile.pngจะชี้ไปที่../../file1.pngไม่/home/testuser/.icons/testdir/file1.png ฉันสนใจทั้งในโซลูชันที่เกี่ยวข้องกับ GUI และ CLI ไม่จำเป็นต้องใช้fdupesฉันได้อ้างถึงเพราะเป็นเครื่องมือที่ฉันรู้ แต่ฉันเปิดรับโซลูชันที่ใช้เครื่องมืออื่นเช่นกัน ฉันค่อนข้างแน่ใจว่าสคริปต์ทุบตีในการจัดการทั้งหมดนี้ไม่ควรยากที่จะสร้าง แต่ฉันไม่เชี่ยวชาญพอที่จะหาวิธีเขียนด้วยตนเอง

2
sshfs แบ่ง symlink จากเซิร์ฟเวอร์ SFTP
ไม่มีใครรู้วิธีการติดตั้งเส้นทาง SFTP ระยะไกลผ่าน SSHFS เพื่อให้คุณสามารถทำงานกับ symlink ได้หรือไม่ เมื่อฉันทำสิ่งนี้ symlink ทั้งหมดที่ฉันสร้างชี้ไปที่ไฟล์ที่ผิด (ไม่ใช่สิ่งที่ฉันเชื่อมโยงไป) symlink ทั้งหมดที่ฉันสนใจนั้นมีความเกี่ยวข้อง เหมาะ ใช้ sshfs กับตัวเลือกการเมาท์เริ่มต้นฉันไม่สามารถสร้าง symlink ไปยังไฟล์อื่นในไดเรกทอรีปัจจุบัน: $ cd /mnt/path/to/sshfs/mount $ ln -s ./test ./test2 $ ls test2 lrwxrwxrwx 1 root webusers 11 Jul 3 09:11 test2 -> /test ซึ่งไม่ถูกต้องอย่างเห็นได้ชัดเช่นการเชื่อมโยงเป้าหมายที่อยู่ในไดเรกทอรีปัจจุบัน ( ./test) แต่ที่นี่คุณสามารถดู sshfs ที่สร้างเชื่อมโยงไปยัง/testที่ไม่ถูกต้อง - การเชื่อมโยงเป้าหมายคือไม่ได้/mnt/path/to/sshfs/mount/test/test โดยการเพิ่มtransform_symlinksตัวเลือกเมื่อฉันเมาท์ระบบไฟล์ …
16 mount  symlink  sftp  sshfs 

2
วิธีตรวจสอบเป้าหมายของลิงก์สัญลักษณ์ที่มีสัญลักษณ์ไปยังเส้นทางที่ต้องการ
ภายในสคริปต์ทุบตีฉันรู้ว่าฉันสามารถตรวจสอบว่าไฟล์เป็นลิงค์สัญลักษณ์ที่มีไวยากรณ์ต่อไปนี้หรือไม่ if [ -L $path ] ไม่มีใครรู้ว่าฉันจะทดสอบว่าเส้นทางนั้นเชื่อมโยงกับเส้นทางเฉพาะหรือไม่ เช่นผมต้องการที่จะตรวจสอบว่าเป้าหมายของการเป็น$path/some/where
16 bash  shell  symlink 

2
ความแตกต่างที่แปลกประหลาดระหว่าง pwd และ / bin / pwd
ฉันเพิ่ม symlink ln -s . aaไปยังไดเรกทอรีปัจจุบันด้วย ถ้าผมดำเนินการcd aaและหลังจากที่ผมดำเนินการตอบสนองคือpwd/home/sim/aa แต่ถ้าฉันรัน/bin/pwdมันจะพิมพ์/home/sim(ไดเรกทอรีปัจจุบันไม่เปลี่ยนแปลง) ความแตกต่างนี้มาจากไหน?
15 shell  symlink  pwd 

4
ลิงก์สัญลักษณ์ไปยังไดเร็กทอรีและพา ธ สัมพัทธ์
ฉันได้สร้าง symlink ด้วยเส้นทางที่แน่นอนไปยังไดเรกทอรี (กะพริบ) และมีตัวอย่างดังต่อไปนี้ต้นไม้: $ ls -l /tmp/A total 0 lrwxrwxrwx 1 root root 6 Apr 3 12:27 Blink -> /tmp/B -rw-r--r-- 1 root root 0 Apr 3 12:27 foo $ ls -l /tmp/B total 0 -rw-r--r-- 1 root root 0 Apr 3 12:27 bar จากนั้นฉันไปที่ / tmp / …

2
จะแทนที่ลิงก์สัญลักษณ์ด้วยสำเนาของไฟล์ที่ลิงก์ไปยังได้อย่างไร
มี symlink (ระบบเดียวที่ไม่ต้องประมวลผลระบบแบตช์) สิ่งที่บรรทัดคำสั่งที่จะใช้เพื่อแทนที่ด้วยสำเนาของไฟล์ที่ลิงก์ไปยัง?

1
dot dot (.. ) คืออะไร? ทำไมพฤติกรรมของมันจึงแตกต่างจาก symlink?
ฉันพยายามที่จะเข้าใจธรรมชาติของ..(สองจุด) ดูเหมือนว่าจะชี้ไปยังเป้าหมายที่แตกต่างกันขึ้นอยู่กับว่าคุณเข้าถึงมันอย่างไร ตัวอย่าง:- /outer/ middle/ inner/ inner --> ./middle/inner/ ตอนนี้/outer/middle/inner/..นำไปสู่การ/outer/middle/แต่ถ้าฉันเข้าถึงได้ผ่านการเชื่อมโยงสัญลักษณ์นำไปสู่/outer/inner/.. /outer/ดูเหมือนว่ามีสองที่แตกต่างกัน..ที่นี่ อะไร..กันแน่ ลิงก์สัญลักษณ์? ลิงค์ยาก? หรือมันสร้างแบบไดนามิกขึ้นอยู่กับเส้นทางเมื่อเข้าถึงไดเรกทอรีหรือไม่ หรือบางทีความเข้าใจของฉันเกี่ยวกับลิงก์สัญลักษณ์นั้นไม่ถูกต้อง แก้ไข: การสังเกตอื่น ๆ ที่เกี่ยวข้อง /outer/ middle/ file inner/ f --> ./../file inner --> ./middle/inner/ ตอนนี้ถ้าฉันพยายามเข้าถึงไฟล์ผ่าน/outer/inner/fมันใช้งานได้ แต่มันไม่ควรเนื่องจาก/outer/inner/../fileไม่ได้ชี้ไปที่ไฟล์ /outer/middle/inner/..ไฟล์ที่อยู่ใน สิ่งนี้ดูเหมือนจะขัดแย้งกับพฤติกรรมข้างต้น!

3
วิธีค้นหาลิงก์สัญลักษณ์ทั้งหมดที่ชี้ไปยังไฟล์ / ไดเร็กทอรีใด ๆ ภายในไดเร็กทอรีที่กำหนด
เกี่ยวกับคำถามนี้หรือบนนี้ (ตัวอย่าง) คุณจะได้รับการแก้ปัญหาเกี่ยวกับวิธีการที่จะมองหา symlinks ชี้ไปที่ไดเรกทอรีที่กำหนด (ขอเรียกว่า/dir1) ในขณะที่ฉันสนใจที่จะเชื่อมโยงสัญลักษณ์อาจจะชี้ไปที่ไฟล์ / /dir1โฟลเดอร์ภายในใด ฉันต้องการลบไดเรกทอรีดังกล่าว แต่ผมไม่แน่ใจว่าผมปลอดภัยที่จะทำเช่นนั้นในไดเรกทอรีอื่น ๆ (ขอเรียกว่า/dir2) ผมอาจจะมี symlinks /dir1ชี้ไปที่ชิ้นส่วนภายในของ นอกจากนี้ฉันอาจสร้าง symlink เหล่านี้โดยใช้เส้นทางที่สมบูรณ์หรือญาติ ความช่วยเหลือเท่านั้นฉันว่าฉันรู้ว่า symlinks /dir2ที่ฉันต้องการที่จะตรวจสอบอยู่ในการติดตั้งระบบแฟ้มบน
15 symlink 

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