BASH. के लिए शुरुआती गाइड
शुरुआती गाइड टू बाश श्रृंखला के दूसरे भाग में आपका स्वागत है जो इस मायने में अद्वितीय है कि यह शुरुआती लोगों के लिए एक शुरुआती द्वारा लिखा गया एकमात्र बाश ट्यूटोरियल है।
इस गाइड के पाठक अपने ज्ञान का निर्माण करेंगे, और उम्मीद है कि अंत तक, कुछ काफी चतुर स्क्रिप्ट लिखने में सक्षम होंगे।
पिछली बार हमने कवर किया था अपनी पहली स्क्रिप्ट बनाना जो केवल "हैलो वर्ल्ड" शब्दों को प्रदर्शित करता है। इसमें टेक्स्ट एडिटर, टर्मिनल विंडो कैसे खोलें, अपनी स्क्रिप्ट कहां रखें, जैसे विषयों को शामिल किया गया है। "हैलो वर्ल्ड" शब्दों को कैसे प्रदर्शित करें और एस्केप कैरेक्टर पर कुछ बारीक बिंदु जैसे उद्धरण ("").
इस खंड में इनपुट पैरामीटर शामिल हैं। वहां अन्य मार्गदर्शक जो इस तरह की बातें सिखाते हैं लेकिन बहुत बार, वे कुछ काफी निम्न-स्तरीय चीजों में कूद जाते हैं और शायद बहुत अधिक जानकारी प्रदान करते हैं।
एक पैरामीटर स्क्रिप्ट वैयक्तिकरण जोड़ती है
पिछले ट्यूटोरियल से "हैलो वर्ल्ड" स्क्रिप्ट में यह सब बहुत स्थिर था। स्क्रिप्ट ने वास्तव में कुछ खास नहीं किया।
हम "हैलो वर्ल्ड" स्क्रिप्ट में कैसे सुधार कर सकते हैं?
उस स्क्रिप्ट के बारे में क्या जो इसे चलाने वाले को बधाई देती है? "हैलो वर्ल्ड" कहने के बजाय यह "हैलो गैरी", "हैलो टिम" या "हैलो डॉली" कहेगा।
इनपुट मापदंडों को स्वीकार करने की क्षमता के बिना हमें तीन स्क्रिप्ट "hellogory.sh", "hellotim.sh" और "hellodolly.sh" लिखने की आवश्यकता होगी।
पैरामीटर कैसे बनाएं
अपनी स्क्रिप्ट को इनपुट पैरामीटर पढ़ने की अनुमति देकर हम किसी को भी बधाई देने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं।
ऐसा करने के लिए एक टर्मिनल विंडो खोलें (CTRL + Alt + टी) और निम्नलिखित टाइप करके अपने स्क्रिप्ट फ़ोल्डर में नेविगेट करें: (सीडी कमांड के बारे में)
सीडी स्क्रिप्ट
निम्नलिखित टाइप करके एक नई स्क्रिप्ट बनाएं, जिसे 'ग्रीटमे.श' कहा जाता है: (टच कमांड के बारे में)
स्पर्श अभिवादन.शो
निम्नलिखित टाइप करके अपने पसंदीदा संपादक में स्क्रिप्ट खोलें: (नैनो कमांड के बारे में)
नैनो ग्रीटमे.शो
नैनो के भीतर निम्नलिखित पाठ दर्ज करें:
#!/बिन/बैश
गूंज "हैलो $@"
दबाएँ CTRL तथा हे फ़ाइल को सहेजने के लिए और फिर CTRL तथा एक्स फ़ाइल को बंद करने के लिए।

स्क्रिप्ट चलाने के लिए कमांड लाइन में अपने नाम के स्थान पर निम्नलिखित दर्ज करें।
श ग्रीटिंगमे.श टिम
अगर मैं अपने नाम से स्क्रिप्ट चलाता हूं तो यह "हैलो गैरी" शब्द प्रदर्शित करता है।

पहली पंक्ति में #!/Bin/bash लाइन है जिसका उपयोग फ़ाइल को बैश स्क्रिप्ट के रूप में पहचानने के लिए किया जाता है।
दूसरी पंक्ति हैलो शब्द को प्रतिध्वनित करने के लिए इको स्टेटमेंट का उपयोग करती है और फिर अजीब $@ नोटेशन है। (इको कमांड के बारे में)
$@ स्क्रिप्ट नाम के साथ दर्ज किए गए प्रत्येक पैरामीटर को प्रदर्शित करने के लिए फैलता है। इसलिए यदि आपने "shgreeme.sh tim" टाइप किया है तो "हैलो टिम" शब्द प्रदर्शित होंगे। यदि आपने "ग्रीटमे.श टिम स्मिथ" टाइप किया है तो "हैलो टिम स्मिथ" शब्द प्रदर्शित होंगे।
इको कमांड का उपयोग करना
ग्रीटमे.श स्क्रिप्ट के लिए केवल पहले नाम का उपयोग करके नमस्ते कहना अच्छा हो सकता है। कोई नहीं कहता, "हैलो गैरी नेवेल," जब वे किसी से मिलते हैं, लेकिन वे कह सकते हैं, "हैलो गैरी," हालांकि।
आइए स्क्रिप्ट को बदलें ताकि यह केवल पहले पैरामीटर का उपयोग करे। नैनो में ग्रीटमे.श स्क्रिप्ट को निम्नलिखित टाइप करके खोलें:
नैनो ग्रीटमे.शो
स्क्रिप्ट को इस प्रकार बदलें कि वह इस प्रकार पढ़े:
#!/बिन/बैश
गूंज "हैलो $1"
दबाकर स्क्रिप्ट सहेजें CTRL तथा हे और फिर दबाकर बाहर निकलें CTRL तथा एक्स।

नीचे दिखाए अनुसार स्क्रिप्ट चलाएँ (नाम को अपने साथ बदलें):
श ग्रीटमे.श गैरी नेवेल
जब आप स्क्रिप्ट चलाते हैं तो यह केवल "हैलो गैरी" (या उम्मीद है कि "हैलो" और आपका नाम जो भी हो) कहेगा।

$ प्रतीक के बाद 1 मूल रूप से इको कमांड को कहता है, पहले पैरामीटर का उपयोग करें। यदि आप $1 को $2 से बदलते हैं, तो यह "hello newell" (या आपका उपनाम जो भी हो) प्रदर्शित करेगा। पूरा नाम पाने के लिए आप $1 के बाद $2 भी जोड़ सकते हैं।

इसे एक से अधिक पैरामीटर के साथ चलाने से वे दर्ज किए गए क्रम के अनुरूप स्थानों पर प्रदर्शित होंगे।

संयोग से, यदि आपने $2 को $3 से बदल दिया और स्क्रिप्ट को केवल 2 मापदंडों के साथ चलाया, तो आउटपुट केवल "Hello" होगा।
प्रयुक्त पैरामीटर्स की संख्या कैसे प्रदर्शित करें
वास्तव में दर्ज किए गए मापदंडों की संख्या को प्रदर्शित करना और संभालना संभव है, और बाद के ट्यूटोरियल आपको दिखाएंगे कि सत्यापन उद्देश्यों के लिए पैरामीटर गणना का उपयोग कैसे करें।
दर्ज किए गए मापदंडों की संख्या प्रदर्शित करने के लिए, ग्रीटिंगमे.श स्क्रिप्ट (नैनो ग्रीटिंगमे.श) खोलें, और पाठ को निम्नानुसार संशोधित करें:
#!/बिन/बैश
गूंज "आपने $# नाम दर्ज किए"
गूंज "हैलो $@"
दबाएँ CTRL तथा हे स्क्रिप्ट को बचाने के लिए और CTRL तथा एक्स नैनो से बाहर निकलने के लिए।

दूसरी पंक्ति पर $# दर्ज किए गए मापदंडों की संख्या प्रदर्शित करता है।
अब तक, यह सब उपन्यास रहा है लेकिन बहुत उपयोगी नहीं है। ऐसी स्क्रिप्ट की आवश्यकता किसे है जो केवल "हैलो" प्रदर्शित करे?

इको स्टेटमेंट बनाम। इनपुट पैरामीटर्स
इको स्टेटमेंट का वास्तविक उपयोग उपयोगकर्ता को वर्बोज़ और सार्थक आउटपुट प्रदान करना है। यदि आप कल्पना कर सकते हैं कि आप कुछ जटिल करना चाहते हैं जिसमें कुछ गंभीर संख्या क्रंचिंग शामिल है और फ़ाइल/फ़ोल्डर हेरफेर, यह उपयोगकर्ता को प्रदर्शित करने के लिए उपयोगी होगा कि प्रत्येक चरण में क्या हो रहा है रास्ता।
इसके विपरीत, इनपुट पैरामीटर आपकी स्क्रिप्ट को इंटरैक्टिव बनाते हैं। इनपुट मापदंडों के बिना आपको दर्जनों लिपियों की आवश्यकता होगी जो सभी समान काम कर रही हों लेकिन थोड़े अलग नामों के साथ।
इस सब को ध्यान में रखते हुए, कुछ अन्य उपयोगी इनपुट पैरामीटर हैं जिन्हें जानना एक अच्छा विचार है और मैं उन सभी को एक कोड स्निपेट में शामिल करूंगा।
अपनी ग्रीटिंगमे.श स्क्रिप्ट खोलें और इसे निम्नानुसार संशोधित करें:
#!/बिन/बैश
गूंज "फ़ाइल नाम: $0"
गूंज "प्रक्रिया आईडी: $$"
गूंज ""
गूंज "आपने $# नाम दर्ज किए"
गूंज "हैलो $@"
दबाएँ CTRL तथा हे फ़ाइल को सहेजने के लिए और CTRL तथा एक्स गमन करना।

अब, स्क्रिप्ट चलाएँ (अपने नाम से बदलें)।
श ग्रीटमे.शो
इस बार स्क्रिप्ट निम्नलिखित प्रदर्शित करती है:
फ़ाइल का नाम: ग्रीटिंगमे.शो
प्रक्रिया आईडी: 18595
आपने 2 नाम डाले
हैलो गैरी नेवेल

स्क्रिप्ट की पहली पंक्ति पर $0 आपके द्वारा चलाए जा रहे स्क्रिप्ट का नाम प्रदर्शित करता है। ध्यान दें कि यह डॉलर शून्य है और डॉलर ओ नहीं है।
दूसरी पंक्ति पर $$ आपके द्वारा चलाए जा रहे स्क्रिप्ट की प्रक्रिया आईडी प्रदर्शित करता है। यह उपयोगी क्यों है? यदि आप अग्रभूमि में कोई स्क्रिप्ट चला रहे हैं, तो आप इसे केवल दबाकर रद्द कर सकते हैं CTRL तथा सी. यदि आप पृष्ठभूमि में स्क्रिप्ट चलाते हैं और यह लूप करना शुरू कर देता है और एक ही काम को बार-बार करता है या आपके सिस्टम को नुकसान पहुंचाना शुरू कर देता है तो आपको इसे मारना होगा।
बैकग्राउंड में चल रही स्क्रिप्ट को खत्म करने के लिए, आपको स्क्रिप्ट की प्रोसेस आईडी की जरूरत होती है। क्या यह अच्छा नहीं होगा यदि स्क्रिप्ट ने अपने आउटपुट के हिस्से के रूप में प्रोसेस आईडी दी हो? (पीएस और किल कमांड के बारे में)
मुकम्मल करना...
अंत में, इससे पहले कि हम इस विषय को समाप्त करें, यह चर्चा करना महत्वपूर्ण है कि आउटपुट कहाँ जाता है। हर बार जब स्क्रिप्ट चलती है तो आउटपुट स्क्रीन पर प्रदर्शित होता है।
स्क्रिप्ट आउटपुट के लिए आउटपुट फ़ाइल में लिखा जाना काफी सामान्य है। ऐसा करने के लिए अपनी स्क्रिप्ट इस प्रकार चलाएँ:
श ग्रीटिंगमे.श गैरी > ग्रीटिंगमे.लॉग
ऊपर दिए गए कमांड में > चिन्ह "हैलो गैरी" टेक्स्ट को एक फाइल के लिए आउटपुट करता है जिसे ग्रीटिंगमे.लॉग कहा जाता है।
हर बार जब आप स्क्रिप्ट को > चिह्न के साथ चलाते हैं तो यह आउटपुट फ़ाइल की सामग्री को अधिलेखित कर देती है। यदि आप फ़ाइल में संलग्न करना पसंद करते हैं तो > को >> से बदलें।
अब आपको स्क्रीन पर टेक्स्ट लिखने और इनपुट पैरामीटर स्वीकार करने में सक्षम होना चाहिए।