Kaip rašyti ir naudoti pasirinktines apvalkalo funkcijas ir bibliotekas


Linux sistemoje apvalkalo scenarijai mums padeda daugybe skirtingų būdų, įskaitant tam tikrų sistemos administravimo užduočių atlikimą ar net automatizavimą, paprastų komandinės eilutės įrankių kūrimą ir daug daugiau.

Šiame vadove naujiems Linux vartotojams parodysime, kur patikimai saugoti pasirinktinius apvalkalo scenarijus, paaiškinsime, kaip rašyti pasirinktines apvalkalo funkcijas ir bibliotekas, naudoti funkcijas iš bibliotekų kituose scenarijuose.

Kur saugoti „Shell“ scenarijus

Norint paleisti scenarijus neįvesdami viso/absoliutaus kelio, jie turi būti saugomi viename iš katalogų aplinkos kintamajame ` PATH.

Norėdami patikrinti savo ` KELIĄ, išduokite toliau pateiktą komandą:

echo $PATH

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

Paprastai, jei katalogas bin yra vartotojo namų kataloge, jis automatiškai įtraukiamas į jo ` KELIĄ. Čia galite saugoti savo apvalkalo scenarijus.

Todėl sukurkite katalogą bin (jame taip pat gali būti saugomi Perl, Awk arba Python scenarijai arba bet kurios kitos programos):

mkdir ~/bin

Tada sukurkite katalogą, pavadintą lib (sutrumpinimas nuo bibliotekų), kuriame saugosite savo bibliotekas. Jame taip pat galite laikyti bibliotekas kitoms kalboms, pvz., C, Python ir pan. Po juo sukurkite kitą katalogą pavadinimu sh; tai ypač saugos jums apvalkalo bibliotekas:

mkdir -p ~/lib/sh 

Sukurkite savo apvalkalo funkcijas ir bibliotekas

Apvalkalo funkcija yra komandų, atliekančių specialią užduotį scenarijuje, grupė. Jie veikia panašiai kaip procedūros, paprogramės ir funkcijos kitose programavimo kalbose.

Funkcijos rašymo sintaksė yra tokia:

function_name() { list of commands }

Pavyzdžiui, scenarijuje galite parašyti funkciją, kad būtų rodoma data:

showDATE() {date;}

Kiekvieną kartą, kai norite rodyti datą, tiesiog iškvieskite aukščiau pateiktą funkciją naudodami jos pavadinimą:

showDATE

Apvalkalo biblioteka yra tiesiog apvalkalo scenarijus, tačiau galite įrašyti biblioteką, kad saugotumėte tik savo funkcijas, kurias vėliau galėsite iškviesti iš kitų apvalkalo scenarijų.

Toliau pateikiamas bibliotekos, pavadintos libMYFUNCS.sh, esančios mano ~/lib/sh kataloge, pavyzdys su daugiau funkcijų pavyzdžių:

#!/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
}

Išsaugokite failą ir padarykite scenarijų vykdomąjį.

Kaip iškviesti funkcijas iš bibliotekos

Norėdami naudoti funkciją lib, pirmiausia turite įtraukti lib į apvalkalo scenarijų, kuriame funkcija bus naudojama, toliau pateiktoje formoje:

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

Taigi kitame scenarijuje, kaip parodyta toliau, naudotumėte funkciją printUSERDETS iš lib ~/lib/sh/libMYFUNCS.sh.

Šiame scenarijuje nereikia rašyti kito kodo, kad išspausdintumėte konkretaus vartotojo duomenis, tiesiog iškvieskite esamą funkciją.

Atidarykite naują failą pavadinimu test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Išsaugokite jį, tada padarykite scenarijų vykdomąjį ir paleiskite jį:

chmod 755 test.sh
./test.sh 

Šiame straipsnyje mes parodėme, kur patikimai saugoti apvalkalo scenarijus, kaip parašyti savo apvalkalo funkcijas ir bibliotekas, iškviesti funkcijas iš bibliotekų įprastuose apvalkalo scenarijuose.

Toliau paaiškinsime, kaip tiksliai sukonfigūruoti Vim kaip IDE Bash scenarijui. Iki tol visada palaikykite ryšį su TecMint ir pasidalykite savo mintimis apie šį vadovą naudodami toliau pateiktą atsiliepimų formą.