यूनिक्स प्रणाली की प्रत्येक निर्देशिका (और शायद हर दूसरी प्रणाली भी) में कम से कम दो निर्देशिका प्रविष्टियाँ होती हैं। ये .
(वर्तमान निर्देशिका) और ..
(मूल निर्देशिका) हैं। रूट डायरेक्टरी के मामले में, ये एक ही स्थान की ओर इशारा करते हैं, लेकिन किसी अन्य निर्देशिका के साथ, ये अलग हैं। आप खुद के लिए यह देखना का उपयोग कर सकते हैं stat
, pwd
और cd
(लिनक्स पर) कमांड:
$ cd /
$ stat . .. bin sbin | grep Inode
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 548865 Links: 2
Device: 802h/2050d Inode: 2670593 Links: 2
$ pwd
/
$ cd ..
$ pwd
/
$
ध्यान दें कि bin
और sbin
प्रत्येक के पास दो लिंक हैं। एक रूट डायरेक्टरी में डायरेक्टरी एंट्री है, और दूसरा .
उस डायरेक्टरी के अंदर की एंट्री है।
का उपयोग ls
करने के लिए एक पाइप के साथ wc -l
ls 'उत्पादन में लाइनों की संख्या की गणना के लिए एक सरल चाल है। धारणा यह है कि प्रत्येक फ़ाइल या निर्देशिका आउटपुट में ठीक एक लाइन पर कब्जा कर लेगी। GNU ls होगा, जब आउटपुट एक गैर-टर्मिनल है, तो यह स्वचालित रूप से करें; दूसरों को -1
स्पष्ट रूप से व्यवहार को चालू करने के विकल्प की आवश्यकता हो सकती है । wc -l
बस मायने रखता है और -l
इसके इनपुट में लाइनों ( ) की संख्या को आउटपुट करता है ।
उस दृष्टिकोण के साथ समस्या यह है कि लिनक्स में और लिनक्स पर फ़ाइल सिस्टम पर परंपरागत रूप से उपयोग की जाने वाली फ़ाइल और निर्देशिका नाम (वे वास्तव में एक हैं और इस संबंध में एक ही हैं) को नईलाइन वर्णों को शामिल करने की अनुमति है । उन की उपस्थिति में, या तो विधि अलग हो जाती है - उन प्रविष्टियों को दो या अधिक प्रविष्टियों के रूप में गिना जाएगा जब वास्तव में वे एक होती हैं।
जब तक आप GNU ls का उपयोग कर रहे हैं, तब तक नई निर्देशिका वाले नामों के साथ कोई निर्देशिका प्रविष्टियाँ नहीं हैं, और ls
(उदाहरण के लिए ls -a
) के लिए कोई विषम उपनाम नहीं है , दोनों वर्तमान (या निर्दिष्ट) निर्देशिका में फ़ाइलों और निर्देशिकाओं की गिनती का उत्पादन करेंगे। ज्यादातर लोगों के लिए, यह काफी अच्छा है, लेकिन यह सामान्य मामले में मान्य नहीं है ।
यदि आपको निर्देशिका प्रविष्टि नामों में असामान्य वर्णों (मुख्य रूप से नईलाइन्स) को ठीक से संभालने की आवश्यकता है, तो मैं -b
उनसे बचने के लिए ls के विकल्प का उपयोग करने का सुझाव देता हूं। ls -1bA
प्रत्येक निर्देशिका प्रविष्टि नाम को अपनी लाइन पर प्रिंट करेगा, असामान्य वर्णों से बच जाएगा (इसलिए प्रत्येक निर्देशिका प्रविष्टि को एक के रूप में देखा जाएगा), जिसमें कोई भी डॉटफ़ाइल्स और -वाणिज्यिक शामिल हैं। wc -l
एक संपूर्ण कमांड लाइन के लिए टैक करें ls -1bA | wc -l
जो वर्तमान निर्देशिका में फ़ाइलों और निर्देशिकाओं की संख्या की रिपोर्ट करेगा (लेकिन अनदेखा करें .
और ..
; यह बीच का अंतर है -a
और -A
), लेकिन किसी भी उपनिर्देशिका में न उतरें। अगर आप नहीं चाहते कि कोई भी डॉटफ़ाइल्स कुल की ओर गिना जाए, तो बस -A
पैरामीटर को छोड़ दें ls
।