क्या कमांड लाइन / शेल मदद पाठ के लिए "मानक" प्रारूप है?


239

यदि नहीं, तो क्या कोई वास्तविक मानक है? मूल रूप से मैं एक कमांड लाइन मदद पाठ लिख रहा हूँ जैसे:

usage: app_name [options] required_input required_input2
  options:
    -a, --argument     Does something
    -b required     Does something with "required"
    -c, --command required     Something else
    -d [optlistitem1 optlistitem 2 ... ]     Something with list

मैंने मूल रूप से विभिन्न उपकरणों के सहायता पाठ को पढ़ने से ही बनाया है, लेकिन क्या दिशा-निर्देशों की सूची है या कुछ और? उदाहरण के लिए, क्या मैं चौकोर कोष्ठक या कोष्ठक का उपयोग करता हूँ? रिक्ति का उपयोग कैसे करें? क्या होगा अगर तर्क एक सूची है? धन्यवाद!


8
मुझे लगता है कि जीएनयू के कुछ संकेत हैं। मैं देखूंगा कि अधिकांश GNU उपयोगिताओं क्या कर रहे हैं।
बेसाइल स्टारीनेवविच

1
@DanielPryden मुझे लगता है कि इस सवाल का जवाब थोड़ा भ्रामक है। यह लिंक देता है जो बताता है कि स्विच को स्वीकार किया जाना चाहिए और यह नहीं कि आउटपुट कैसे --helpदिखना चाहिए। लेकिन दोनों ही सवाल एक मर्ज के लिए एक अच्छे उम्मीदवार हैं।
शाम

@pmr: मैं सहमत हूं - शायद एक मॉड हमारे लिए सवालों को मर्ज कर सकता है।
डैनियल प्राइडेन

2
मैं देखूंगा कि अधिकांश GNU उपयोगिताओं क्या कर रहे हैं, और इसे दूसरे तरीके से करते हैं।
याकोव गल्का

जवाबों:


160

आमतौर पर, आपकी मदद आउटपुट में शामिल होना चाहिए:

  • एप्लिकेशन क्या करता है का विवरण
  • उपयोग सिंटैक्स, जो:
    • [options]यह इंगित करने के लिए उपयोग करता है कि विकल्प कहाँ जाते हैं
    • arg_name एक आवश्यक, एकवचन के लिए
    • [arg_name] एक वैकल्पिक, एकवचन वर्ग के लिए
    • arg_name... आवश्यक आर्ग के लिए जिसमें कई हो सकते हैं (यह दुर्लभ है)
    • [arg_name...] एक आर्ग जिसके लिए किसी भी संख्या में आपूर्ति की जा सकती है
    • ध्यान दें कि arg_nameकम, साँप के मामले में एक वर्णनात्मक, संक्षिप्त नाम होना चाहिए
  • विकल्पों में से एक अच्छी तरह से स्वरूपित सूची, प्रत्येक:
    • संक्षिप्त विवरण होना
    • डिफ़ॉल्ट मान दिखा रहा है, अगर वहाँ एक है
    • यदि लागू होता है, तो संभव मान दिखा रहा है
    • ध्यान दें कि यदि कोई विकल्प संक्षिप्त रूप (जैसे -l) या एक लंबा फॉर्म (जैसे --list) स्वीकार कर सकता है , तो उन्हें एक ही पंक्ति में शामिल करें, क्योंकि उनका विवरण समान होगा
  • कॉन्फिग फाइल्स या एनवायरमेंट वैरिएबल के स्थान का संक्षिप्त संकेतक जो कि कमांड लाइन आर्ग्युमेंट्स का स्रोत हो सकता है, जैसे GREP_OPTS
  • यदि कोई पुरुष पृष्ठ है, तो इस तरह से इंगित करें, अन्यथा, एक संक्षिप्त संकेतक जहां अधिक विस्तृत मदद मिल सकती है

आगे ध्यान दें कि यह दोनों को स्वीकार करने के लिए -hऔर --helpइस संदेश को ट्रिगर करने के लिए अच्छा रूप है और आपको यह संदेश दिखाना चाहिए अगर उपयोगकर्ता कमांड-लाइन सिंटैक्स को गड़बड़ करता है, जैसे कि एक आवश्यक तर्क छोड़ देता है।


3
क्या होगा यदि मेरे पास एक ही आवश्यक arg के दो रूप हैं? : उदाहरण के लिए कह रही है की अधिक मानक तरीका usage: move (+|-)pixelsयानी जब से एक + या - है अनिवार्य ? (मुझे पता है कि मेरे पास 2 उपयोग लाइनें हो सकती हैं लेकिन मुझे प्रत्येक नए तर्क के साथ उन्हें दोगुना करने का विचार पसंद है।) क्या आप एक मानक उपकरण से एक उदाहरण के बारे में सोच सकते हैं?
एलोइस महदाल

4
@AloisMahdal मैं आमतौर पर देखने {a|b|c|...}SysV Init / नवोदय सेवा स्क्रिप्ट के लिए मदद वर्गों, जो एक विलक्षण तर्क यह है कि में से एक है की आवश्यकता होती है में a, b, c, आदि उदाहरण के लिए, service sddmबिना अपने सिस्टम पर एक बहस बाहर प्रिंट Usage: /etc/init.d/sddm {start|stop|status|restart|try-restart|force-reload}। इसलिए ज्यादातर लोग शायद समझेंगे usage: move {+|-}pixels}, खासकर अगर एक उदाहरण दिया जाए:example: move +5
ब्रैडेन बेस्ट

@ जॉर्ज बोकेरन वे स्थिति से बाहर नहीं होना चाहिए 0 क्या उन्हें होना चाहिए? मेरा मानना ​​है कि स्टेटस 2 से बाहर निकलना अमान्य शेल कमांड के लिए मानक है।
inavda

91

डॉकटॉप पर एक नज़र डालें । यह कमांड लाइन तर्कों को दस्तावेजीकरण (और स्वचालित रूप से पार्स करने) के लिए एक औपचारिक मानक है।

उदाहरण के लिए...

Usage:
  my_program command --option <argument>
  my_program [<optional-argument>]
  my_program --another-option=<with-argument>
  my_program (--either-that-option | <or-this-argument>)
  my_program <repeating-argument> <repeating-argument>...

46

मुझे लगता है कि कमांड लाइन उपयोग के लिए कोई मानक वाक्यविन्यास नहीं है, लेकिन अधिकांश इस सम्मेलन का उपयोग करते हैं:

Microsoft कमांड-लाइन सिंटैक्स , IBM में समान कमांड-लाइन सिंटैक्स है


  • Text without brackets or braces

    आइटम आपको दिखाए गए अनुसार टाइप करने होंगे

  • <Text inside angle brackets>

    प्लेसहोल्डर जिसके लिए आपको एक मूल्य प्रदान करना चाहिए

  • [Text inside square brackets]

    वैकल्पिक चीज़ें

  • {Text inside braces}

    आवश्यक वस्तुओं का सेट; एक चुनो

  • सीधी खड़ी रेखा {a|b}

    पारस्परिक रूप से अनन्य वस्तुओं के लिए विभाजक; एक चुनो

  • अंडाकार <file> …

    जिन वस्तुओं को दोहराया जा सकता है


16

हम लिनक्स चला रहे हैं, जो ज्यादातर POSIX- कंप्लेंट OS है। POSIX मानक यह होना चाहिए: उपयोगिता तर्क सिंटैक्स

  • एक विकल्प एक हाइफ़न है जिसके बाद एकल अल्फ़ान्यूमेरिक वर्ण होता है, जैसे -o:।
  • एक विकल्प के लिए एक तर्क की आवश्यकता हो सकती है (जो विकल्प के तुरंत बाद प्रकट होना चाहिए); उदाहरण के लिए, -o argumentया -oargument
  • विकल्प जिनके लिए तर्कों की आवश्यकता नहीं होती है उन्हें हाइफ़न के बाद समूहीकृत किया जा सकता है, इसलिए, उदाहरण के लिए, -lstइसके बराबर है -t -l -s
  • विकल्प किसी भी क्रम में दिखाई दे सकते हैं; इस प्रकार -lstके बराबर है -tls
  • विकल्प कई बार दिखाई दे सकते हैं।
  • अन्य गैर-दलील तर्क से पहले विकल्प: -lstगैर-दत्तक ग्रहण।
  • --तर्क विकल्प समाप्त हो जाता है।
  • -विकल्प आम तौर पर मानक इनपुट धाराओं में से एक का प्रतिनिधित्व करने के लिए किया जाता है।

2
यह सामान्य है कि GNU / Linux में उपयोग बिल्कुल इस मानक का पालन नहीं करता है। भागो जैसे man aptitudeकि यह (अन्य चीजों के बीच) आउटपुट aptitude [<options>...] {add-user-tag | remove-user-tag} <tag> <packages>...:। इसमें वैकल्पिक अनिवार्य आदेशों को बाँधने के लिए {और} शामिल हैं। मुझे लगता है कि (और) का उपयोग उसी तरह के लिए किया जा सकता है जैसे कि वे डॉकटॉप में उपयोग किए जाते हैं
जर्नो

यदि उपलब्ध लिंक नीचे चला जाता है तो यह उत्तर बहुत कम सहायक होगा। हो सकता है कि आप लिंक किए गए दस्तावेज़ के महत्वपूर्ण भागों को उत्तर में ही प्रस्तुत कर सकें?
डोमसन

11

Microsoft का अपना कमांड लाइन मानक विनिर्देश है :

यह दस्तावेज़ कमांड लाइन उपयोगिताओं के डेवलपर्स पर केंद्रित है। सामूहिक रूप से, हमारा लक्ष्य एक सुसंगत, रचना योग्य कमांड लाइन उपयोगकर्ता अनुभव प्रस्तुत करना है। यह मानते हुए कि उपयोगकर्ता अवधारणाओं (सिंटैक्स, नामकरण, व्यवहार आदि) के एक कोर सेट को सीखने की अनुमति देता है और फिर आदेशों के एक बड़े समूह के साथ काम करने में उस ज्ञान का अनुवाद करने में सक्षम होता है। उन कमांड को आउटपुट टेक्स्ट की पार्सिंग धाराओं के बोझ के बिना आसान रचना की अनुमति देने के लिए मानकीकृत प्रारूप में डेटा के मानकीकृत धाराओं को आउटपुट करने में सक्षम होना चाहिए। यह दस्तावेज़ शेल के किसी विशिष्ट कार्यान्वयन, उपयोगिताओं या कमांड निर्माण प्रौद्योगिकियों के सेट से स्वतंत्र होना लिखा है; हालाँकि, परिशिष्ट J - Microsoft कमांड लाइन मानक को लागू करने के लिए Windows Powershell का उपयोग करके दिखाता है कि Windows PowerShell का उपयोग करने से इन दिशानिर्देशों में से कई मुफ्त में लागू हो जाएंगे।


9
Microsoft के पास अधिकांश उपयोगिताओं के लिए भयानक कमांड लाइन की मदद है, सब कुछ इतना भयानक है कि उन्होंने कारपेट के नीचे "नियमित" कमांड लाइन को छिपाने के लिए पॉवर्सशेल बनाया।
कैमिलो मार्टिन

25
मुझे नहीं लगता कि उत्तर को केवल इसलिए अस्वीकृत किया जाना चाहिए क्योंकि इसमें Microsoft के मानक का संदर्भ है। "सब कुछ बहुत भयानक है" एक व्यक्तिपरक राय है। उसी तरीके से यह कहा जा सकता है कि UNIX की कमांड लाइन भयानक और बदसूरत है, लेकिन आइए ऐसी रायों को दूर रखें और पेशेवर बनें।
दीमा

2
सहमत, यही कारण है कि इस जवाब को कम नहीं किया जाना चाहिए। यदि डाउनवोट किया गया है, तो यह होना चाहिए क्योंकि क) दस्तावेज़ का वह भाग जिसे उद्धृत किया गया है, वह प्रश्न का उत्तर हाथ में नहीं देता है, और ख) से जुड़ा दस्तावेज़ प्रासंगिक नहीं लगता है। प्रश्न पूछते हैं कि क्या कमांड उपयोग के सारांश को संप्रेषित करने के लिए प्रयुक्त वाक्यविन्यास पर भारी जोर देने के साथ "मदद पाठ" के मानक हैं। दस्तावेज़ इस तरह के एक वाक्य रचना बल्कि कैसे PowerShell पारिस्थितिकी तंत्र में सामान्य रूप में अच्छा कमांड लाइन एप्लिकेशन बनाने के लिए (जैसे का समर्थन करना चाहिए proffer नहीं करता -?, -Help, -Version, आदि)। आईएमओ स्टेली विंग का जवाब निशान के करीब है।
मार्क जी।

9

GNU कोडिंग स्टैंडर्ड इस तरह की चीजों के लिए एक अच्छा संदर्भ है। इस खंड के उत्पादन से संबंधित है --help। इस मामले में यह बहुत विशिष्ट नहीं है। आप शायद छोटे और लंबे विकल्पों और एक संक्षिप्त विवरण दिखाने वाली तालिका को प्रिंट करने में गलत नहीं हो सकते। पठनीयता के लिए सभी तर्कों के बीच रिक्ति प्राप्त करने का प्रयास करें। आप संभवतः अधिक विस्तृत विवरण प्रदान करने के लिए अपने उपकरण के लिए एक manपृष्ठ (और संभवतः एक infoमैनुअल) प्रदान करना चाहते हैं ।


0

हां, आप सही रास्ते पर हैं।

हां, वर्गाकार कोष्ठक वैकल्पिक वस्तुओं के लिए सामान्य संकेतक हैं।

आमतौर पर, जैसा कि आपने स्केच किया है, शीर्ष पर एक कमांडलाइन सारांश है, विवरण के बाद, आदर्श रूप से प्रत्येक विकल्प के लिए नमूने के साथ। (आपका उदाहरण प्रत्येक विकल्प वर्णन के बीच की रेखाओं को दिखाता है, लेकिन मुझे लगता है कि यह एक संपादन मुद्दा है, और यह कि आपका वास्तविक प्रोग्राम इंडेंट ऑप्शन लिस्टिंग को बीच में कोई खाली लाइनों के साथ आउटपुट नहीं करता है। यह किसी भी मामले में अनुसरण करने का मानक होगा।)

एक नया चलन, (शायद इसमें एक POSIX विनिर्देश है जो इसे संबोधित करता है?), प्रलेखन के लिए मैन पेज सिस्टम का उन्मूलन है, और program --helpआउटपुट के हिस्से के रूप में सभी जानकारी जो एक मेन्यू में होगी । इस अतिरिक्त में लंबे विवरण, अवधारणाओं की व्याख्या, उपयोग के नमूने, ज्ञात सीमाएं और कीड़े, बग की रिपोर्ट कैसे करें, और संभवतः संबंधित आदेशों के लिए एक 'देखें' अनुभाग भी शामिल होगा।

आशा है कि ये आपकी मदद करेगा।


4
नहीं नहीं नहीं। कमांड में एक मैनपेज होना चाहिए जिसमें पूर्ण विस्तृत संदर्भ का उपयोग शामिल हो, और -h|--helpकेवल एक संक्षिप्त संदर्भ होना चाहिए। आप HTML या जानकारी पृष्ठों में अधिक व्यापक प्रलेखन (ट्यूटोरियल, आदि ...) भी शामिल कर सकते हैं। लेकिन मैनपेज तो होना ही चाहिए!
नवजलज

मैं आपसे सहमत हूं, @ninjalj, लेकिन जैसा कि मैंने कहा, "एक नया चलन", और इससे मेरा मतलब है कि मैं जिन दो प्रणालियों का उपयोग करता हूं, UWin और MINGW दोनों एम्बेडेड दस्तावेज के साथ चले गए हैं। मुझे लगता है कि एम्बेडेड डॉक में ऐसी जगहें हैं, खासकर छोटे उपयोगकर्ता-स्तर की स्क्रिप्ट के लिए, जैसे यह उपयोगकर्ता प्रस्तावित कर रहा है। क्या उसे nroff और .info सीखना चाहिए? लेकिन हमें ईमानदार रखने के लिए अच्छा है, आपकी टिप्पणियों के लिए धन्यवाद और सभी को शुभकामनाएं।
शेल्टर

व्यक्तिगत रूप से, जब मैं someCommand --helpअपने शेल में टाइप करता हूं, तो मुझे जो भी तर्क दिए जाते हैं, उनमें एक छोटे से रिमाइंडर की जरूरत होती है, न कि टेक्स्ट का एक विशाल स्वाथ, जो स्क्रीन को भरता है, इसके लिए मुझे lessसिर्फ इसे देखने के लिए पाइप की आवश्यकता होती है। मैनपेज ऐसा होना चाहिए जहां आप लंबे विस्तृत विवरण रखें, न कि सहायता पाठ।
AJMansfield

अपने सम्मेलन में docopt के निर्माता के अनुसार उन्होंने उल्लेख किया है कि POSIX के पास इसके लिए एक आदर्श है।
v.oddou

0

मैं एक उदाहरण के रूप में टार जैसी आधिकारिक परियोजनाओं का पालन करूंगा। मेरी राय में msg। संभव के रूप में सरल और वर्णनात्मक होने की जरूरत है। उपयोग के उदाहरण भी अच्छे हैं। "मानक सहायता" की कोई वास्तविक आवश्यकता नहीं है।


के बारे में tar... अगर कोई टार की तरह सब कुछ भगवान-उपयोगिता बनाने जा रहा है, तो कृपया छोटे स्विच को यादगार बनाएं, और इसमें "उदाहरण उपयोग" अनुभाग शामिल करें --help। टार के निर्देशों को देखने का 90% समय यह एक सरल निकालने के लिए है tar.gz
कैमिलो मार्टिन

' ' मानक सहायता '' की कोई वास्तविक आवश्यकता नहीं है। क्या हमारे द्वारा उपयोग की जाने वाली अधिकांश चीजों के लिए कोई "वास्तविक आवश्यकता" है? या वे हमारे जीवन को बहुत आसान बनाने के लिए बस वहां हैं? विकल्पों का प्रतिनिधित्व करने का एक सहमति-युक्त तरीका न केवल पाठकों के लिए उपयोगी है, बल्कि यह भी उपयोगी होगा जैसे कि लोग GUIs का निर्माण कर सकते हैं जो मनमाने ढंग से कमांड-लाइन उपयोगिताओं को नियंत्रित कर सकते हैं और उनके विकल्प सेट करने के लिए नियंत्रण प्रदान करना चाहते हैं। वहाँ शायद बेहतर उपयोग है कि मैं अभी तक विचार नहीं किया है।
अंडरस्कोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.