Wéi schreift a benotzt Custom Shell Funktiounen a Bibliothéiken


Am Linux, Shell-Skripte hëllefen eis op sou vill verschidde Weeër, dorënner d'Ausféierung oder d'automatiséiert vu bestëmmte Systemverwaltungsaufgaben, d'Schafe vun einfache Kommandozeil-Tools a vill méi.

An dësem Guide wäerte mir nei Linux Benotzer weisen, wou se zouverlässeg personaliséiert Shell-Skripte späicheren, erkläre wéi Dir personaliséiert Shell-Funktiounen a Bibliothéike schreift, Funktiounen aus Bibliothéiken an anere Skripte benotzen.

Wou Shell Scripten ze späicheren

Fir Är Skripte auszeféieren ouni e vollen/absolute Wee ze schreiwen, mussen se an engem vun de Verzeichnisser an der PATH Ëmfeldvariabel gespäichert ginn.

Fir Äre PATH z'iwwerpréiwen, gitt de Kommando hei ënnen:

$ echo $PATH

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

Normalerweis, wann d'Verzeechnesbehälter an engem Benotzer Heemverzeechnes existéiert, gëtt se automatesch a sengem PATH abegraff. Dir kënnt Är Shell Scripten hei späicheren.

Dofir erstellt de Bin Verzeichnis (deen och Perl, Awk oder Python Scripten oder all aner Programmer späichere kann):

$ mkdir ~/bin

Als nächst, erstellt e Verzeechnes mam Numm lib (kuerz fir Bibliothéiken) wou Dir Är eege Bibliothéike behält. Dir kënnt och Bibliothéike fir aner Sprooche wéi C, Python a sou weider dran halen. Ënnert et, erstellt en anere Verzeichnis mam Numm sh; dëst wäert Iech besonnesch Shellbibliothéiken speichern:

$ mkdir -p ~/lib/sh 

Erstellt Är eege Shell Funktiounen a Bibliothéiken

Eng Shellfunktioun ass eng Grupp vu Kommandoen déi eng speziell Aufgab an engem Skript ausféieren. Si funktionnéieren ähnlech wéi Prozeduren, Subroutinen a Funktiounen an anere Programméierungssproochen.

D'Syntax fir eng Funktioun ze schreiwen ass:

function_name() { list of commands }

Zum Beispill kënnt Dir eng Funktioun an engem Skript schreiwen fir den Datum wéi follegt ze weisen:

showDATE() {date;}

All Kéier wann Dir den Datum wëllt weisen, rufft einfach d'Funktioun hei uewen op mat sengem Numm:

$ showDATE

Eng Shell-Bibliothéik ass einfach e Shell-Skript, awer Dir kënnt eng Bibliothéik schreiwen fir nëmmen Är Funktiounen ze späicheren, déi Dir spéider vun anere Shell-Skripte uruffe kënnt.

Drënner ass e Beispill vun enger Bibliothéik mam Numm libMYFUNCS.sh a mengem ~/lib/sh Verzeechnes mat méi Beispiller vu Funktiounen:

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

Späichert d'Datei a maacht de Skript ausféierbar.

Wéi ruffe Funktiounen aus enger Bibliothéik

Fir eng Funktioun an engem Lib ze benotzen, musst Dir als éischt de Lib am Shell-Skript enthalen, wou d'Funktioun benotzt gëtt, an der Form hei ënnen:

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

Also benotzt Dir d'Funktioun printUSERDETS vum lib ~/lib/sh/libMYFUNCS.sh an engem anere Skript wéi hei ënnendrënner.

Dir musst net en anere Code an dësem Skript schreiwen fir d'Detailer vun engem bestëmmte Benotzer ze drécken, rufft einfach eng existent Funktioun un.

Öffnen eng nei Datei mam Numm test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Späichert et, maacht dann de Skript ausführbar a lafen et:

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

An dësem Artikel hu mir Iech gewisen, wou Dir Shell-Skripte zouverlässeg späichere kënnt, wéi Dir Är eege Shell-Funktiounen a Bibliothéike schreift, Funktiounen aus Bibliothéiken an normale Shell-Skripte opruffen.

Als nächst wäerte mir e richtege Wee erkläre fir Vim als IDE fir Bash Scripting ze konfiguréieren. Bis dohin, bleift ëmmer verbonne mat TecMint an deelt och Är Gedanken iwwer dëse Guide iwwer de Feedbackformular hei ënnen.