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.