शेल बिल्ड कमांड और कीवर्ड के लिए `man` काम कैसे करें?


56

manजब मैं किसी विशिष्ट कमांड के बारे में जानकारी प्राप्त करना चाहता हूं तो मैं हर समय कमांड का उपयोग करता हूं। लेकिन यह मेरी बहुत मदद नहीं करता है जब कि विशिष्ट कमांड एक शेल बिलिन है। उदाहरण के लिए:

man cd

रिटर्न:

No manual entry for cd

मेरा प्रश्न है: यह करना संभव है manभी काम सब खोल builtin आदेश (जैसे के लिए cd, alias, history, आदि), और कीवर्ड (जैसे if, while, [[, {, आदि)?


और कैसे echoबनता है एक अंतर्निहित आदेश है, लेकिन एक आदमी पृष्ठ है?
पार्टो

5
@AvatarParto echoएक सिस्टम कमांड (निष्पादन योग्य) भी है /bin। आप इसका उपयोग करके देख सकते हैं type -a echo। ऐसा ही कुछ timeऔर भी होता है।
राडू राईडेनू

क्या आपने info bashअभी तक का पता लगाया ?
bbaassssiiee

आप हमेशा अपने खुद के मैन पेज लिख सकते हैं ।
इलियट फ्रिस्क

जवाबों:


66

helpआदेश जब साथ प्रयोग किया जाता है -mविकल्प छद्म मैनपेज प्रारूप में builtin आदेशों के बारे में जानकारी प्रदर्शित कर सकते हैं। उदाहरण के लिए:

help -m cd | less

cdएक मैनुअल पेज में लगभग एक प्रारूप में कमांड के बारे में जानकारी प्रदर्शित करेगा ।

इस कमांड से शुरू करके आप manअपनी .bashrcफाइल में एक फंक्शन में कमांड को फॉलो कर सकते हैं:

man () {
    case "$(type -t -- "$1")" in
    builtin|keyword)
        help -m "$1" | sensible-pager
        ;;
    *)
        command man "$@"
        ;;
    esac
}

इसके बाद manसभी शेल बिलिन कमांड और कीवर्ड के लिए भी काम करेगा। उदाहरण के लिए:

man :

प्रदर्शित करेगा:

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

बहुत चतुर दृष्टिकोण! +1
फाट्स्कैट

5
यदि बिल्डिंस द्वारा निष्पादित निष्पादन योग्य हैं, तो आप अनुभाग को निर्दिष्ट कर सकते हैं। man timeबनामman 1 time
रोकना मोनिका

1
... ध्यान दें कि यदि आप एक zshउपयोगकर्ता हैं, तो आप बहुत भाग्यशाली नहीं हैं: Bugs.launchpad.net/ubuntu/+source/zsh/+bug/1242108 (कोई भी मैन पेज स्थापित नहीं किया गया)
Rmano

info, help -mहम इन दिनों सिर्फ अच्छे आदमी पृष्ठ क्यों नहीं ले सकते? कोई बात नहीं धन्यवाद!
टोर क्लिंगबर्ग

+1 ... अच्छा! Yr फ़ंक्शन का व्यवहार कुछ हद तक सी / सी ++ में फ़ंक्शन ओवरलोडिंग के माध्यम से होता है ... केवल उत्सुकता man typeसे Ubuntu 14.04.4 में विकल्पों "-a" या "-t" का वर्णन नहीं होता है .... और फिर भी, वे 'वहां हैं !
18

28
man bash-builtins

इसमें बिलिन कमांड के लिए सहायता स्निपेट शामिल हैं, यद्यपि helpसमकक्ष की तुलना में थोड़ा अधिक संघनित प्रारूप में ।


जानकार अच्छा लगा! यह मैनुअल की धारा 7 से है। मैंने अब तक इस मैनुअल पेज के बारे में नहीं सुना। +1, लेकिन मैं इस उत्तर को स्वीकार नहीं कर सकता क्योंकि यह बिल्कुल वैसा नहीं है जैसा मैंने पूछा था।
रादु राईडेनु

MacOS हाई सिएरा पर वह कमान केवल "मैन
बिल्डिंस

13

आप विकास के लिए POSIX प्रणाली का उपयोग करने के बारे में मैनुअल पेज स्थापित कर सकते हैं ,

sudo apt-get install manpages-posix-dev

यह शेल बिल्डरों के लिए मैन पेज प्रदान करेगा।

$ type cd
cd is a shell builtin

अब कोशिश करो,

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...

3
मैं इस जवाब के साथ किसी के आने का इंतजार कर रहा था। लेकिन समस्या यह है कि यह केवल कुछ बिल्डरों के लिए काम करेगा - जो पोसिक्स द्वारा निर्दिष्ट हैं
राडू रियडेनू

3
जब तक POSIX मोड में नहीं चलता, बैश POSIX का सख्ती से पालन नहीं करता है, इसलिए ये मैन पेज व्यापक नहीं हो सकते हैं, और कुछ परिस्थितियों में गलत हो सकते हैं, खासकर जब कुछ विशेषताओं के व्यवहार का वर्णन करते हैं।
क्रिस डाउन

@ RaduRădeanu हाँ आप बिल्कुल सही हैं, यह कुछ बिल्डिंस के लिए काम करेगा।
स्मारक

3

यह समाधान पूरी तरह से अच्छी तरह से काम करता है, लेकिन एक मजाक के रूप में अच्छी तरह से है क्योंकि पहली बात मैंने सोचा था जब मैंने आपका प्रश्न पढ़ा था 'कौन अभी भी सचमुच कमांड लाइन से आदमी का उपयोग करता है? क्या हर कोई Google को केवल वह आदमी पेज नहीं देता है जिसे वे चाहते हैं (ताकि उन्हें असीमित स्क्रॉलिंग जैसी फैंसी चीजें मिलें)? '। तब मुझे एहसास हुआ कि जिन साइटों पर मैं Google हूं, उनमें आमतौर पर दोनों प्रकार की कमांड होती हैं, इसलिए सभी कमांड पर एक समान मैन पेज इंटरफेस प्रदान करने के लिए उनका उपयोग न करें। इसलिए, यह मज़ा पैदा हुआ था।

इसके लिए आवश्यक है कि किसी भी प्रविष्टि के लिए आप पहले से ही कम से कम एक बार न देख लें। इसे इन दो छोटे ऐप की भी जरूरत है जो उबंटू की एक डिफ़ॉल्ट स्थापना में गायब हैं:

 sudo apt-get install tidy html2text

ये बिल्कुल जरूरी नहीं हैं, लेकिन वे इसे थोड़ा अच्छा बनाने में मदद करते हैं। साफ HTML और HTML2text को साफ करेगा कि HTML स्वरूपित पाठ के रूप में प्रारूपित होगी (जो आमतौर पर बहुत मामूली है क्योंकि इनमें से अधिकांश साइटें पहले से ही पाठ स्वरूपित हैं और बस <pre> टैग में लिपटी हैं।

अब आपको बस इतना करना है ~/.profile:

function iman() {
    if [ ! -d "/usr/share/iman" ]; then
        sudo mkdir -m a=rwx /usr/share/iman
    fi
    if [ ! -f "/usr/share/iman/$1.html" ]; then
        curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html"; 
    fi
    if [ -f "/usr/share/iman/$1.html" ]; then
        cat "/usr/share/iman/$1.html";
    else
        echo "Entry not found."
    fi
}

आपके लॉगआउट करने के बाद और फिर आप में यह टाइप करने में सक्षम होना चाहिए:

iman cd

और इसके लिए मैन पेज प्रदर्शित करेगा cd

हमारी नेटवर्क आवश्यकताओं को कम करने के लिए यह डेटा डायरेक्टरी (/ usr / share / iman) का उपयोग करता है (इसलिए यह कनेक्शन के बिना भी आपके द्वारा पहले से मिली प्रविष्टियों के लिए काम करेगा; इस यादृच्छिक लिनक्स मैन पेज साइट पर लोड को कम करने के लिए भी; मुझे सिस्टम प्रविष्टियाँ मिलीं जो हम उसमें भी चाहते हैं)। यदि आप इसका उपयोग नहीं करते हैं तो आप डिस्क स्थान को पुनर्प्राप्त करना चाहते हैं।

उम्मीद है, बाकी बहुत आगे सीधे है।


6
'कौन अभी भी सचमुच कमांड लाइन से आदमी का उपयोग करता है? और बाकी सभी को डेटासेंटर (कोई इंटरनेट नहीं;) पर जाना है
रिनविंड

पॉइंट लिया गया, इससे आपको स्पष्ट होने में मदद नहीं मिलेगी।
क्रोव

6
मुझे लगता है कि विपक्ष, मैं शायद ही कभी Google का उपयोग बैश कमांड देखने के लिए करूं। यह कीबोर्ड छोड़ने के बिना "मैन कमांड" टाइप करने के लिए बहुत तेज़ है।
laurent

alt + tab -> alt + d -> कमांड माउस के बिना और वर्तमान cli कमांड को रद्द किए बिना और स्क्रॉलिंग के साथ और एक लाख अन्य अच्छी चीजों के साथ एक ब्राउज़र आपको देता है। मुझे यकीन है कि आप इसके बारे में कुछ नहीं जानते होंगे क्योंकि आपका
मार्ग

बिल्डिंस के मामले में, आपका imanफ़ंक्शन उसी आउटपुट को वापस लौटा देता है man bash-builtins
रादु राईडेनू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.