आप किसी विशेष खंड के सभी मैन पेजों की सूची कैसे तैयार करते हैं?


25

forkउदाहरण के लिए एक आदमी पृष्ठ , सिस्टम कॉल अनुभाग में है जिसमें नंबर 2 है:

man 2 fork

आप कैसे देखते हैं कि Google का सहारा लिए बिना धारा 2 क्या है?


गूगल के बिना, लेकिन वेब के माध्यम से, करने के लिए जाना man7.org/linux/man-pages/dir_section_2.html : (या मुख्य पृष्ठ पर यहाँ kernel.org/doc/man-pages )
Belacqua

जवाबों:


4

यह आदेश दिए गए अनुभाग में सभी प्रविष्टियों के क्रमबद्ध नामों को सूचीबद्ध करता है:

man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u

यदि आप पथनाम देखना चाहते हैं, तो उपयोग करें:

man -aWS 1 \* | sed 's/\.[^.]*$//' | sort

यह manवाइल्डकार्ड पैटर्न का उपयोग करके सभी आदेशों के लिए एक खंड खोजने के लिए कहता है *(बैकस्लैश-उद्धृत किया गया है ताकि शेल इसकी व्याख्या न करे)। -aसभी मिलानों को पाता है, -Wपृष्ठों को प्रदर्शित करने के बजाय पथनामों को प्रिंट करता है, और -S 1अनुभाग एक को निर्दिष्ट करता है। बदले 1के लिए जो कुछ भी खंड आप खोजना चाहते हैं।

sedआदेश फ़ाइल नाम एक्सटेंशन स्ट्रिप्स; यदि आप पूरा फ़ाइल नाम देखना चाहते हैं तो इसे हटा दें। sortपरिणामों -uको क्रमबद्ध करें ( डुप्लिकेट को हटाता है)।

सुविधाजनक पुन: उपयोग के लिए, यह बैश शेल फ़ंक्शन को परिभाषित करता है:

function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }

उदाहरण के लिए, आप इसे mansect 3खंड तीन में प्रविष्टियों को देखने के लिए आमंत्रित कर सकते हैं।

[MacOS पर परीक्षण किया गया।]


अच्छा धन्यवाद। मुझे कुछ डुप्लिकेट मिलते हैं (उदाहरण के लिए /Applications/Xcode.app में पथ और अनुभाग 7 में "तेजी"), लेकिन uniqपाइपलाइन में कुछ भी ठीक नहीं होता है।
xyz

@xyz: मैंने sort -uडुप्लिकेट को हटाने के लिए सॉर्ट कमांड को अपडेट किया ।
क्रिस पेज

24

एक विशिष्ट अनुभाग से सभी स्थापित मैन पेजों को सूचीबद्ध करने के लिए आप एप्रोपोस का उपयोग कर सकते हैं :

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos

"अनुरूप: -s: अज्ञात विकल्प"
माइकल Mrozek

@MichaelMrozek आप किस सिस्टम का उपयोग कर रहे हैं? यह मेरे लिए काम करता है, उदाहरण के लिए: एप्रोपोस का उत्पादन -s 2 -w '*'
उलरिच डेंगल

धन्यवाद। -S विकल्प मैक ओएस एक्स एप्रोपोस में मौजूद नहीं है, जो कि संभवतः बीएसडी से है।
xyz

@ f100 आह ठीक है, शायद कोशिश करेंman -a -s 2 '*'
उलरिच

यह अधिक पसंद है, लेकिन उन्हें सूचीबद्ध करने के बजाय, यह वास्तव में बदले में प्रत्येक के लिए दर्शक को आमंत्रित कर रहा है। मैंने लिस्टिंग करने के लिए एक फ़ंक्शन हैक किया है जिसे मैंने एक और टिप्पणी में पोस्ट किया है। यह संभव है कि समस्या है, लेकिन यह मेरे लिए काफी है :)
xyz

20

मानदंड को आमतौर पर रखा जाता है /usr/share/man, लेकिन जांच करें $MANPATH, और वर्गों में व्यवस्थित किया जाता है:

 Section 1:
 /usr/share/man/man1/

 Section 2:
 /usr/share/man/man2/

 ...

इसलिए सभी स्थापित खंड 2 मैनपेज़ को सूचीबद्ध करने के लिए, करें:

ls /usr/share/man/man2/

या अधिक पूर्ण:

find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'

यदि आपके $MANPATHनाम में स्थान के साथ निर्देशिकाएं हैं, तो बाद वाले को समस्या होगी ।

अधिकांश वितरण पर आप पैकेज टूल के साथ उपलब्ध मैन पेज भी देख सकते हैं, उदाहरण के लिए डेबियन व्युत्पन्न वितरण पर आप इस apt-fileतरह का उपयोग कर सकते हैं :

apt-file search /man2/

1
धन्यवाद - यह वह शुरुआत थी जिसकी मुझे ज़रूरत थी। मैंने एक शेल फंक्शन बनाया जो उदा lman 2। फ़ंक्शन का शरीर है:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
xyz

1

मैक ओएस एक्स पर, केवल एक चीज जो मुझे काम करने के लिए मिल सकती है man -k . | grep -F '(3)', वह है जो धारा 3 में सब कुछ सूचीबद्ध करती है।


0

मुझे पता है कि यह एक बहुत पुराना सवाल है, हालांकि यहाँ दिए गए जवाब मेरे लिए काम नहीं करते। इसलिए मैं के बाद एक-लाइनर कि पर काम करता है के साथ आया था उबंटू 18.04 और MacOS मोजावे, 10.14.6:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

त्वरित रन डाउन:

  • फार्म थोर उत्तर: $(man --path | tr ':' ' ')मैन पेजों के वर्तमान रास्तों को प्राप्त करने के लिए
  • find <man paths> -type f -path '*man2*' -exec basename {} \; आदमी रास्तों में सभी नियमित फ़ाइलों के फ़ाइल नाम प्राप्त करता है
  • sed फ़ाइल एक्सटेंशन से छुटकारा मिलता है
  • sort वर्णानुक्रम।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.