Kif Tikteb u Uża Funzjonijiet u Libreriji Custom Shell


Fil-Linux, l-iskripts tal-qoxra jgħinuna f'ħafna modi differenti inkluż it-twettiq jew saħansitra l-awtomatizzazzjoni ta 'ċerti kompiti ta' amministrazzjoni tas-sistema, il-ħolqien ta 'għodod sempliċi tal-linja tal-kmand u ħafna aktar.

F'din il-gwida, se nuru utenti ġodda tal-Linux fejn jaħżnu b'mod affidabbli skripts tal-qoxra tad-dwana, jispjegaw kif tikteb funzjonijiet u libreriji tal-qoxra tad-dwana, tuża funzjonijiet minn libreriji fi skripts oħra.

Fejn taħżen Shell Scripts

Sabiex tmexxi l-iskripts tiegħek mingħajr ma ttajpja triq sħiħa/assoluta, dawn għandhom jinħażnu f'wieħed mid-direttorji fil-varjabbli tal-ambjent PATH.

Biex tiċċekkja l-PATH tiegħek, toħroġ il-kmand hawn taħt:

$ echo $PATH

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

Normalment, jekk il-bin tad-direttorju jeżisti fid-direttorju tad-dar tal-utenti, huwa awtomatikament inkluż fil-PATH tiegħu/tagħha. Tista' taħżen l-iskripts tal-qoxra tiegħek hawn.

Għalhekk, oħloq id-direttorju tal-bin (li jista 'wkoll jaħżen skripts Perl, Awk jew Python jew kwalunkwe programm ieħor):

$ mkdir ~/bin

Sussegwentement, oħloq direttorju msejjaħ lib (qosra għal libreriji) fejn iżżomm il-libreriji tiegħek stess. Tista 'wkoll iżżomm libreriji għal lingwi oħra bħal C, Python u l-bqija, fiha. Taħtha, oħloq direttorju ieħor imsejjaħ sh; dan se jaħżen b'mod partikolari l-libreriji tal-qoxra:

$ mkdir -p ~/lib/sh 

Oħloq il-Funzjonijiet u l-Libreriji tal-shell tiegħek stess

Funzjoni tal-qoxra hija grupp ta 'kmandi li jwettqu kompitu speċjali fi skript. Jaħdmu b'mod simili għal proċeduri, subroutines u funzjonijiet f'lingwi ta' programmar oħra.

Is-sintassi għall-kitba ta' funzjoni hija:

function_name() { list of commands }

Pereżempju, tista' tikteb funzjoni fi skript biex turi d-data kif ġej:

showDATE() {date;}

Kull darba li trid turi d-data, sempliċement invoka l-funzjoni hawn fuq billi tuża isimha:

$ showDATE

Librerija tal-qoxra hija sempliċement skript tal-qoxra, madankollu, tista 'tikteb librerija biex taħżen biss il-funzjonijiet tiegħek li aktar tard tista' ċċempel minn skripts tal-qoxra oħra.

Hawn taħt hemm eżempju ta 'librerija msejħa libMYFUNCS.sh fid-direttorju ~/lib/sh tiegħi b'aktar eżempji ta' funzjonijiet:

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

Issejvja l-fajl u agħmel l-iskrittura eżekutibbli.

Kif Tinvoka Funzjonijiet Minn Librerija

Biex tuża funzjoni f'lib, trid l-ewwelnett tinkludi l-lib fl-iskript tal-qoxra fejn se tintuża l-funzjoni, fil-formola hawn taħt:

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

Allura inti tuża l-funzjoni printUSERDETS mil-lib ~/lib/sh/libMYFUNCS.sh fi skript ieħor kif muri hawn taħt.

M'għandekx għalfejn tikteb kodiċi ieħor f'dan l-iskript biex tipprintja d-dettalji ta 'utent partikolari, sempliċement sejjaħ funzjoni eżistenti.

Iftaħ fajl ġdid bl-isem test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Issejvjah, imbagħad agħmel l-iskritt eżekutibbli u mexxih:

$ chmod 755 test.sh
$ ./test.sh 

F'dan l-artikolu, aħna wrejnek fejn taħżen b'mod affidabbli skripts tal-qoxra, kif tikteb il-funzjonijiet u l-libreriji tal-qoxra tiegħek stess, tinvoka funzjonijiet minn libreriji fi skripts tal-qoxra normali.

Sussegwentement, se nispjegaw mod sempliċi kif jiġi kkonfigurat Vim bħala IDE għall-iskript ta' Bash. Sa dakinhar, dejjem ibqa' konness ma' TecMint u aqsam ukoll il-ħsibijiet tiegħek dwar din il-gwida permezz tal-formola ta' feedback hawn taħt.