ഇഷ്uടാനുസൃത ഷെൽ ഫംഗ്uഷനുകളും ലൈബ്രറികളും എങ്ങനെ എഴുതുകയും ഉപയോഗിക്കുകയും ചെയ്യാം


ലിനക്സിൽ, ചില സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ടാസ്ക്കുകൾ നിർവ്വഹിക്കുകയോ ഓട്ടോമേറ്റ് ചെയ്യുകയോ ചെയ്യുക, ലളിതമായ കമാൻഡ് ലൈൻ ടൂളുകൾ സൃഷ്ടിക്കുക, കൂടാതെ മറ്റു പലതും ഉൾപ്പെടെ നിരവധി വ്യത്യസ്ത വഴികളിൽ ഷെൽ സ്ക്രിപ്റ്റുകൾ ഞങ്ങളെ സഹായിക്കുന്നു.

ഈ ഗൈഡിൽ, പുതിയ ലിനക്സ് ഉപയോക്താക്കൾക്ക് ഇഷ്uടാനുസൃത ഷെൽ സ്uക്രിപ്റ്റുകൾ എവിടെയാണ് വിശ്വസനീയമായി സംഭരിക്കേണ്ടത്, ഇഷ്uടാനുസൃത ഷെൽ ഫംഗ്uഷനുകളും ലൈബ്രറികളും എങ്ങനെ എഴുതാമെന്നും മറ്റ് സ്uക്രിപ്റ്റുകളിലെ ലൈബ്രറികളിൽ നിന്നുള്ള ഫംഗ്uഷനുകൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നും ഞങ്ങൾ കാണിക്കും.

ഷെൽ സ്ക്രിപ്റ്റുകൾ എവിടെ സൂക്ഷിക്കണം

പൂർണ്ണമായ/സമ്പൂർണ പാത ടൈപ്പ് ചെയ്യാതെ നിങ്ങളുടെ സ്uക്രിപ്റ്റുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന്, അവ PATH എൻവയോൺമെന്റ് വേരിയബിളിലെ ഡയറക്uടറികളിലൊന്നിൽ സംഭരിച്ചിരിക്കണം.

നിങ്ങളുടെ PATH പരിശോധിക്കുന്നതിന്, താഴെയുള്ള കമാൻഡ് നൽകുക:

$ echo $PATH

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

സാധാരണയായി, ഒരു ഉപയോക്തൃ ഹോം ഡയറക്uടറിയിൽ ഡയറക്uടറി ബിൻ നിലവിലുണ്ടെങ്കിൽ, അത് അവന്റെ/അവളുടെ PATH-ൽ സ്വയമേവ ഉൾപ്പെടുത്തും. നിങ്ങളുടെ ഷെൽ സ്ക്രിപ്റ്റുകൾ ഇവിടെ സൂക്ഷിക്കാം.

അതിനാൽ, ബിൻ ഡയറക്ടറി സൃഷ്ടിക്കുക (ഇത് Perl, Awk അല്ലെങ്കിൽ Python സ്ക്രിപ്റ്റുകൾ അല്ലെങ്കിൽ മറ്റേതെങ്കിലും പ്രോഗ്രാമുകൾ സംഭരിച്ചേക്കാം):

$ mkdir ~/bin

അടുത്തതായി, നിങ്ങളുടെ സ്വന്തം ലൈബ്രറികൾ സൂക്ഷിക്കുന്ന ലിബ് (ലൈബ്രറികളുടെ ചുരുക്കം) എന്ന പേരിൽ ഒരു ഡയറക്ടറി സൃഷ്ടിക്കുക. സി, പൈത്തൺ തുടങ്ങിയ മറ്റ് ഭാഷകൾക്കായുള്ള ലൈബ്രറികളും നിങ്ങൾക്ക് അതിൽ സൂക്ഷിക്കാം. അതിനടിയിൽ, sh എന്ന മറ്റൊരു ഡയറക്ടറി ഉണ്ടാക്കുക; ഇത് നിങ്ങൾക്ക് പ്രത്യേകിച്ച് ഷെൽ ലൈബ്രറികൾ സംഭരിക്കും:

$ mkdir -p ~/lib/sh 

നിങ്ങളുടെ സ്വന്തം ഷെൽ ഫംഗ്ഷനുകളും ലൈബ്രറികളും സൃഷ്ടിക്കുക

ഒരു സ്ക്രിപ്റ്റിൽ ഒരു പ്രത്യേക ചുമതല നിർവഹിക്കുന്ന കമാൻഡുകളുടെ ഒരു കൂട്ടമാണ് ഷെൽ ഫംഗ്ഷൻ. മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകളിലെ നടപടിക്രമങ്ങൾ, സബ്റൂട്ടീനുകൾ, പ്രവർത്തനങ്ങൾ എന്നിവയ്ക്ക് സമാനമായി അവ പ്രവർത്തിക്കുന്നു.

ഒരു ഫംഗ്ഷൻ എഴുതുന്നതിനുള്ള വാക്യഘടന ഇതാണ്:

function_name() { list of commands }

ഉദാഹരണത്തിന്, തീയതി ഇനിപ്പറയുന്ന രീതിയിൽ കാണിക്കുന്നതിന് നിങ്ങൾക്ക് ഒരു സ്ക്രിപ്റ്റിൽ ഒരു ഫംഗ്ഷൻ എഴുതാം:

showDATE() {date;}

നിങ്ങൾ തീയതി പ്രദർശിപ്പിക്കാൻ ആഗ്രഹിക്കുന്ന ഓരോ തവണയും, മുകളിലുള്ള ഫംഗ്uഷൻ അതിന്റെ പേര് ഉപയോഗിച്ച് അഭ്യർത്ഥിക്കുക:

$ showDATE

ഒരു ഷെൽ ലൈബ്രറി കേവലം ഒരു ഷെൽ സ്ക്രിപ്റ്റ് ആണ്, എന്നിരുന്നാലും, മറ്റ് ഷെൽ സ്ക്രിപ്റ്റുകളിൽ നിന്ന് നിങ്ങൾക്ക് പിന്നീട് വിളിക്കാൻ കഴിയുന്ന നിങ്ങളുടെ ഫംഗ്ഷനുകൾ മാത്രം സംഭരിക്കുന്നതിന് നിങ്ങൾക്ക് ഒരു ലൈബ്രറി എഴുതാം.

ഫംഗ്uഷനുകളുടെ കൂടുതൽ ഉദാഹരണങ്ങളുള്ള എന്റെ ~/lib/sh ഡയറക്uടറിയിലെ libMYFUNCS.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
}

ഫയൽ സേവ് ചെയ്ത് സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ടബിൾ ആക്കുക.

ഒരു ലൈബ്രറിയിൽ നിന്ന് എങ്ങനെ പ്രവർത്തനങ്ങൾ അഭ്യർത്ഥിക്കാം

ഒരു ലിബിൽ ഒരു ഫംഗ്uഷൻ ഉപയോഗിക്കുന്നതിന്, ചുവടെയുള്ള ഫോമിൽ ഫംഗ്uഷൻ ഉപയോഗിക്കുന്ന ഷെൽ സ്uക്രിപ്uറ്റിൽ നിങ്ങൾ ആദ്യം ലിബ് ഉൾപ്പെടുത്തേണ്ടതുണ്ട്:

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

അതിനാൽ താഴെ കാണിച്ചിരിക്കുന്നതുപോലെ മറ്റൊരു സ്ക്രിപ്റ്റിൽ lib ~/lib/sh/libMYFUNCS.sh എന്നതിൽ നിന്നും നിങ്ങൾ printUSERDETS എന്ന ഫംഗ്ഷൻ ഉപയോഗിക്കും.

ഒരു പ്രത്യേക ഉപയോക്താവിന്റെ വിശദാംശങ്ങൾ പ്രിന്റ് ചെയ്യുന്നതിന് നിങ്ങൾ ഈ സ്ക്രിപ്റ്റിൽ മറ്റൊരു കോഡ് എഴുതേണ്ടതില്ല, നിലവിലുള്ള ഒരു ഫംഗ്ഷൻ വിളിക്കുക.

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 

ഈ ലേഖനത്തിൽ, ഷെൽ സ്ക്രിപ്റ്റുകൾ എവിടെയാണ് വിശ്വസനീയമായി സൂക്ഷിക്കേണ്ടത്, നിങ്ങളുടെ സ്വന്തം ഷെൽ ഫംഗ്ഷനുകളും ലൈബ്രറികളും എങ്ങനെ എഴുതാം, സാധാരണ ഷെൽ സ്ക്രിപ്റ്റുകളിൽ ലൈബ്രറികളിൽ നിന്ന് ഫംഗ്ഷനുകൾ അഭ്യർത്ഥിക്കുക എന്നിവ ഞങ്ങൾ കാണിച്ചുതന്നു.

അടുത്തതായി, ബാഷ് സ്uക്രിപ്റ്റിംഗിനുള്ള ഒരു ഐഡിഇ ആയി Vim കോൺഫിഗർ ചെയ്യുന്നതിനുള്ള ഒരു നേർവഴി ഞങ്ങൾ വിശദീകരിക്കും. അതുവരെ, TecMint-ലേക്ക് എപ്പോഴും ബന്ധം നിലനിർത്തുകയും താഴെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി ഈ ഗൈഡിനെക്കുറിച്ചുള്ള നിങ്ങളുടെ ചിന്തകൾ പങ്കിടുകയും ചെയ്യുക.