2012-01-21 10 views
35

यह किसी भी भाषा या पार्सर की तुलना में किसी प्रोग्राम के आमंत्रण के बारे में अधिक है (हालांकि मुझे यकीन है कि पार्सर लाइब्रेरी का विकल्प इस पर निर्भर हो सकता है)। देखें, मैंने बहुत सी लिनक्स कमांड लाइन उपयोगिताएं उपयोग की हैं। और कुछ स्पष्ट पैटर्न हैं; '-' छोटे विकल्पों के लिए एक भी अक्षर से पहले, कई विकल्प जो तर्क नहीं लेते हैं, को जोड़ा जा सकता है, '-' विकल्पों के लंबे संस्करणों से पहले, और इसी तरह से।क्या लिनक्स कमांड लाइन स्विच और तर्क के लिए मानक हैं?

हालांकि, कुछ मामलों में, पूंजीकरण इनवर्ट एक विकल्प में उपयोग किया जाता है। तो, '-d' का मतलब डेमॉन के रूप में चलाना हो सकता है, लेकिन '-D' एक डेमॉन के रूप में चलाया जाएगा। (यदि आप इसे नहीं चाहते हैं तो बस विकल्प को क्यों न छोड़ें? यह कभी स्पष्ट नहीं है, लेकिन यह वास्तव में आम है, इसलिए मुझे लगता है कि कुछ कारण होना चाहिए।) लेकिन कुछ कार्यक्रमों में, पूंजी एक पूरी तरह से असंबंधित विकल्प है; यदि '-d' को डिमन के रूप में चलाया जाता है, तो '-D' डीबग मोड सक्षम करने के लिए हो सकता है। क्या इसके पीछे कुछ प्रकार का अतिव्यापी प्रिंसिपल है, और कौन सा चयन करना सबसे अच्छा है? या क्या हम सिर्फ "जो कुछ भी काम करते हैं" से निपट रहे हैं?

कुछ आदेश भी हैं जो तर्क के साथ विकल्पों (या इसके बजाय) के अलावा, केवल एक ही तर्क लेते हैं। सीपी इसका एक अच्छा उदाहरण है; एक जोड़े से शायद ही कभी इस्तेमाल किए जाने वाले टॉगल से, अंतिम तर्क प्राप्त होता है जिसे गंतव्य माना जाता है, और विकल्प सूची और गंतव्य के बीच किसी भी तर्क को स्रोत माना जाता है। क्या अंगूठे का नियम है जब यह आदेश पर भरोसा करने के लिए "ठीक है", तर्क के साथ स्पष्ट विकल्प झंडे का उपयोग करने के बजाय?

+2

कमांड लाइन विकल्पों के लिए कोई सार्वभौमिक मानक नहीं है, हालांकि 'गेटोपेट' सम्मेलन एक अच्छा प्रारंभिक बिंदु है। इनवर्जन विकल्पों के बारे में अपने प्रश्न का उत्तर देने के लिए, डिफ़ॉल्ट को आमतौर पर कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट किया जाता है, इसलिए आपको बल-सक्षम और बल-अक्षम दोनों टॉगल की आवश्यकता होती है। – Borealid

उत्तर

24

आम तौर पर पूरी सूची देखें हाँ।

+0

मैं शायद गेटोपट का उपयोग कर रहा हूं, हालांकि यह मानकों पर बहुत उपयोगी नहीं है। हालांकि, आईईईई लिंक बेहद उपयोगी है। – DigitalMan

+0

यदि आप अपने आप पर एक पार्सर लागू करने वाले हैं: किसी भी भाषा के लिए वहां एक पार्सर लाइब्रेरी खोजने के लिए संभावना अधिक है, जावा पायथन सी के लिए पार्सर लाइब्रेरीज़ हैं और मुझे लगता है कि कई अन्य हैं। इसलिए पुनर्विचार की कोई आवश्यकता नहीं है पहिया। – ApriOri

+0

असल में, यह मेरा काम है कि पहिया को फिर से शुरू करें: पी लेकिन चूंकि विकल्पों को केवल एक बार पार्स किया जाता है, इसलिए लुभावनी गति पर जाने की आवश्यकता नहीं होती है। मैं बस getopt में छोड़ देंगे। – DigitalMan

15

ईएसआर ने अपनी पुस्तक "द आर्ट ऑफ़ यूनिक्स प्रोग्रामिंग" में इस बारे में बहुत सारी जानकारी एकत्र की है। यहां एक स्निपेट है।

-a
सभी (तर्क के बिना)। यदि कोई जीएनयू-शैली है - सभी विकल्प, कुछ भी होने के लिए, लेकिन इसके लिए समानार्थी शब्द आश्चर्यजनक होगा। उदाहरण: फ्यूसर (1), fetchmail (1)।

टैर (1) में संलग्न करें। इसे अक्सर हटाने के लिए -d के साथ जोड़ा जाता है।

-b
बफर या ब्लॉक आकार (तर्क के साथ)। एक महत्वपूर्ण बफर आकार सेट करें, या (भंडारण मीडिया संग्रहण या प्रबंधन के साथ करने वाले प्रोग्राम में) ब्लॉक आकार सेट करें। उदाहरण: डु (1), डीएफ (1), टैर (1)।

बैच। यदि कार्यक्रम स्वाभाविक रूप से इंटरैक्टिव है, तो बी को प्रप्रेस को दबाया जा सकता है या इनपुट ऑपरेटर को मानव ऑपरेटर की बजाय फ़ाइल से स्वीकार करने के लिए उपयुक्त अन्य विकल्प सेट कर सकता है। उदाहरण: फ्लेक्स (1)।

-c
कमांड (तर्क के साथ)। यदि कार्यक्रम एक दुभाषिया है जो सामान्य रूप से मानक इनपुट से कमांड लेता है, तो यह उम्मीद की जाती है कि ए-सी तर्क का विकल्प इनपुट की एक पंक्ति के रूप में इसे पास कर दिया जाएगा। यह सम्मेलन गोले और शैल-जैसे दुभाषियों के लिए विशेष रूप से मजबूत है। उदाहरण: श (1), राख (1), बीएसएच (1), केश (1), पायथन (1)। नीचे तुलना करें।

चेक (बिना तर्क के)। कमांड को तर्क (ओं) की शुद्धता की जांच करें, लेकिन वास्तव में सामान्य प्रसंस्करण नहीं करते हैं। प्रोग्राम्स द्वारा अक्सर सिंटैक्स-चेक विकल्प के रूप में उपयोग किया जाता है जो कमांड फ़ाइलों की व्याख्या करते हैं। उदाहरण: गेट्टी (1), पर्ल (1)।

, http://catb.org/~esr/writings/taoup/html/ch10s05.html

9

लिनक्स/जीएनयू कमांड लाइन इंटरफेस POSIX मानक इस प्रकार है। यह जीएनयू द्वारा उनके मानकों में उल्लेख किया गया है: http://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html

कमांड लाइन सिंटैक्स एकल यूनिक्स विशिष्टता का भी हिस्सा है, हालांकि - लोंग-विकल्प एक जीएनयू नवाचार आईआईआरसी हैं।

यहाँ देखें: http://pubs.opengroup.org/onlinepubs/7908799/xbd/utilconv.html

लेकिन हाँ, इस मानक getopt के रूप में कार्यान्वित किया जाता है।