तर्कों और विकल्पों के बदलते अर्थ के बारे में भ्रम, क्या कोई आधिकारिक मानक परिभाषा है?


11

मुझे समझ में एक भ्रामक भिन्नता आई है कि कमांड के सिंटैक्स के संबंध में क्या विकल्प और तर्क हैं।

उदाहरण के लिए, मुझे परिभाषाओं का सामना करना पड़ा जैसे:

  • command -a -b -c d e f

    कुछ के बीच अंतर होता है -a -b -c, उन्हें विकल्प या स्विच कहते हैं और d e fउन्हें तर्कों को कॉल करके।

  • command -a -b -c d e f

    उदाहरण के लिए कुछ, bashसभी -a -b -c d e fतर्कों को बुलाते हैं और बताते हैं, कि ये सभी $1 $2 $3 $4 $5 $6क्रमशः एक स्क्रिप्ट से सुलभ हैं।

  • command -a b=c

    कुछ लोग -aएक विकल्प, bएक तर्क और cमूल्य कहते हैं, लेकिन अन्य उन्हें पहले दो बिंदुओं की तरह मिलाते हैं, एक किस्म में सभी -a b cतर्क कहते हैं।

वे तीन संस्करण विभिन्न कॉलिंग किस्मों के ढेर सारे उदाहरण हैं, मुझे यह भी नहीं पता कि उन सभी को कैसे सूचीबद्ध किया जाए, लेकिन मैंने देखा कि निश्चित रूप से कोई निश्चित नामकरण सम्मेलन नहीं है।

या कम से कम, कोई मानकीकृत नामकरण सम्मेलन नहीं है जिसके बारे में मुझे पता है, क्योंकि मैं विभिन्न यादृच्छिक स्रोतों में आया था, लेकिन यहां तक ​​कि आधिकारिक लिनक्स और जीएनयू संबद्ध साइटों या मैनुअल के बीच भी मैं इस असंगति से मिल सकता था।

क्या कोई निर्विवाद आधिकारिक नामकरण योजना है जिसका मैं उल्लेख कर सकता हूं?


दूसरा रूप अपने स्वयं के दृष्टिकोण से 100% सही है। प्रसंग बहुत महत्वपूर्ण है।
Oskar Skog

जवाबों:


18

पोसिक्स मानक के "यूटिलिटी आर्ग्युमेंट सिंटैक्स" अनुभाग से अनुकूलित :

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

उदाहरण में उपयोगिता का नाम दिया गया है utility_name। इसके बाद विकल्प , विकल्प-तर्क और संचालन होते हैं

वे तर्क जिनमें -वर्ण और एकल अक्षर या अंक होते हैं, जैसे a, विकल्प (या, ऐतिहासिक रूप से, झंडे ) के रूप में जाने जाते हैं । कुछ विकल्प एक विकल्प-तर्क द्वारा अनुसरण किए जाते हैं , जैसा कि दिखाया गया है [-c option_argument]। अंतिम विकल्प और विकल्प-तर्क के बाद के तर्क को ऑपरेंड नाम दिया गया है

मानक "तर्क" को भी परिभाषित करता है

शेल कमांड भाषा में, एक पैरामीटर एक उपयोगिता के लिए पारित किया जाता है, जो कि एक फ़ंक्शन argvद्वारा बनाई गई सरणी में एकल स्ट्रिंग के बराबर है exec। एक तर्क विकल्प, विकल्प-तर्क, या कमांड नाम के बाद ऑपरेंड में से एक है।


utility_nameकमांड लाइन पर आने के बाद की सभी चीजें उपयोगिता की दलीलें हैं , और यदि यह एक शेल स्क्रिप्ट है तो वे सभी स्थितीय मापदंडों में दिखाई देती हैं । कमांड लाइन पर इन तर्कों के लिए शब्द विकल्प, विकल्प-तर्क और ऑपरेंड अधिक विशिष्ट नाम हैं।

"ध्वज" और "स्विच" "पर्याय" के समानार्थी शब्द हैं।

के मामले में

utility -a b=c
  • -aऔर b=cतर्क हैं,
  • -aएक विकल्प है यदि उपयोगिता इसे पहचानती है ( lnउपयोगिता के पास कोई -xविकल्प नहीं है, तो -xएक विकल्प नहीं है ln, कड़ाई से बोल रहा है, और ln -xनैदानिक ​​संदेश को ट्रिगर करेगा)
  • b=cएक विकल्प तर्क है अगर-a विकल्प, एक तर्क लेता है अन्यथा यह एक संकार्य है,
  • bऔर cकर रहे हैं नहीं विकल्प, विकल्प-तर्कों और नहीं अपने आप में ऑपरेंड।

जैसा कि आप ऊपर दिए गए मेरे पाठ से नोटिस करते हैं, उपयोगिता के सिनॉप्सिस से काम करना (जैसा कि उपयोगिता के मैनुअल द्वारा दिया गया है) कमांड लाइन पर टाइप किए गए जेनेरिक कमांड को डिकोड करने की कोशिश करने से आसान होता। मैनुअल स्पष्ट रूप से बताएगा कि विकल्प-तर्क क्या विकल्प लेते हैं और क्या तर्क हैं आदि।

c"मान" कॉल करने के लिए IMHO पूरी तरह से ठीक है। यह ऐसा कुछ नहीं है जिसे मानकीकृत किया जाता है, लेकिन बहुत कम लोग आपको गलत समझेंगे यदि आप कहते हैं कि " cमूल्य दिया गया हैb "। यह प्रश्न में उपयोगिता के संदर्भ से स्पष्ट होगा।

उदाहरण के लिए

$ awk -v var="d" '...' data.in

किसी को भी जो के बारे में जानता awkकहूँगा कि -v var="d"इसका मतलब है " चर मूल्य असाइन किया गया है कमांड लाइन पर "।awkvard

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.