Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

कस्टम शेल फंक्शन्स और लाइब्रेरीज़ मास्टर करें: लिनक्स उपयोगकर्ताओं के लिए व्यावहारिक मार्गदर्शिका

लिनक्स में, शेल स्क्रिप्ट्स कई अलग-अलग तरीकों से हमारी मदद करती हैं जिनमें कुछ सिस्टम एडमिनिस्ट्रेशन कार्यों को करने या यहां तक कि स्वचालित करना, सरल कमांड लाइन टूल्स बनाना और बहुत कुछ शामिल है।

इस गाइड में, हम नए लिनक्स उपयोगकर्ताओं को दिखाएंगे कि कस्टम शेल स्क्रिप्ट्स को विश्वसनीय रूप से कहां स्टोर करें, कस्टम शेल फंक्शन्स और लाइब्रेरीज़ कैसे लिखें, अन्य स्क्रिप्ट्स में लाइब्रेरीज़ से फंक्शन्स का उपयोग कैसे करें।

शेल स्क्रिप्ट्स कहां स्टोर करें

पूर्ण/निरपेक्ष पथ टाइप किए बिना अपनी स्क्रिप्ट्स चलाने के लिए, उन्हें $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 से जुड़े रहें और नीचे फीडबैक फॉर्म के माध्यम से इस गाइड के बारे में अपने विचार साझा करें।


  1. Bash  Until  लूप को मास्टर करें: शेल स्क्रिप्ट्स के लिए चरण-दर-चरण गाइड Bash 'Until' लूप को मास्टर करें: शेल स्क्रिप्ट्स के लिए चरण-दर-चरण गाइड

    Bash में for, while, और until तीन लूप निर्माण हैं। जबकि प्रत्येक लूप सिंटैक्टिकली और कार्यात्मक रूप से भिन्न होता है, उनका उद्देश्य एक निश्चित अभिव्यक्ति के मूल्यांकन होने पर कोड ब्लॉक पर पुनरावृति करना है। Until लूप का उपयोग कोड ब्लॉक को तब तक निष्पादित करने के लिए किया जाता है जब तक कि अभिव्यक्ति

  1. शेल स्क्रिप्टिंग में Heredoc मास्टर करें: एक व्यावहारिक गाइड शेल स्क्रिप्टिंग में Heredoc मास्टर करें: एक व्यावहारिक गाइड

    हियर डॉक्यूमेंट (Heredoc) एक इनपुट या फ़ाइल स्ट्रीम लिटरल है जिसे कोड के एक विशेष ब्लॉक के रूप में माना जाता है। कोड का यह ब्लॉक प्रोसेसिंग के लिए एक कमांड को पास किया जाएगा। Heredoc UNIX शेल्स में उत्पन्न होता है और sh, tcsh, ksh, bash, zsh, csh जैसे लोकप्रिय लिनक्स शेल्स में पाया जा सकता है। विशेष

  1. iOS 13 पर NFC टैग संचालन में महारत हासिल करें: पढ़ना, लिखना और स्मार्ट टैग का उपयोग करना iOS 13 पर NFC टैग संचालन में महारत हासिल करें: पढ़ना, लिखना और स्मार्ट टैग का उपयोग करना

    स्मार्टफोन के नवीनतम संस्करणों के साथ, NFC वह सुविधा है जो एक फोन से दूसरे फोन में सूचना स्थानांतरित करने में मदद कर सकती है। NFC Near Field Communication का संक्षिप्त नाम है। यह एक वायरलेस कनेक्शन है जिसका उपयोग स्मार्टफोन से जानकारी स्थानांतरित करने और प्राप्त करने के लिए किया जा सकता है। यह सुविध