एक नए स्थापित सिस्टम पर गिनती के अधिकांश लॉगिन गोले वास्तव में गैर-संवादात्मक हैं:
$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c
5 /bin/bash
23 /bin/false
1 /bin/sh
1 /bin/sync
17 /usr/sbin/nologin
स्पष्ट रूप से /bin/bash
और /bin/sh
पारंपरिक गोले हैं और वे इंटरैक्टिव हैं। लेकिन उस सूची के अन्य सभी आइटम गैर-संवादात्मक हैं। आप सूची पढ़ रहे हैं और नहीं जानते कि उनमें से एक है, तो आप बस अपने मैनुअल पृष्ठ (उदाहरण के लिए के साथ देख सकते हैं man nologin
या man sync
)।
कमांड वास्तव में क्या करती है
कैप्टन मैन के पोस्टिंग इतिहास को देखकर मुझे लगता है कि वे यूनिक्स के साथ काफी अनुभवहीन हैं। तो शायद जवाब में शीर्ष पर कमांड लाइन से संबंधित नहीं होने के बारे में टिप्पणी में सवाल है, न केवल आउटपुट। इसलिए मैं कमांड-लाइन को भी समझाऊंगा, भले ही यह इस प्रश्न के लिए वास्तव में ऑफ-टॉपिक हो।
कमांड एक यूनिक्स पाइपलाइन है । एक पाइपलाइन आदेशों की एक श्रृंखला है - आप इसे बाएं से दाएं पढ़ते हैं - जिसमें पहली कमांड का आउटपुट दूसरे का इनपुट बन जाता है, दूसरे का आउटपुट तीसरे का इनपुट बन जाता है, और इसी तरह, जब तक कि पाइपलाइन का अंत। अंतिम प्रक्रिया का आउटपुट टर्मिनल पर दिखाया गया है (जब तक कि इसे पुनर्निर्देशित नहीं किया गया है)। देखें खोल पाइपलाइनों पर विकिपीडिया प्रविष्टि अधिक जानकारी के लिए।
यदि आपको समझ में नहीं आता है कि पाइपलाइन क्या कर रही है, तो आप इसे सेगमेंट में चला सकते हैं यह देखने के लिए कि क्या हो रहा है। आप उन कमांड के लिए मैनुअल पेज भी पढ़ सकते हैं जिनका उपयोग किया जा रहा है (यहां awk
, sort
और uniq
)। वास्तव में, आपको अब ऐसा करना चाहिए। मैं इंतजार करूँगा।
आइए पाइपलाइन के चरणों को क्रमिक रूप से चलाएं (आप इसे सुरक्षित रूप से अपने यूनिक्स सिस्टम पर कर सकते हैं):
~$ awk -F: '{print $7}' < /etc/passwd | sed -e 's/^/ /'
/bin/bash
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/bin/sync
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/usr/sbin/nologin
[ ... and so on, I've left the rest out ... ]
उपरोक्त आउटपुट /etc/passwd
फ़ाइल से केवल सातवें क्षेत्र की सामग्री है । यह एक फ्लैट-टेक्स्ट-फ़ाइल) डेटाबेस है जो सिस्टम को बताता है कि हर किसी का लॉगिन शेल क्या है। यदि आप इसके बारे में और जानना चाहते /etc/passwd
हैं तो इसे पढ़ें (यह विश्व-पठनीय है) और इसके लिए मैनुअल पेज देखें (man 5 passwd)
।
इसलिए पूरी सूची को पढ़कर आप अंदाजा लगा सकते हैं कि लोकप्रिय वस्तुएं क्या हैं, लेकिन इस प्रश्न के उत्तर के लिए यह एक अच्छा प्रारूप नहीं है, क्योंकि सवाल वास्तव में सामान्य गैर-संवादात्मक गोले के बारे में था। चलो उन्हें गिनते हैं। सबसे सरल तरीका यह है कि पहले आइटम को क्रमबद्ध करें:
~$ awk -F: '{print $7}' < /etc/passwd | sort
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
[ ... and so on, I've left the rest out ... ]
हम कार्यक्रम uniq
का उपयोग हमें केवल अद्वितीय आइटम दिखाने के लिए कर सकते हैं :
~ $ awk -F: '{प्रिंट $ 7}' </ etc / passwd | सॉर्ट | यूनीक | sede -e / s / ^ / '/ bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
लेकिन रुको, यह कोई फायदा नहीं है, प्रत्येक में से कितने थे? आइए पूछते हैं uniq
(मैन पेज पढ़ें!):
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c
5 /bin/bash
23 /bin/false
1 /bin/sh
1 /bin/sync
17 /usr/sbin/nologin
यही कारण है कि हम जवाब के शीर्ष पर, निश्चित रूप से देखा गया है। चलो प्रविष्टियों को क्रम में देखने के लिए इसे फिर से क्रमबद्ध करें:
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort
17 /usr/sbin/nologin
1 /bin/sh
1 /bin/sync
23 /bin/false
5 /bin/bash
रुको, यह सही नहीं हो सकता, 17 23 के बाद 1 और 5 से पहले आता है। समस्या यह है कि वस्तुओं को लेक्सोग्राफिक रूप से क्रमबद्ध किया जा रहा है । चलो sort
उन्हें संख्यात्मक रूप से सॉर्ट करने के लिए कहें , और रिवर्स ऑर्डर में:
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort -n -r
23 /bin/false
17 /usr/sbin/nologin
5 /bin/bash
1 /bin/sync
1 /bin/sh
मुझे लगता है कि मूल उत्तर में सब कुछ समझाता है। यदि आप अभी भी उन आदेशों के विवरण पर अस्पष्ट हैं, तो आप मैनुअल पेज पढ़ सकते हैं। यदि आप अभी भी चल रहे सिद्धांतों पर स्पष्ट नहीं हैं, तो यूनिक्स और लिनक्स की व्याख्या करते हुए एक पुस्तक (ऑनलाइन या कागज पर) पढ़कर शुरू करना बेहतर हो सकता है।
telnet towel.blinkenlights.nl
गैर-संवादात्मक लॉगिन लॉग के लिए ;-)