'-V' और '-x' के तर्कों का मतलब क्या है?


17

मैंने निम्नलिखित शेलबैंग के साथ शेल स्क्रिप्ट के एक जोड़े को देखा है:

#!/bin/bash -x -v 

हालांकि, man bashयह नहीं समझाता है कि ये तर्क -xऔर क्या हैं -v, अगर वे bashसभी के हैं।

तो क्या उन करना -xऔर -v(और अन्य संभावित तर्क) क्या मतलब है?

जवाबों:


26

से man bash(हाँ, यह एक बड़ा आदमी पृष्ठ है, आमतौर पर Google खोज तेज़ है):

-x प्रत्येक साधारण कमांड का विस्तार करने के बाद, कमांड के लिए, कमांड कमांड, कमांड का चयन करें, या कमांड के लिए अंकगणित, PS4 के विस्तारित मूल्य को प्रदर्शित करें, उसके बाद कमांड और उसके विस्तारित तर्क या संबंधित शब्द सूची।

प्रभावी रूप से: जब आप एक स्क्रिप्ट चलाते हैं, तो यह उस स्क्रिप्ट में किए गए सभी कार्यों को दिखाएगा। तो सभी ifs, लूप और कमांड चलते हैं। डीबगिंग के लिए बहुत उपयोगी है।

-v खोल शेल इनपुट लाइनों के रूप में वे पढ़ रहे हैं। जब कोई स्क्रिप्ट चलाई जाती है, तो वह फाइल को पढ़ते ही पूरी स्क्रिप्ट को प्रिंट कर देगी। जब आप शेल को अंतःक्रियात्मक रूप से उपयोग करते हैं, तो आपके द्वारा एंटर दबाने के बाद यह प्रत्येक कमांड को दिखाएगा।

ऊपर दिए गए उद्धरण setबिलिन कमांड के स्पष्टीकरण से हैं man bash, जिसमें यह भी बताया गया है कि विकल्प setभी तर्क के रूप में पारित किए जा सकते हैं (शेबंग लाइन पर):

विकल्प डिफ़ॉल्ट रूप से बंद हैं जब तक कि अन्यथा नोट न किया गया हो। इन विकल्पों को बंद करने के + बजाय उपयोग करने से -विकल्प को शेल के आह्वान के तर्क के रूप में भी निर्दिष्ट किया जा सकता है। विकल्पों के वर्तमान सेट में पाया जा सकता है $-। जब तक कोई अमान्य विकल्प सामने न आए, रिटर्न स्थिति हमेशा सही होती है।


ठीक है, तो यह एक सरल तर्क है, और मैं सिर्फ इन तर्कों के बिना एक अलग संस्करण हो सकता है?
एलेक्स

यदि आप बैश के बारे में बात कर रहे हैं: मुझे लगता है कि पिछले दशक की सभी बैश रिलीज़ इन तर्कों का समर्थन करेगी। यदि आप मैन पेज के बारे में बात कर रहे हैं: यह बहुत बड़ा है और आपको यह जानने की जरूरत है कि आप क्या देख रहे हैं, लेकिन यह वहां है (कम से कम उबंटू लोकल में)। आमतौर पर Google खोज जल्दी होती है।
मटक १

6
+1 "Google खोज तेज़ है" -> /-xएक दो बार आपको वहां man(वास्तव में, यह less) मिल जाएगा। आप अंतिम खोज को /+ अप एरो के साथ दोहरा सकते हैं , लेकिन स्क्रीन से दूर किसी भी वर्तमान खोज को हिट करने के लिए आपको नीचे पेज करना होगा ( /यह आगे की खोज है, ?पीछे है)।
गोल्डीलॉक्स

2
@ TAFKA'goldilocks 'मुझे लगता है कि यह आपके डिस्ट्रो पर निर्भर करता है। Ubuntu 13.04 bash मैनुअल पेज में 43 वाँ हिट सही है। nआगे की खोज के लिए और Nपिछड़े खोज के लिए उपयोग करके कम में अगली हिट को खोजना आसान है ।
mtak

वूप्स, वास्तव में मैं test -xकंडिशनल एक्सप्रेशंस (तीसरी हिट) के तहत देख रहा था , नहीं set -x-xमें man bashएक बहुत बुरा मामला है इसलिए अधिक विशिष्ट मदद मिल रही है: यदि आप का उपयोग करते हैं /^\s+-x\b, (= लाइन की शुरुआत + व्हाट्सएप + -x+ शब्द सीमा) आप 5 हिट में सही एक के लिए मिलता है ... यह 4 था, लेकिन तथ्य xमैच के लिए X... जो मुझे एक ऐसे प्रश्न की ओर ले जाता है जिसका अर्थ मैं पूछना चाहता हूं । वैसे भी, w / अधिकांश मैन पेज ^\s+-x\bपैटर्न को स्विच के लिए पहले प्रयास करना चाहिए।
गोल्डीलॉक्स

2

बैश मैन पेज इशारा करता है कि इन विकल्पों को और नीचे समझाया गया है, वास्तव में, लेकिन यह आसानी से अनदेखा है।

इसलिए आपकी समस्या को वास्तव में पढ़ना चाहिए: बैश मैन पेज का विकल्प अनुभाग अधूरा है। इसका उत्तर या तो उन्हें डुप्लिकेट करना होगा, या विकल्प अनुभाग के पहले भाग को उजागर करना होगा:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

अंत में, इसे पूरा करने के लिए: वे किसी भी POSIX शेल के लिए स्क्रिप्ट के कोड को दिखाने के लिए मानक विकल्प हैं जब पढ़ा ( -v) और जब चला ( -x)। Stderr पर आउटपुट दिखाई देगा।

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