सवाल शेल कमांड पर सिंगल डैश और डबल डैश फ्लैग betwen क्या अंतर है?


मैं खोल में काम करने के लिए नया हूं और इन आदेशों का उपयोग मनमाने ढंग से लगता है। क्या एक कारण है कि एक ध्वज में एक डैश होता है और दूसरा एक डबल डैश हो सकता है?


54
2018-05-10 14:27


मूल


यह POSIX मानक द्वारा शासित माना जाता है: iam.ubc.ca/guides/javatut99/essential/attributes/_posix.html - cjc
वह लिंक अब 404 @ सीजेसी है :( एक संभावित रूप से अधिक विश्वसनीय लिंक हो सकता है en.wikipedia.org/wiki/POSIX - Bernhard Hofmann


जवाब:


एक एकल हाइफ़न का पालन कई सिंगल-कैरेक्टर झंडे द्वारा किया जा सकता है। एक डबल हाइफ़न एक एकल, मल्टीचार्टर विकल्प उपसर्ग करता है।

इस उदाहरण पर विचार करें:

tar -czf

इस उदाहरण में, -czf तीन सिंगल-कैरेक्टर झंडे निर्दिष्ट करता है: c, z, तथा f

अब एक और उदाहरण पर विचार करें:

tar --exclude

इस मामले में, --exclude नामित एक एकल, मल्टीचार्टर विकल्प निर्दिष्ट करता है exclude। डबल हाइफ़न कमांड लाइन तर्क को असंबद्ध करता है, यह सुनिश्चित करता है tar इसे के रूप में व्याख्या करता है exclude के संयोजन के बजाय e, x, c, l, u, d, तथा e


91
2018-05-10 14:32



@ kylex, नहीं, क्योंकि "सी" नामक कोई लंबा विकल्प नहीं है और इसका मतलब है कि एक लंबा विकल्प है, न कि एक वर्ण विकल्प निम्नानुसार है। - psusi
कभी-कभी यहां तक ​​कि लंबे आदेश भी एकल-धराशायी हो सकते हैं। उदाहरण के लिए 'cdrecord' सभी सिंगल-डैश किए गए आदेशों का उपयोग करता है (-जेक्ट -डाओ ...)। यह सब कार्यक्रम पर निर्भर करता है, लेकिन उनमें से अधिकांश (!) उपयोग करते हैं - सिंगल और - एकाधिक-वर्ण (लंबे) कमांड के लिए - mulaz
@ मुलाज, हाँ, सीडीआरकॉर्ड कुछ मूर्ख चीजें करता है। - psusi
यह भी ध्यान में रखता है - अपने आप पर इस्तेमाल आमतौर पर विकल्पों के अंत का संकेत देता है। और अधिक जानकारी के लिए यहां देखें: unix.stackexchange.com/questions/11376/... - Sirex
@ किल्जॉय, क्योंकि अज्ञानता या पसंद के माध्यम से, उन कार्यक्रमों के लेखकों ने पाठ्यक्रम के सम्मेलन का पालन नहीं किया। बिलकुल इसके जैसा cdrecord उपरोक्त टिप्पणियों में उल्लेख किया गया साल पहले। - psusi


यह सब कार्यक्रम पर निर्भर करता है। आम तौर पर "-" का प्रयोग 'शॉर्ट' विकल्प (एक-अक्षर, -एच) के लिए किया जाता है, और "-" का प्रयोग "लम्बा" (एआर) विकल्प (--help) के लिए किया जाता है।

छोटे विकल्प आमतौर पर संयुक्त किए जा सकते हैं (इसलिए "-h -a" "-ha" जैसा ही है)

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

स्रोत


14
2018-05-10 14:35



तो यह जावा-वर्जन और चींटी-विरोधी क्यों है? - killjoy


यह वास्तव में एक सम्मेलन है। हालांकि, यह कार्यक्रम में पारित विकल्पों के बारे में अधिक कुशलतापूर्वक जानने के लिए पार्सर्स की सहायता कर सकता है। इसके अलावा, स्वच्छ उपयोगिताएं हैं जो इन आदेशों को पार्स करने में मदद कर सकती हैं, जैसे कि getopt(3) या गैर मानक getopt_long(3) एक कार्यक्रम के तर्कों का विश्लेषण करने में मदद करने के लिए।

यह अच्छा है, क्योंकि हमारे पास कई छोटे विकल्प संयुक्त हो सकते हैं, जैसा कि अन्य उत्तरों कहते हैं, जैसे tar -xzf myfile.tar.gz

अगर वहां "लिसा" तर्क था ls, टाइप करने के लिए शायद एक अलग अर्थ होगा ls -lisa से ls --lisa। पूर्व हैं l, i, s, तथा a पैरामीटर, शब्द नहीं।

वास्तव में, आप लिख सकते हैं ls -l -i -s -a, जिसका अर्थ बिल्कुल वही है ls -lisa, लेकिन यह कार्यक्रम पर निर्भर करेगा।

ऐसे कार्यक्रम भी हैं जो इस सम्मेलन का पालन नहीं करते हैं। सबसे विशेष रूप से मेरी दृष्टि के लिए, dd तथा gcc


6
2018-05-10 18:56





डबल डैश के साथ सिंगल डैश बनाम लंबे विकल्पों के साथ छोटे विकल्प

छोटे विकल्पों को एक तर्क में जोड़ा जा सकता है;

for example: ls -lrt #instead of ls -l -r -t

यदि हम सिंगल डैश के साथ लंबे विकल्पों की अनुमति देते हैं, तो यह अस्पष्टता का कारण बनता है। इसे हल करने के लिए हम लंबे विकल्पों के लिए डबल डैश का उपयोग करते हैं।


2
2017-08-29 03:48