Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

कस्टम शैल फ़ंक्शंस और पुस्तकालयों को कैसे लिखें और उपयोग करें

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

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

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

एक पूर्ण/पूर्ण पथ टाइप किए बिना आपकी स्क्रिप्ट चलाने के लिए, उन्हें $PATH में किसी एक निर्देशिका में संग्रहीत किया जाना चाहिए पर्यावरण चर।

अपने $PATH . की जांच करने के लिए , निम्न आदेश जारी करता है:

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

आम तौर पर, यदि निर्देशिका बिन उपयोगकर्ता की होम निर्देशिका में मौजूद है, यह स्वचालित रूप से उसके $PATH . में शामिल हो जाता है . आप अपनी शेल स्क्रिप्ट यहां स्टोर कर सकते हैं।

इसलिए, बिन . बनाएं निर्देशिका (जो पर्ल . को भी स्टोर कर सकती है) , अवेक या पायथन स्क्रिप्ट या कोई अन्य प्रोग्राम):

$ mkdir ~/bin

इसके बाद, lib . नामक निर्देशिका बनाएं (पुस्तकालयों के लिए संक्षिप्त) जहाँ आप अपने पुस्तकालय रखेंगे। आप इसमें अन्य भाषाओं जैसे C, Python आदि के लिए लाइब्रेरी भी रख सकते हैं। इसके अंतर्गत, sh . नामक एक अन्य निर्देशिका बनाएं; यह विशेष रूप से आपको शेल लाइब्रेरी स्टोर करेगा:

$ mkdir -p ~/lib/sh 

अपना खुद का शेल फंक्शंस और लाइब्रेरी बनाएं

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

फंक्शन लिखने का सिंटैक्स है:

function_name() { list of commands }

उदाहरण के लिए, आप तारीख . दिखाने के लिए स्क्रिप्ट में फ़ंक्शन लिख सकते हैं इस प्रकार है:

showDATE() {date;}

हर बार जब आप तारीख प्रदर्शित करना चाहते हैं , बस इसके नाम का उपयोग करके ऊपर दिए गए फ़ंक्शन का आह्वान करें:

$ showDATE

एक खोल पुस्तकालय केवल एक शेल स्क्रिप्ट है, हालांकि, आप केवल अपने कार्यों को संग्रहीत करने के लिए एक पुस्तकालय लिख सकते हैं जिसे आप बाद में अन्य शेल स्क्रिप्ट से कॉल कर सकते हैं।

नीचे libMYFUNCS.sh called नामक लाइब्रेरी का एक उदाहरण दिया गया है मेरे ~/lib/sh . में कार्यों के अधिक उदाहरणों के साथ निर्देशिका:

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        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"         #store old internal field separator
}

फ़ाइल को सहेजें और स्क्रिप्ट को निष्पादन योग्य बनाएं।

लाइब्रेरी से कार्यों को कैसे आमंत्रित करें

किसी फ़ंक्शन को lib . में उपयोग करने के लिए , आपको सबसे पहले lib . को शामिल करना होगा शेल स्क्रिप्ट में जहां फ़ंक्शन का उपयोग किया जाएगा, नीचे दिए गए फॉर्म में:

$ ./path/to/lib
OR
$ source /path/to/lib

तो आप printUSERDETS function फ़ंक्शन का उपयोग करेंगे काम से ~/lib/sh/libMYFUNCS.sh किसी अन्य स्क्रिप्ट में जैसा कि नीचे दिखाया गया है।

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

test.sh . नाम से एक नई फ़ाइल खोलें :

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

इसे सेव करें, फिर स्क्रिप्ट को एक्जीक्यूटेबल बनाएं और इसे रन करें:

$ chmod 755 test.sh
$ ./test.sh 
कस्टम शैल फ़ंक्शंस और पुस्तकालयों को कैसे लिखें और उपयोग करें

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

इसके बाद, हम विम . को कॉन्फ़िगर करने का एक सीधा तरीका बताएंगे एक आईडीई . के रूप में बैश स्क्रिप्टिंग के लिए। तब तक, हमेशा TecMint से जुड़े रहें और नीचे दिए गए फीडबैक फॉर्म के माध्यम से इस गाइड के बारे में अपने विचार साझा करें।


  1. अपने शैल लिपियों में लूप तक कैसे उपयोग करें

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

  1. शेल स्क्रिप्टिंग में हेरेडोक का उपयोग कैसे करें

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

  1. iOS 13 में एनएफसी टैग का उपयोग, पढ़ने और लिखने का तरीका

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