लिनक्स शैल लिपियों को लिखने के लिए शुरुआती गाइड
शुरुआत के लिए - चलिए उस शीर्षक को स्पष्ट करते हैं। लिनक्स में एक से अधिक संभावित खोल हैं, और उनमें से कोई भी स्क्रिप्टिंग एक विषय है जो आसानी से एक पूर्ण पुस्तक पैक कर सकता है। हम जो करने जा रहे हैं वह एक बैश स्क्रिप्ट के मूल तत्वों को कवर कर रहा है। यदि आप नहीं जानते कि आप किस शैल का उपयोग कर रहे हैं, तो शायद यह बाश है । यह प्रक्रिया किसी भी व्यक्ति से परिचित होगी जिसने डॉस की बल्ले फाइलों के साथ काम किया है, यह अनिवार्य रूप से एक ही अवधारणा है। आप बस एक पाठ फ़ाइल में कमांड की एक श्रृंखला डालते हैं और इसे चलाते हैं। अंतर इस तथ्य से आता है कि बैश स्क्रिप्ट बैच फ़ाइलों की तुलना में बहुत अधिक कर सकती हैं। वास्तव में, बैश स्क्रिप्टिंग पाइथन जैसी पूर्ण भाषा से बहुत दूर नहीं है। आज हम इनपुट, आउटपुट, तर्क और चर जैसे कुछ मूलभूत बातें शामिल करेंगे।
नोट : अगर हम वास्तव में तकनीकी प्राप्त करना चाहते हैं, तो बैश केवल लिनक्स-केवल खोल नहीं है। निम्नलिखित में से अधिकांश (हालांकि संभवतः सभी नहीं) मैक ओएसएक्स और बीएसडी सहित किसी भी यूनिक्स-प्रकार प्रणाली पर लागू होंगे।
नमस्ते दुनिया
"हैलो वर्ल्ड!" शब्दों को आउटपुट करने के लिए एक सरल स्क्रिप्ट बनाकर एक नई "भाषा" शुरू करना परंपरा है। यह काफी आसान है, बस अपना पसंदीदा टेक्स्ट एडिटर खोलें और निम्न दर्ज करें:
#! / बिन / बैश गूंज हैलो वर्ल्ड!
केवल दो पंक्तियों के साथ, यह एक बहुत आसान नहीं हो सकता है, लेकिन वह पहली पंक्ति, #! / बिन / बैश, तुरंत स्पष्ट नहीं हो सकती है। पहले दो अक्षर (जिसे अक्सर हैशबैंग कहा जाता है) एक विशेष संकेत हैं। यह लिनक्स को बताता है कि इस स्क्रिप्ट को / bin / bash shell के माध्यम से चलाया जाना चाहिए, क्योंकि सी शैल या कॉर्न शैल या अन्य कुछ भी जो आपने स्थापित किया हो। इसके बिना, लिनक्स के बारे में बताने के लिए कोई आसान तरीका नहीं है कि यह किस तरह की शैल स्क्रिप्ट है। एक पाइथन लिपि, उदाहरण के लिए, शायद #! / Usr / bin / python जैसे कुछ के साथ शुरू होगी।
उसके बाद केवल गूंज कथन है, जो टर्मिनल (तकनीकी रूप से, मानक आउटपुट के लिए ) के बाद शब्दों को प्रिंट करता है।
आपकी स्क्रिप्ट चल रहा है
जैसा कि अक्सर लिनक्स के मामले में होता है, इस काम को करने के कई तरीके हैं। सबसे बुनियादी तरीका बैश को मैन्युअल रूप से कॉल करना होगा और इसे स्क्रिप्ट फ़ाइल को फ़ीड करना होगा
# फ़िलनाम कुछ भी हो सकता है, .sh शैल स्क्रिप्ट के लिए एक आम प्रथा है। bash myscript.sh
चतुर पाठक सोच रहे होंगे " लेकिन रुको, क्या हमने उस हैशबैंग चीज़ को नहीं रखा है, इसलिए यह बैश का उपयोग करने के बारे में जानेगा? मुझे मैन्युअल रूप से बैश चलाने के लिए क्यों किया गया था? "और जवाब है" आपने नहीं किया "। कम से कम, यदि आपके पास स्क्रिप्ट निष्पादन योग्य बनाने के लिए कुछ समय लगा है तो आपके पास नहीं होगा।
पिछले उदाहरण में, हमने बैश लॉन्च किया और इसे स्क्रिप्ट भेज दी। अब हम स्क्रिप्ट निष्पादन योग्य बनाकर कुछ भविष्य का समय बचाएंगे, इसलिए हमें मैन्युअल रूप से बैश चलाने की आवश्यकता नहीं है। यह एक ही कमांड के रूप में आसान है।
chmod + x myscript.sh
और अब इसे सीधे फ़ाइल नाम से चलाया जा सकता है।
चर और तर्क
बैश में वेरिएबल्स कुछ अन्य स्क्रिप्टिंग भाषाओं की तुलना में थोड़ा अधिक भ्रमित हो सकता है, आंशिक रूप से क्योंकि उन्हें कभी-कभी $ चरित्र के साथ prefaced होना चाहिए और कभी-कभी नहीं - आप जो कर रहे हैं उसके आधार पर। निम्नलिखित उदाहरण लें।
पथ = $ पथ: / घर / जोश / लिपियों
हम एक ही परिवर्तनीय, पथ, दो बार संदर्भित करते हैं। एक बार कोई $ नहीं है, लेकिन दूसरी बार वहाँ है। ऐसे कई तरीके हैं जिन्हें आप याद कर सकते हैं जब एक $ उचित है, लेकिन यह लेखक "बात करने" रूपक का उपयोग करता है। यदि मैं परिवर्तनीय से बात कर रहा हूं (जैसे इसे एक नया मान निर्दिष्ट करना) मैं इसे छोटे नाम से कॉल करता हूं, इस मामले में पथ। यदि मैं एक चर के बारे में बात कर रहा हूं (जैसे कि वर्तमान मूल्य प्राप्त करना) इसे अधिक औपचारिक शीर्षक ($ PATH) मिलता है। इस डिजाइन की सटीक तर्क और आंतरिक कार्यप्रणाली इस मार्गदर्शिका के दायरे से बाहर है, इसलिए बस याद रखने की कोशिश करें कि यदि आप एक चर में जानकारी लाने की कोशिश कर रहे हैं तो आपको $ शामिल करने की आवश्यकता है।
अब हम अपनी लिपि में एक चर का उपयोग करने जा रहे हैं। निम्न की तरह दिखने के लिए दूसरी पंक्ति बदलें:
#! / bin / bash echo हैलो $ 1!
और अपनी स्क्रिप्ट को फिर से चलाएं, लेकिन इस बार स्क्रिप्ट नाम के बाद आपका नाम शामिल करें।
बैश आपके लिए कुछ चर निर्दिष्ट करता है, जिसमें $ 1, $ 2 आदि जैसे कुछ शामिल हैं, जिनमें प्रत्येक तर्क स्क्रिप्ट को पास किया जाता है। वैरिएबल को फिर से असाइन किया जा सकता है और जिस तरह से आप चाहें उसका नाम बदल सकते हैं, ताकि आप पिछली लिपि को फिर से लिख सकें
#! / bin / bash firstname = $ 1 lastname = $ 2 echo हैलो $ firstname $ lastname!
जैसा कि आप देख सकते हैं, वैरिएबल को मान निर्दिष्ट करते समय कोई $ संकेत नहीं हैं, लेकिन जानकारी खींचते समय आपको उनकी आवश्यकता होती है।
कंडीशनर और लूप्स
डेटा के माध्यम से विश्लेषण या लूप करने की क्षमता के बिना कोई स्क्रिप्ट बहुत दूर नहीं हो सकती है। कार्रवाई का एक कोर्स निर्धारित करने का सबसे आम तरीका है अगर कथन का उपयोग करना है। यह आपके काम की अपेक्षा करता है - अगर कुछ ऐसा करता है तो ईएलएसई कुछ अलग करता है। यह उदाहरण वेरिएबल प्रथम नाम में संग्रहीत वर्णों की स्ट्रिंग की तुलना करता है और इसे कुछ हार्डकोड किए गए टेक्स्ट से तुलना करता है। यदि वे मेल खाते हैं, तो यह विशेष आउटपुट प्रिंट करता है। अन्यथा, यह सामान्य के रूप में जारी है।
#! / bin / bash firstname = $ 1 lastname = $ 2 अगर ["$ firstname" == "जोश"] तो "क्या एक महान नाम" गूंजें और हैलो $ firstname $ lastname गूंजें! फाई
अंत में, अगला मुख्य घटक बैश की डेटा पर लूप करने की क्षमता है। बैश के लिए सामान्य लूपिंग तंत्र फॉर, व्हाइल, और यूएनटीआईएल हैं। हम थोड़ी देर के साथ शुरू करेंगे, क्योंकि यह सबसे आसान है।
#! / bin / bash counter = 0 # जबकि काउंटर 10 से कम है, जबकि लूपिंग रखें [$ counter -lt 50]; echo $ काउंटर काउंटर = काउंटर + 1 किया है
वह उदाहरण एक काउंटर वैरिएबल बनाता है, थोड़ी देर लूप शुरू करता है, और इस मामले में सीमा तक पहुंचने तक लूपिंग (और काउंटर में एक जोड़ना) जारी रहता है। लूप पूरा हो जाने के बाद किए गए कथन के बाद कुछ भी निष्पादित हो जाएगा।
यूएनटीआईएल समान रूप से संचालित होता है, लेकिन WHILE के विपरीत के रूप में। थोड़ी देर लूप तब तक जारी रहेगा जब तक इसकी अभिव्यक्ति सही न हो (50 से कम काउंटर)। जब तक लूप विपरीत दृष्टिकोण नहीं लेता है, और इसके रूप में लिखा जाएगा
[$ counter -gt 50] तक; कर
इस उदाहरण में, "50 से कम" और "50 से अधिक होने तक" के लगभग समान परिणाम होंगे (अंतर यह है कि इसमें 50 नंबर स्वयं शामिल होगा, और दूसरा नहीं होगा। यह देखने के लिए कि आप कौन से हैं, और क्यों।)
निष्कर्ष
जैसा कि ऊपर बताया गया है, यह बैश स्क्रिप्टिंग की शक्ति को पूरी तरह से प्रदर्शित करने के लिए एक एकल प्रारंभ लेख से बहुत अधिक ले जाएगा। यहां दिखाए गए टुकड़े बैश संचालित करने के मूल घटकों के रूप में देखे जा सकते हैं, और लिनक्स में शेल स्क्रिप्टिंग के पीछे आपको बुनियादी सिद्धांत दिखाने के लिए पर्याप्त होना चाहिए। यदि आप वास्तव में गड़बड़ में जाना चाहते हैं और कुछ महान स्क्रिप्ट बनाना शुरू करना चाहते हैं, तो यहां जीएनयू की आधिकारिक बैश संदर्भ मार्गदर्शिका देखें। हैप्पी स्क्रिप्टिंग!