लिनक्स में, शेल स्क्रिप्ट्स कई अलग-अलग तरीकों से हमारी मदद करती हैं जिनमें कुछ सिस्टम एडमिनिस्ट्रेशन कार्यों को करने या यहां तक कि स्वचालित करना, सरल कमांड लाइन टूल्स बनाना और बहुत कुछ शामिल है।
इस गाइड में, हम नए लिनक्स उपयोगकर्ताओं को दिखाएंगे कि कस्टम शेल स्क्रिप्ट्स को विश्वसनीय रूप से कहां स्टोर करें, कस्टम शेल फंक्शन्स और लाइब्रेरीज़ कैसे लिखें, अन्य स्क्रिप्ट्स में लाइब्रेरीज़ से फंक्शन्स का उपयोग कैसे करें।
शेल स्क्रिप्ट्स कहां स्टोर करें
पूर्ण/निरपेक्ष पथ टाइप किए बिना अपनी स्क्रिप्ट्स चलाने के लिए, उन्हें $PATH एनवायरनमेंट वेरिएबल में डायरेक्टरीज़ में से एक में संग्रहीत किया जाना चाहिए।
अपना $PATH जांचने के लिए, नीचे दी गई कमांड जारी करें:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
आमतौर पर, यदि किसी उपयोगकर्ता की होम डायरेक्टरी में bin डायरेक्टरी मौजूद है, तो यह स्वचालित रूप से उसके $PATH में शामिल हो जाती है। आप यहां अपनी शेल स्क्रिप्ट्स स्टोर कर सकते हैं।
इसलिए, bin डायरेक्टरी बनाएं (जो Perl, Awk या Python स्क्रिप्ट्स या कोई अन्य प्रोग्राम भी स्टोर कर सकती है):
$ mkdir ~/bin
अगला, lib (लाइब्रेरीज़ का संक्षिप्त नाम) नामक एक डायरेक्टरी बनाएं जहां आप अपनी लाइब्रेरीज़ रखेंगे। आप इसमें C, Python आदि जैसी अन्य भाषाओं के लिए लाइब्रेरीज़ भी रख सकते हैं। इसके तहत, sh नामक एक और डायरेक्टरी बनाएं; यह विशेष रूप से आपके शेल लाइब्रेरीज़ को स्टोर करेगा:
$ mkdir -p ~/lib/sh
अपने स्वयं के शेल फंक्शन्स और लाइब्रेरीज़ बनाएं
एक शेल फंक्शन कमांड्स का एक समूह है जो स्क्रिप्ट में एक विशेष कार्य करता है। वे अन्य प्रोग्रामिंग भाषाओं में प्रक्रियाओं, सबरूटीन और फंक्शन्स के समान काम करते हैं।
फंक्शन लिखने का सिंटैक्स है:
function_name() { list of commands } उदाहरण के लिए, आप date दिखाने के लिए एक स्क्रिप्ट में फंक्शन लिख सकते हैं:
showDATE() {date;} हर बार जब आप date प्रदर्शित करना चाहते हैं, तो बस उपरोक्त फंक्शन को उसके नाम का उपयोग करके आमंत्रित करें:
$ showDATE
एक शेल लाइब्रेरी बस एक शेल स्क्रिप्ट है, हालांकि, आप एक लाइब्रेरी लिख सकते हैं जो केवल आपके फंक्शन्स को संग्रहीत करती है जिन्हें आप बाद में अन्य शेल स्क्रिप्ट्स से कॉल कर सकते हैं।
नीचे मेरे ~/lib/sh डायरेक्टरी में libMYFUNCS.sh नामक एक लाइब्रेरी का उदाहरण है जिसमें फंक्शन्स के अधिक उदाहरण हैं:
#!/bin/bash #PATH में डायरेक्टरीज़ को स्पष्ट रूप से सूचीबद्ध करने का फंक्शन showPATH() { oldifs="$IFS" #पुराना इंटरनल फील्ड सेपरेटर स्टोर करें IFS=: #नया इंटरनल फील्ड सेपरेटर निर्दिष्ट करें for DIR in $PATH ; do echo $DIR ; done IFS="$oldifs" #पुराना इंटरनल फील्ड सेपरेटर पुनर्स्थापित करें } #लॉग्ड इन उपयोगकर्ता दिखाने का फंक्शन showUSERS() { echo -e “Below are the user logged on the system:\n” w } #उपयोगकर्ता के विवरण प्रिंट करें printUSERDETS() { oldifs="$IFS" #पुराना इंटरनल फील्ड सेपरेटर स्टोर करें IFS=: #नया इंटरनल फील्ड सेपरेटर निर्दिष्ट करें read -p "Enter user name to be searched:" uname #उपयोगकर्ता नाम पढ़ें echo "" #कोलन को फील्ड डिलीमीटर के रूप में उपयोग करके हियर स्ट्रिंग से मान पढ़ें और वेरिएबल्स में स्टोर करें read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep "^$uname")" #कैप्चर किए गए मान प्रिंट करें echo -e "Username is : $username\n" echo -e "User's ID : $uid\n" echo -e "User's GID : $gid\n" echo -e "User's Comments : $comments\n" echo -e "User's Home Dir : $homedir\n" echo -e "User's Shell : $shell\n" IFS="$oldifs" #पुराना इंटरनल फील्ड सेपरेटर स्टोर करें } फ़ाइल सेव करें और स्क्रिप्ट को एक्जीक्यूटेबल बनाएं।
लाइब्रेरी से फंक्शन्स कैसे आमंत्रित करें
lib में फंक्शन का उपयोग करने के लिए, आपको सबसे पहले lib को उस शेल स्क्रिप्ट में शामिल करना होगा जहां फंक्शन का उपयोग किया जाएगा, निम्न रूप में:
$ ./path/to/lib OR $ source /path/to/lib
तो आप लाइब्रेरी ~/lib/sh/libMYFUNCS.sh से फंक्शन printUSERDETS को दूसरी स्क्रिप्ट में नीचे दिखाए अनुसार उपयोग करेंगे।
आपको इस स्क्रिप्ट में किसी विशेष उपयोगकर्ता के विवरण प्रिंट करने के लिए दूसरा कोड लिखने की आवश्यकता नहीं है, बस मौजूदा फंक्शन को कॉल करें।
test.sh नाम से एक नई फ़ाइल खोलें:
#!/bin/bash #lib शामिल करें . ~/lib/sh/libMYFUNCS.sh #lib से फंक्शन उपयोग करें printUSERDETS #स्क्रिप्ट से बाहर निकलें exit 0
इसे सेव करें, फिर स्क्रिप्ट को एक्जीक्यूटेबल बनाएं और चलाएं:
$ chmod 755 test.sh $ ./test.sh
इस लेख में, हमने आपको दिखाया कि शेल स्क्रिप्ट्स को विश्वसनीय रूप से कहां स्टोर करें, अपने स्वयं के शेल फंक्शन्स और लाइब्रेरीज़ कैसे लिखें, सामान्य शेल स्क्रिप्ट्स में लाइब्रेरीज़ से फंक्शन्स आमंत्रित करें।
अगला, हम बैश स्क्रिप्टिंग के लिए Vim को IDE के रूप में कॉन्फ़िगर करने का एक सीधा तरीका समझाएंगे। तब तक, हमेशा TecMint से जुड़े रहें और नीचे फीडबैक फॉर्म के माध्यम से इस गाइड के बारे में अपने विचार साझा करें।