Weboldal keresés

Egyéni shell-függvények és könyvtárak írása és használata


Linuxban a shell szkriptek nagyon sokféle módon segítenek nekünk, beleértve bizonyos rendszeradminisztrációs feladatok végrehajtását vagy akár automatizálását, egyszerű parancssori eszközök létrehozását és még sok mást.

Ebben az útmutatóban bemutatjuk az új Linux-felhasználóknak, hol tárolhatnak megbízhatóan egyedi shell-szkripteket, elmagyarázzuk, hogyan írhatnak egyedi shell-függvényeket és könyvtárakat, valamint hogyan használhatják a függvénytárak függvényeit más szkriptekben.

Hol tárolhatja a Shell-szkripteket

Annak érdekében, hogy a szkriptek teljes/abszolút elérési út beírása nélkül futhassanak, azokat a ` PATH környezeti változó valamelyik könyvtárában kell tárolni.

A ` PATH ellenőrzéséhez adja ki az alábbi parancsot:

echo $PATH

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

Normál esetben, ha a bin könyvtár létezik a felhasználó saját könyvtárában, akkor automatikusan bekerül a ` PATH-jába. Itt tárolhatja shell szkriptjeit.

Ezért hozza létre a bin könyvtárat (amelyben Perl, Awk vagy Python szkriptek vagy bármely más program is tárolható):

mkdir ~/bin

Ezután hozzon létre egy lib nevű könyvtárat (a könyvtárak rövidítése), ahol a saját könyvtárait fogja tartani. Megtarthat benne könyvtárakat más nyelvekhez is, például C, Python és így tovább. Alatta hozzon létre egy másik könyvtárat sh néven; ez különösen a shell könyvtárakat tárolja:

mkdir -p ~/lib/sh 

Hozzon létre saját shell-függvényeket és könyvtárakat

A héjfüggvény olyan parancsok csoportja, amelyek speciális feladatot hajtanak végre egy szkriptben. Hasonlóan működnek, mint más programozási nyelvek eljárásai, szubrutinjai és függvényei.

A függvény írásának szintaxisa a következő:

function_name() { list of commands }

Például írhat egy függvényt egy szkriptbe a dátum megjelenítéséhez, az alábbiak szerint:

showDATE() {date;}

Minden alkalommal, amikor meg szeretné jeleníteni a dátumot, egyszerűen hívja meg a fenti függvényt a nevével:

showDATE

A shell-könyvtár egyszerűen egy shell-szkript, azonban írhat olyan könyvtárat, amely csak azokat a függvényeket tárolja, amelyeket később meghívhat más shell-szkriptekből.

Az alábbiakban egy példa látható a libMYFUNCS.sh nevű könyvtárra a ~/lib/sh könyvtárban, további példákkal a függvényekre:

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

Mentse el a fájlt, és tegye futtathatóvá a szkriptet.

Hogyan lehet függvényeket meghívni egy könyvtárból

Ha egy függvényt lib-ben szeretne használni, először is fel kell vennie a lib-et abban a shell-szkriptben, amelyben a függvényt használni fogja, az alábbi formában:

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

Tehát a printUSERDETS függvényt a lib ~/lib/sh/libMYFUNCS.sh állományából egy másik szkriptben használja, az alábbiak szerint.

Nem kell másik kódot írnia ebbe a szkriptbe egy adott felhasználó adatainak kinyomtatásához, egyszerűen hívjon meg egy meglévő függvényt.

Nyisson meg egy új fájlt test.sh néven:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Mentse el, majd tegye végrehajthatóvá a szkriptet, és futtassa:

chmod 755 test.sh
./test.sh 

Ebben a cikkben megmutattuk, hol tárolhatja megbízhatóan a shell-szkripteket, hogyan írhat saját shell-függvényeket és -könyvtárakat, hogyan hívhat meg függvényeket könyvtárakból normál shell-szkriptekben.

Ezután elmagyarázzuk a Vim IDEként való konfigurálásának egyszerű módját a Bash szkriptekhez. Addig is maradjon kapcsolatban a TecMinttel, és ossza meg gondolatait ezzel az útmutatóval kapcsolatban az alábbi visszajelzési űrlapon keresztül.