एक स्क्रिप्ट केवल एक फ़ाइल में संग्रहीत आदेशों की एक सूची है। टर्मिनल पर हर समय एक-एक करके कमांड के अनुक्रम को चलाने के बजाय, एक सिस्टम उपयोगकर्ता उन सभी (आदेशों) को एक फ़ाइल में संग्रहीत कर सकता है और कई बार कमांड को फिर से निष्पादित करने के लिए फ़ाइल को बार-बार आमंत्रित करता है।पी>
स्क्रिप्टिंग सीखते समय या स्क्रिप्ट लिखने के शुरुआती चरणों के दौरान, हम आम तौर पर कमांड की कुछ पंक्तियों के साथ छोटी या छोटी स्क्रिप्ट लिखकर शुरू करते हैं। और हम आमतौर पर ऐसी स्क्रिप्ट्स को उनके आउटपुट को देखने और यह सुनिश्चित करने के अलावा और कुछ नहीं करते हैं कि वे हमारे इरादे के अनुसार काम करें।
हालाँकि, जैसे ही हम हजारों पंक्तियों की कमांड के साथ बहुत लंबी और उन्नत स्क्रिप्ट लिखना शुरू करते हैं, उदाहरण के लिए स्क्रिप्ट जो सिस्टम सेटिंग्स को संशोधित करती हैं, नेटवर्क पर महत्वपूर्ण बैकअप करती हैं और बहुत कुछ, हम महसूस करेंगे कि केवल एक स्क्रिप्ट के आउटपुट को देखना नहीं है। स्क्रिप्ट में बग ढूंढने के लिए पर्याप्त है।
इसलिए, लिनक्स श्रृंखला में इस शेल स्क्रिप्ट डिबगिंग में, हम शेल स्क्रिप्ट डिबगिंग को सक्षम करने के तरीके के माध्यम से चलेंगे, विभिन्न शेल स्क्रिप्ट डिबगिंग मोड की व्याख्या करने के लिए आगे बढ़ें और बाद की श्रृंखला में उनका उपयोग कैसे करें।
एक स्क्रिप्ट कैसे शुरू करें
एक स्क्रिप्ट अपनी पहली पंक्ति द्वारा अन्य फाइलों से अलग होती है, जिसमें एक #!
. होता है (शी-बैंग - फ़ाइल प्रकार को परिभाषित करता है) और पथ नाम (दुभाषिया का पथ) जो सिस्टम को सूचित करता है कि फ़ाइल कमांड का एक संग्रह है जिसे निर्दिष्ट प्रोग्राम (दुभाषिया) द्वारा व्याख्या किया जाएगा।
विभिन्न प्रकार की लिपियों में "पहली पंक्तियों" के उदाहरण नीचे दिए गए हैं:
#!/bin/sh [For sh scripting] #!/bin/bash [For bash scripting] #!/usr/bin/perl [For perl programming] #!/bin/awk -f [For awk scripting]
नोट :पहली पंक्ति या #!
यदि किसी स्क्रिप्ट में केवल मानक सिस्टम कमांड का एक सेट है, बिना किसी आंतरिक शेल निर्देशों के, तो इसे छोड़ा जा सकता है।
लिनक्स में शेल स्क्रिप्ट कैसे निष्पादित करें
शेल स्क्रिप्ट को लागू करने के लिए पारंपरिक सिंटैक्स है:
$ script_name argument1 ... argumentN
एक अन्य संभावित रूप शेल को स्पष्ट रूप से निर्दिष्ट करके है जो नीचे के रूप में स्क्रिप्ट को निष्पादित करेगा:
$ shell script_name argument1 ... argumentN
उदाहरण के लिए:
$ /bin/bash script_name argument1 ... argumentN [For bash scripting] $ /bin/ksh script_name argument1 ... argumentN [For ksh scripting] $ /bin/sh script_name argument1 ... argumentN [For sh scripting]
उन स्क्रिप्ट के लिए जिनमें #!
. नहीं है पहली पंक्ति के रूप में और इसमें केवल बुनियादी सिस्टम कमांड होते हैं जैसे कि नीचे वाला:
#script containing standard system commands cd /home/$USER mkdir tmp echo "tmp directory created under /home/$USER"
बस इसे निष्पादन योग्य बनाएं और इसे निम्नानुसार चलाएं:
$ chmod +x script_name $ ./script_name
शैल स्क्रिप्ट डिबगिंग मोड को सक्षम करने के तरीके
नीचे प्राथमिक शेल स्क्रिप्ट डिबगिंग विकल्प दिए गए हैं:
-v
(वर्बोज़ के लिए छोटा) - शेल को स्क्रिप्ट में सभी पंक्तियों को पढ़ने के लिए कहता है, जब वे पढ़े जाते हैं, तो यह वर्बोज़ मोड को सक्रिय करता है।-n
(noexec या no ecxecution के लिए छोटा) - शेल को सभी कमांड पढ़ने का निर्देश देता है, हालांकि उन्हें निष्पादित नहीं करता है। यह विकल्प सिंटैक्स जाँच मोड को सक्रिय करता है।-x
(xtrace या निष्पादन ट्रेस के लिए संक्षिप्त) - शेल को सभी कमांड और उनके तर्कों को निष्पादित करते समय टर्मिनल पर प्रदर्शित करने के लिए कहता है। यह विकल्प शेल ट्रेसिंग मोड को सक्षम करता है।
पहला तंत्र शेल स्क्रिप्ट की पहली पंक्ति को नीचे के रूप में बदलकर है, यह पूरी स्क्रिप्ट के डिबगिंग को सक्षम करेगा।
#!/bin/sh option(s)
ऊपर दिए गए फॉर्म में, विकल्प एक या उपरोक्त डिबगिंग विकल्पों का संयोजन हो सकता है।
<एच4>2. डिबगिंग विकल्पों के साथ शेल को लागू करनादूसरा निम्न प्रकार से डिबगिंग विकल्पों के साथ शेल को लागू करके है, यह विधि पूरी स्क्रिप्ट के डिबगिंग को भी चालू कर देगी।
$ shell option(s) script_name argument1 ... argumentN
उदाहरण के लिए:
$ /bin/bash option(s) script_name argument1 ... argumentN<एच4>3. सेट शेल बिल्ट-इन कमांड का उपयोग करना
तीसरी विधि शेल स्क्रिप्ट के किसी दिए गए अनुभाग जैसे फ़ंक्शन को डीबग करने के लिए सेट बिल्ट-इन कमांड का उपयोग कर रही है। यह तंत्र महत्वपूर्ण है, क्योंकि यह हमें शेल स्क्रिप्ट के किसी भी खंड पर डिबगिंग को सक्रिय करने की अनुमति देता है।
हम सेट . का उपयोग करके डिबगिंग मोड चालू कर सकते हैं नीचे दिए गए फॉर्म में कमांड, जहां विकल्प डिबगिंग विकल्पों में से कोई भी है।
$ set option
डिबगिंग मोड सक्षम करने के लिए, उपयोग करें:
$ set -option
डिबगिंग मोड को अक्षम करने के लिए, उपयोग करें:
$ set +option
इसके अलावा, यदि हमने शेल स्क्रिप्ट के विभिन्न खंडों में कई डिबगिंग मोड सक्षम किए हैं, तो हम उन सभी को एक बार में इस प्रकार अक्षम कर सकते हैं:
$ set -
शेल स्क्रिप्ट डिबगिंग मोड को सक्षम करने के साथ यह अभी के लिए है। जैसा कि हमने देखा है, हम या तो पूरी शेल स्क्रिप्ट या स्क्रिप्ट के किसी विशेष खंड को डिबग कर सकते हैं।
इस श्रृंखला के अगले दो एपिसोड में, हम कवर करेंगे कि शेल स्क्रिप्ट डिबगिंग विकल्पों का उपयोग कैसे करें वर्बोज़ की व्याख्या करें , वाक्यविन्यास जांच और खोल अनुरेखण डिबगिंग उदाहरणों के साथ मोड।
महत्वपूर्ण रूप से, इस गाइड के बारे में कोई प्रश्न पूछना न भूलें या शायद नीचे टिप्पणी अनुभाग के माध्यम से हमें प्रतिक्रिया दें। तब तक, टेकमिंट से जुड़े रहें।