अंतःक्रियात्मक रूप से उपयोग किए जाने वाले कार्यों में उपयोग टिप्पणियों को प्रदर्शित करना


11

मेरे पास मेरे परिभाषित कई कार्य हैं .bashrc, जिन्हें टर्मिनल में अंतःक्रियात्मक रूप से उपयोग करने का इरादा है। मैंने आम तौर पर उन्हें एक टिप्पणी के साथ पूर्ववर्ती उपयोग के बारे में बताया:

# Usage: foo [bar]
# Foo's a bar into a baz
foo() {
  ...
}

स्रोत कोड ब्राउज़ करते समय यह ठीक है, लेकिन typeटर्मिनल में चलाने के लिए यह अच्छा है कि फ़ंक्शन क्या करता है उसका त्वरित अनुस्मारक प्राप्त करें। हालाँकि यह (समझ में आता है) टिप्पणी शामिल नहीं है:

$ type foo
foo is a function
foo ()
{
    ...
}

जो मुझे सोच रहा था "क्या यह अच्छा नहीं होगा अगर इस तरह की टिप्पणियां बनी रहें ताकि typeउन्हें प्रदर्शित किया जा सके?" और पायथन के डॉकस्ट्रिंग्स की भावना में मैं इस के साथ आया:

foo() {
  : Usage: foo [bar]
  : "Foo's a bar into a baz"
  ...
}

$ type foo
foo is a function
foo ()
{
    : Usage: foo [bar];
    : "Foo's a bar into a baz";
    ...
}

अब उपयोग typeआउटपुट में सही शामिल है ! बेशक, जैसा कि आप देख सकते हैं कि उद्धृत करना एक ऐसा मुद्दा बन जाता है जो त्रुटि-रहित हो सकता है, लेकिन जब यह काम करता है तो यह एक अच्छा उपयोगकर्ता अनुभव होता है।

तो मेरा सवाल यह है कि क्या यह एक भयानक विचार है? वहाँ बेहतर विकल्प (एक तरह हैं man/ infoअतिरिक्त संदर्भ बैश कार्यों के उपयोगकर्ताओं प्रदान करने के लिए काम करता है के लिए)?

आदर्श रूप से मैं अभी भी उपयोग के निर्देशों को फ़ंक्शन परिभाषा के आस-पास स्थित होना चाहूंगा ताकि स्रोत कोड देखने वाले लोगों को भी लाभ मिल सके, लेकिन अगर ऐसा करने का एक "उचित" तरीका है तो मैं विकल्पों के लिए खुला हूं।

संपादित करें ये सभी काफी सरल सहायक शैली के कार्य हैं और मैं अंतःक्रियात्मक रूप से थोड़ा अतिरिक्त संदर्भ प्राप्त करना चाहता हूं। निश्चित रूप से अधिक जटिल लिपियों के लिए जो झंडे लहराएंगे मैं एक --helpविकल्प जोड़ूंगा, लेकिन इनके लिए हर चीज में मदद के झंडे जोड़ना कुछ हद तक भारी होगा। शायद यह केवल एक लागत है जिसे मुझे स्वीकार करना चाहिए, लेकिन यह :हैक हमारे संपादन को पढ़ने के लिए स्रोत को बहुत कठिन किए बिना यथोचित काम करता है।

जवाबों:


8

मुझे नहीं लगता कि ऐसा करने का सिर्फ एक अच्छा तरीका है।

उपयोगकर्ता के लिए -hया --helpविकल्प के रूप में कई कार्य, स्क्रिप्ट और अन्य निष्पादनयोग्य मदद संदेश प्रदान करते हैं :

$ foo() {
[[ "$1" =~ (-h|--help) ]] && { cat <<EOF
Usage: foo [bar]
Foo's a bar into a baz
EOF
return;
}
: ...other stuff...
}

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

$ foo -h
Usage: foo [bar]
Foo's a bar into a baz

$ foo --help
Usage: foo [bar]
Foo's a bar into a baz

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

प्रोग्रामिंग में, संगति एक गुण है। इसके अलावा, यह इस बात पर निर्भर करता है कि आप "जटिल" से क्या मतलब है।
जॉन 1024 22

और, आपका दृष्टिकोण चतुर और अच्छा है (और आपके प्रश्न में पहले से ही मेरी +1 है)।
जॉन १०२४२४

1
धन्यवाद; आपका कार्यान्वयन --helpभी गैर-इनवेसिव है, जो मुझे लगता है कि इस मामले में मेरे प्राथमिक मानदंड हैं। मैं :ट्रिक का उपयोग करके समाप्त कर सकता हूं क्योंकि यह सीधे मेरे उपयोग-मामले में फिट बैठता है, लेकिन मैं आपको इंगित करता हूं कि यह समर्थन करना मुश्किल नहीं है --helpऔर अधिकांश उपयोगकर्ता इसकी उम्मीद करेंगे।
dimo414

1
+1। मैं जवाब देने जा रहा था "गेटअप का उपयोग करें" लेकिन यह अच्छी तरह से काम करता है अगर कोई अन्य विकल्प नहीं हैं। यदि फ़ंक्शन के पास अन्य विकल्प हैं, तो उपयोग करें getopts
कैस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.