ไฟล์เป็น inode ที่มีข้อมูลเมตาซึ่งเป็นรายการของตัวชี้ไปยังตำแหน่งที่จะค้นหาข้อมูล
เพื่อให้สามารถเข้าถึงไฟล์ได้คุณจะต้องเชื่อมโยงไปยังไดเรกทอรี (คิดว่าไดเรกทอรีเป็นไดเรกทอรีโทรศัพท์ไม่ใช่โฟลเดอร์) ที่เพิ่มรายการหนึ่งรายการขึ้นไปในหนึ่งในไดเรกทอรีมากกว่าหนึ่งรายการเพื่อเชื่อมโยงชื่อกับไฟล์นั้น
ลิงก์เหล่านั้นทั้งหมดชื่อไฟล์เหล่านั้นชี้ไปที่ไฟล์เดียวกัน ไม่มีอย่างใดอย่างหนึ่งที่เป็นต้นฉบับและอีกอันที่เป็นลิงก์ ทั้งหมดเป็นจุดเชื่อมต่อไปยังไฟล์เดียวกัน (inode เดียวกัน) ในแผนผังไดเรกทอรี เมื่อคุณได้รับขนาดของไฟล์ (การlstat
เรียกของระบบ) คุณกำลังดึงข้อมูล (ข้อมูลเมตาที่อ้างถึงข้างต้น) ที่เก็บไว้ใน inode ไม่สำคัญว่าชื่อไฟล์ใดที่ลิงค์ที่คุณใช้เพื่ออ้างถึงไฟล์นั้น .
โดย symlink ตรงกันข้ามเป็นไฟล์อื่น (inode อื่น) ที่มีเนื้อหาเป็นเส้นทางไปยังไฟล์เป้าหมาย เช่นเดียวกับไฟล์อื่น ๆ symlink เหล่านั้นจะต้องเชื่อมโยงกับไดเรกทอรี (ต้องมีชื่อ) เพื่อให้คุณสามารถเข้าถึงได้ นอกจากนี้คุณยังสามารถมีหลายลิงค์ไปยัง symlink หรือในคำอื่น ๆ symlink สามารถให้หลายชื่อ (ในหนึ่งหรือมากกว่าหนึ่งไดเรกทอรี)
$ touch a
$ ln a b
$ ln -s a c
$ ln c d
$ ls -li [a-d]
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 a
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 b
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 c -> a
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 d -> a
เหนือหมายเลขไฟล์ 10486707 เป็นไฟล์ปกติ สองรายการในไดเรกทอรีปัจจุบัน (หนึ่งรายการที่มีชื่อa
หนึ่งรายการมีb
ลิงก์) เนื่องจากจำนวนลิงก์คือ 2 เราจึงรู้ว่าไม่มีชื่ออื่นของไฟล์นั้นในไดเรกทอรีปัจจุบันหรือไดเรกทอรีอื่น ๆ หมายเลขไฟล์ 10502404 เป็นอีกไฟล์หนึ่งซึ่งเป็นประเภท symlink ที่เชื่อมโยงกับไดเรกทอรีปัจจุบันสองครั้ง เนื้อหา (เป้าหมาย) คือพา ธ สัมพัทธ์ "a"
โปรดทราบว่าหาก 10502404 เชื่อมโยงไปยังไดเรกทอรีอื่นมากกว่าไดเรกทอรีปัจจุบันโดยทั่วไปแล้วมันจะชี้ไปที่ไฟล์อื่นขึ้นอยู่กับวิธีการเข้าถึง
$ mkdir 1 2
$ echo foo > 1/a
$ echo bar > 2/a
$ ln -s a 1/b
$ ln 1/b 2/b
$ ls -lia 1 2
1:
total 92
10608644 drwxr-xr-x 2 stephane stephane 4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10504186 -rw-r--r-- 1 stephane stephane 4 Aug 27 17:24 a
10539259 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:26 b -> a
2:
total 92
10608674 drwxr-xr-x 2 stephane stephane 4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10539044 -rw-r--r-- 1 stephane stephane 4 Aug 27 17:24 a
10539259 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:26 b -> a
$ cat 1/b
foo
$ cat 2/b
bar
ไฟล์ไม่มีชื่อที่เกี่ยวข้องกับพวกเขานอกจากในไดเรกทอรีที่เชื่อมโยงพวกเขา พื้นที่ที่ใช้โดยชื่อของพวกเขาคือรายการในไดเรกทอรีเหล่านั้นมันถูกคิดในการใช้งานขนาด / ดิสก์ของไดเรกทอรี
unlink
คุณจะสังเกตเห็นว่าสายระบบเพื่อลบไฟล์ที่เป็น นั่นคือคุณจะไม่ลบไฟล์คุณจะยกเลิกการเชื่อมโยงไฟล์จากไดเรกทอรีที่อ้างอิงเมื่อยกเลิกการเชื่อมโยงจากไดเรกทอรีสุดท้ายที่มีรายการไปยังไฟล์ที่กำหนดไฟล์นั้นจะถูกทำลาย (ตราบใดที่ไม่มีกระบวนการ เปิด)
lstat
เรียกระบบนั้นที่มีขนาด