Omörite gabyk funksiýalaryny we kitaphanalaryny nädip ýazmaly we ulanmaly
Linux-da gabyk skriptleri bize dürli ulgam usullaryny ýerine ýetirmek ýa-da awtomatlaşdyrmak, ýönekeý buýruk setir gurallaryny döretmek we başga-da köp dürli kömek edýär.
Bu gollanmada, ýörite Linux skriptlerini ygtybarly saklamaly, ýörite gabyk funksiýalaryny we kitaphanalary nädip ýazmalydygyny, beýleki skriptlerdäki kitaphanalardan funksiýalary nädip ulanmalydygyny düşündirjek täze Linux ulanyjylaryny görkezeris.
Gabyk skriptlerini nirede saklamaly
Ripazgylaryňyzy doly/mutlak ýol ýazmazdan işletmek üçin, PATH gurşaw üýtgeýjisindäki kataloglaryň birinde saklanmalydyr.
PATH-yňyzy barlamak üçin aşakdaky buýrugy berýär:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Adatça, ulanyjylaryň öý bukjasynda katalog binasy bar bolsa, awtomatiki usulda PATH-a goşulýar. Gabyk skriptleriňizi şu ýerde saklap bilersiňiz.
Şonuň üçin bin bukjasyny dörediň (Perl, Awk ýa-da Python skriptlerini ýa-da başga programmalary hem saklap biler):
$ mkdir ~/bin
Ondan soň, öz kitaphanalaryňyzy saklar ýaly lib (kitaphanalar üçin gysga) atly katalog dörediň. Şeýle hem, C, Python we ş.m. ýaly beýleki diller üçin kitaphanalary saklap bilersiňiz. Onuň aşagynda sh atly başga bir katalog dörediň; bu esasanam size gabyk kitaphanalaryny saklar:
$ mkdir -p ~/lib/sh
Öz gabyk funksiýalaryňyzy we kitaphanalaryňyzy dörediň
Gabyk funksiýasy, skriptde aýratyn bir işi ýerine ýetirýän buýruklar toparydyr. Beýleki programmirleme dillerindäki proseduralara, subroutinalara we funksiýalara meňzeş işleýärler.
Funksiýa ýazmagyň sintaksisidir:
function_name() { list of commands }
Mysal üçin, senäni aşakdaky ýaly görkezmek üçin skriptde bir funksiýa ýazyp bilersiňiz:
showDATE() {date;}
Her gezek senäni görkezmek isläniňizde, adyny ulanyp ýokardaky funksiýany çagyryň:
$ showDATE
Gabyk kitaphanasy diňe bir gabyk skriptidir, ýöne diňe beýleki gabyk skriptlerinden jaň edip boljak funksiýalaryňyzy saklamak üçin kitaphana ýazyp bilersiňiz.
Aşakda has köp funksiýa mysallary bolan ~/lib/sh katalogymda libMYFUNCS.sh atly kitaphananyň mysaly bar:
#!/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 }
Faýly ýazdyryň we skripti ýerine ýetirip bilersiňiz.
Kitaphanadan funksiýalary nädip çagyrmaly
Lib-de bir funksiýany ulanmak üçin ilki bilen libiň aşakdaky görnüşde funksiýanyň ulanyljak gabyk skriptine girizilmegi zerur:
$ ./path/to/lib OR $ source /path/to/lib
Şeýlelik bilen, lib ~/lib/sh/libMYFUNCS.sh-den printUSERDETS funksiýasyny aşakda görkezilişi ýaly başga bir skriptde ulanarsyňyz.
Belli bir ulanyjynyň jikme-jikliklerini çap etmek üçin bu skriptde başga bir kod ýazmak hökman däl, diňe bar bolan funksiýa jaň ediň.
Test.sh ady bilen täze faýl açyň:
#!/bin/bash #include lib . ~/lib/sh/libMYFUNCS.sh #use function from lib printUSERDETS #exit script exit 0
Saklaň, soňra skripti ýerine ýetirip, işlediň:
$ chmod 755 test.sh $ ./test.sh
Bu makalada, gabyk skriptlerini nirede ygtybarly saklamalydygyny, öz gabyk funksiýalaryňyzy we kitaphanalaryňyzy nädip ýazmalydygyny, adaty gabyk skriptlerinde kitaphanalardan funksiýalary ulanmagyňyzy görkezdik.
Indiki, Vim-i Baş skripti üçin IDE hökmünde düzmegiň göni öňe gidiş usulyny düşündireris. Oňa çenli hemişe TecMint bilen baglanyşykda boluň we aşakdaky gollanma formasy arkaly bu gollanma baradaky pikirleriňizi paýlaşyň.