यूनिक्स-शैली प्रणालियों में, डेटा संरचना जो फाइल सिस्टम ऑब्जेक्ट्स का प्रतिनिधित्व करती है (दूसरे शब्दों में, फ़ाइल के बारे में डेटा ), जिसे "इनोड" कहा जाता है।
एक फ़ाइल नाम इस इनोड के लिए एक लिंक है, और इसे "हार्ड लिंक" के रूप में संदर्भित किया जाता है। पहले नाम एक फ़ाइल दी गई है और किसी भी बाद के लिंक के बीच कोई अंतर नहीं है। तो जवाब है, "हाँ": एक कड़ी एक नियमित फ़ाइल है और वास्तव में, एक नियमित फ़ाइल एक कड़ी है।
ls
आदेश कितने हार्ड लिंक वहाँ फाइल करने के लिए कर रहे हैं तुम्हें दिखाता हूँ।
उदाहरण के लिए:
seumasmac@comp:~$ echo Hello > /tmp/hello.txt
seumasmac@comp:~$ ls -l /tmp/hello.txt
-rw-rw-r-- 1 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
यहां हमने एक फाइल बनाई है, जिसका नाम है /tmp/hello.txt
। 1
से उत्पादन में ls -l
इंगित करता है कि वहाँ इस फ़ाइल की 1 हार्ड लिंक। यह हार्ड लिंक फ़ाइल नाम ही है /tmp/hello.txt
।
यदि हम अब इस फाइल का एक और हार्ड लिंक बनाते हैं:
seumasmac@comp:~$ ln /tmp/hello.txt /tmp/helloagain.txt
seumasmac@comp:~$ ls -l /tmp/hello*
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/helloagain.txt
-rw-rw-r-- 2 seumasmac seumasmac 6 Oct 4 13:05 /tmp/hello.txt
अब आप देख सकते हैं कि दोनों फ़ाइलनाम यह दर्शाते हैं कि फ़ाइल में 2 हार्ड लिंक हैं। इनमें से कोई भी "उचित" फ़ाइल नाम नहीं है, वे दोनों समान रूप से मान्य हैं। हम देख सकते हैं कि वे दोनों एक ही इनोड की ओर इशारा करते हैं (इस मामले में, 5374043):
seumasmac@comp:~$ ls -i /tmp/hello*
5374043 /tmp/helloagain.txt 5374043 /tmp/hello.txt
एक आम गलत धारणा है कि यह निर्देशिकाओं के लिए अलग है। मैंने लोगों को यह कहते हुए सुना है कि ls
एक निर्देशिका के लिए दिए गए लिंक की संख्या उप-सीमाओं की संख्या है, जिसमें शामिल है .
और ..
जो गलत है । या, कम से कम, जबकि यह आपको सही संख्या देगा, यह गलत कारणों के लिए सही है!
यदि हम एक निर्देशिका बनाते हैं और ls -ld
हम करते हैं:
seumasmac@comp:~$ mkdir /tmp/testdir
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 2 seumasmac seumasmac 4096 Oct 4 13:20 /tmp/testdir
इससे पता चलता है कि इस निर्देशिका की 2 कड़ी हैं। य़े हैं:
/tmp/testdir
/tmp/testdir/.
ध्यान दें कि /tmp/testdir/..
यह इस निर्देशिका का लिंक नहीं है, यह एक लिंक है /tmp
। और यह आपको बताता है कि "उपनिर्देशिकाओं की संख्या" क्यों काम करती है। जब हम एक नया उपनिर्देशिका बनाते हैं:
seumasmac@comp:~$ mkdir /tmp/testdir/dir2
seumasmac@comp:~$ ls -ld /tmp/testdir
drwxrwxr-x 3 seumasmac seumasmac 4096 Oct 4 13:24 /tmp/testdir
अब आप देख सकते हैं कि /tmp/testdir
निर्देशिका में 3 हार्ड लिंक हैं । य़े हैं:
/tmp/testdir
/tmp/testdir/.
/tmp/testdir/dir2/..
इसलिए हर नई उप-निर्देशिका में लिंक की गिनती एक-एक करके बढ़ जाएगी, क्योंकि ..
इसमें प्रवेश होता है।