> 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
นี้จะมีการ
> 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
นี้จะมีการ
คำตอบ:
มันไม่ใช่ข้อผิดพลาด กรณีการใช้งานใช้สำหรับเมื่อคุณต้องการเชื่อมโยงไฟล์ไปยังชื่อฐานเดียวกัน แต่ในไดเรกทอรีอื่น:
cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd
เป็นความจริงที่ว่าเมื่อคุณทำเช่นนี้กับชื่อไฟล์ที่อยู่ในไดเรกทอรีเดียวกันมันจะสร้างลิงค์ไปยังตัวเองซึ่งไม่ได้ทำอะไรมากมายเลย!
สิ่งนี้ใช้ได้ผลไม่ว่าคุณจะใช้ symlink หรือฮาร์ดลิงก์
วิธีที่ง่ายที่สุดในการค้นหาหลักสูตรคือการลองและดู เมื่อไม่ได้ระบุอาร์กิวเมนต์ที่ 2 ln
จะสร้างลิงก์ในไดเรกทอรีปัจจุบันที่มีชื่อเหมือนกับของเดิม:
$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon 4 Jul 29 16:09 etc -> /etc
นี่คือคำอธิบายในman ln
:
ในฟอร์มที่ 2 ให้สร้างลิงก์ไปยัง TARGET ในไดเรกทอรีปัจจุบัน
"รูปแบบที่ 2" หมายถึง:
ln [ตัวเลือก] ... เป้าหมาย (แบบฟอร์มที่ 2)
ln -s /path/to/file
ย่อมาln -s /path/to/file .
จาก เช่นเดียวสั้นสำหรับls
ls .