"-" (डबल-डैश) का क्या अर्थ है? ("नंगे डबल डैश" के रूप में भी जाना जाता है)


469

मैंने कमांड --में इस्तेमाल होते देखा है compgen

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

compgen -W "foo bar baz" -- b

--वहां का अर्थ क्या है ?

जवाबों:


583

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

उदाहरण का उपयोग करें: इससे आप स्ट्रिंग के लिए एक फ़ाइल टटोलना चाहते हैं -v- सामान्य रूप -vसे मिलान अर्थ को उलटने का विकल्प माना जाएगा (केवल वे लाइनें जो मेल नहीं खातीं), लेकिन --आप -vइस तरह स्ट्रिंग के लिए grep कर सकते हैं :

grep -- -v file

3
सबसे विशेष रूप से बैश में setबिल्ट-इन, जहां यह बिल्कुल आवश्यक है।
l0b0

10
--में नियमित अभिव्यक्ति से विकल्पों को अलग करने के लिए काम करता है grep, लेकिन विहित तरीका -e/ उपयोग करने के लिए है --regexp
l0b0

5
@ l0b0: खोज करने के लिए पैटर्न आम तौर पर स्थितीय मापदंडों में से एक है, इसलिए यह उसके बाद फिट हो सकता है --, हालांकि आप ध्यान देने योग्य हैं कि ऊपर दिए गए मेरे उदाहरण को भी लिखा जा सकता है grep -e -v file(हालांकि यह बहुत भ्रामक है)।
गस

2
सभी bashबिलिन कमांड --विकल्प मार्कर के अंत के रूप में स्वीकार नहीं करते हैं । [और echoउदाहरण के लिए ( कारणों में से एक echoमज़बूती से इस्तेमाल नहीं किया जा सकता है ) नहीं है।
स्टीफन चेज़लस


39

शेल शेल कमांड कमांड में man bashहम पढ़ सकते हैं :

जब तक अन्यथा उल्लेख नहीं किया जाता है, प्रत्येक अंतर्निहित कमांड इस खंड में प्रलेखित विकल्प के रूप में स्वीकार किए जाने वाले विकल्पों को स्वीकार करने से पहले -स्वीकार करता -- है

:, true, false, और testbuiltins विकल्पों को स्वीकार नहीं करते और इलाज नहीं है --विशेष रूप से। exit, logout, break, continue, let, और shiftbuiltins स्वीकार करते हैं और प्रक्रिया तर्क के साथ शुरुआत -की आवश्यकता के बिना --। अन्य बिल्डिंस जो तर्कों को स्वीकार करते हैं, लेकिन वे विकल्प के रूप में निर्दिष्ट नहीं हैं, जिन्हें स्वीकार करने वाले तर्क -अवैध विकल्पों के रूप में शुरुआत करते हैं और --इस व्याख्या को रोकने की आवश्यकता होती है।

ध्यान दें कि विकल्पों के अंत की echoव्याख्या नहीं करता है --


2
+1 संदर्भित करने के लिए man bash(अगली बार के लिए नोट-से-स्व:)।
user3773048

11

POSIX.1-2017

12.2 उपयोगिता सिंटेक्स दिशानिर्देश

दिशानिर्देश 10:

पहला --तर्क जो विकल्प-तर्क नहीं है, उसे विकल्प के अंत का संकेत देने वाले परिसीमन के रूप में स्वीकार किया जाना चाहिए। किसी भी निम्नलिखित तर्क को ऑपरेंड के रूप में माना जाना चाहिए, भले ही वे ' -' चरित्र से शुरू हों ।

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

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