Hvordan skrive og bruke tilpassede skallfunksjoner og biblioteker


I Linux hjelper shell-skript oss på så mange forskjellige måter, inkludert å utføre eller til og med automatisere visse systemadministrasjonsoppgaver, lage enkle kommandolinjeverktøy og mange flere.

I denne veiledningen vil vi vise nye Linux-brukere hvor de kan lagre tilpassede shell-skript på en pålitelig måte, forklare hvordan man skriver egendefinerte shell-funksjoner og biblioteker, bruke funksjoner fra biblioteker i andre skript.

Hvor skal du lagre Shell-skript

For å kjøre skriptene dine uten å skrive en full/absolutt bane, må de lagres i en av katalogene i miljøvariabelen ` PATH.

For å sjekke ` PATH, utsted kommandoen nedenfor:

echo $PATH

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

Normalt, hvis katalogen bin finnes i en brukers hjemmekatalog, blir den automatisk inkludert i hans/hennes ` PATH. Du kan lagre skallskriptene dine her.

Opprett derfor bin-katalogen (som også kan lagre Perl-, Awk- eller Python-skript eller andre programmer):

mkdir ~/bin

Deretter oppretter du en katalog som heter lib (forkortelse for biblioteker) der du vil beholde dine egne biblioteker. Du kan også beholde biblioteker for andre språk som C, Python og så videre i den. Under den, lag en annen katalog kalt sh; dette vil spesielt lagre skallbibliotekene dine:

mkdir -p ~/lib/sh 

Lag dine egne skallfunksjoner og biblioteker

En skallfunksjon er en gruppe kommandoer som utfører en spesiell oppgave i et skript. De fungerer på samme måte som prosedyrer, subrutiner og funksjoner i andre programmeringsspråk.

Syntaksen for å skrive en funksjon er:

function_name() { list of commands }

Du kan for eksempel skrive en funksjon i et skript for å vise datoen som følger:

showDATE() {date;}

Hver gang du vil vise dato, aktiverer du funksjonen ovenfor ved å bruke navnet:

showDATE

Et shell-bibliotek er ganske enkelt et shell-skript, men du kan skrive et bibliotek for kun å lagre funksjonene dine som du senere kan ringe fra andre shell-skript.

Nedenfor er et eksempel på et bibliotek kalt libMYFUNCS.sh i katalogen min ~/lib/sh med flere eksempler på funksjoner:

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

Lagre filen og gjør skriptet kjørbart.

Slik aktiverer du funksjoner fra et bibliotek

For å bruke en funksjon i en lib, må du først og fremst inkludere lib i skallskriptet der funksjonen skal brukes, i skjemaet nedenfor:

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

Så du vil bruke funksjonen printUSERDETS fra lib ~/lib/sh/libMYFUNCS.sh i et annet skript som vist nedenfor.

Du trenger ikke å skrive en annen kode i dette skriptet for å skrive ut en bestemt brukers detaljer, bare kall en eksisterende funksjon.

Åpne en ny fil med navnet test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Lagre det, gjør deretter skriptet kjørbart og kjør det:

chmod 755 test.sh
./test.sh 

I denne artikkelen viste vi deg hvor du kan lagre skallskript på en pålitelig måte, hvordan du skriver dine egne skallfunksjoner og biblioteker, påkaller funksjoner fra biblioteker i vanlige skallskript.

Deretter vil vi forklare en enkel måte å konfigurere Vim som en IDE for Bash-skripting. Inntil da, hold alltid kontakten med TecMint og del også tankene dine om denne veiledningen via tilbakemeldingsskjemaet nedenfor.