Students frequently turn to Computer Class 11 GSEB Solutions and GSEB Computer Textbook Solutions Class 11 Chapter 8 એડવાન્સ સ્ક્રિસ્ટિંગ સ્ક્રિપ્ટિંગ for practice and self-assessment.
GSEB Computer Textbook Solutions Class 11 Chapter 8 એડવાન્સ સ્ક્રિસ્ટિંગ સ્ક્રિપ્ટિંગ
પ્રશ્ન 1.
યોગ્ય ઉદાહરણનો ઉપયોગ કરી શરતી અમલીકરણને શેલસ્ક્રિપ્ટ સંબંધે સમજાવો.
ઉત્તરઃ
નિર્ણય લેવાનાં કાર્યો (Decision Making Tasks)
લિનક્સમાં શેલસ્ક્રિપ્ટની રચના કરતી વખતે નિર્ણય માટે નીચેનાં ચાર વિધાનોનો ઉપયોગ કરી શકાય છે :
- if-then-fi
- if-then-else-fi
- if-then-elif-then-else-fi
- case-esac
પ્રયોગ 3
હેતુ: નિર્ણય માટેના if વિધાનનો ઉપયોગ કરીને યોગ્ય સંદેશ સાથે નવી ડિરેક્ટરી બનાવતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- viscript12.sh આદેશનો ઉપયોગ કરી વિમ એડિટર ખોલો. તેમાં Script 12માં દર્શાવ્યા મુજબ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# Script 12 : Script to create a directory with appropriate message. echo -n "Enter directory name : " read mydir if [ -d $mydir -o -f $nydir ] then echo "A File or Directory with name $nydir already exsists. " exit θ fi mkdir $mydir echo "Directory with name $mydir created susscessfully. "
Script 12
- આ સ્ક્રિપ્ટમાં આપણે if-then-fi નિર્ણય-માળખાંનો ઉપયોગ કર્યો છે. જો કમાન્ડનો અમલ સફળતાપૂર્વક થશે, તો Exit Statusની કિંમત 0 હશે, નહીં તો તેની કિંમત 1 થશે.
- આકૃતિ માં સ્ક્રિપ્ટનું પરિણામ દર્શાવેલ છે.
- આકૃતિ નો અભ્યાસ કરતાં માલૂમ પડશે કે, પહેલા કિસ્સામાં Enter Directory name : સામે આપણે કિંમત subject આપેલ છે, પરંતુ Subject નામની ડિરેક્ટરી પહેલેથી હયાત હોવાથી આપણે Directory already existsનો સંદેશ મેળવીએ છીએ.
- બીજા કિસ્સામાં આપણે કિંમત script_dir આપેલ છે અને આ નામની ડિરેક્ટરી પહેલેથી હયાત નથી. આથી આ ડિરેક્ટરી બનશે અને dir created successfully સંદેશ આવશે.
- ઉપરની સ્ક્રિપ્ટમાં જોઈ શકાય છે કે, શરતને ચોરસ કૌંસમાં આવરીને લખવામાં આવી છે. અહીં ઉઘડતા ચોરસ કૌંસ પછી અને પૂરા થતા ચોરસ કૌંસ પહેલા એક ખાલી જગ્યા રાખવી જરૂરી છે.
- અહીં if વિધાનમાં આપવામાં આવેલ શરતનું પરિણામ હકારાત્મક (True) આવશે, તો જ then પછી આવેલાં વિધાનોનો અમલ થશે.
નોંધ : (1) વિધાનનો અંત fi વિધાન દ્વારા દર્શાવવામાં આવે છે. (2) then કી-વર્ડને if વિધાનની નીચેની લીટીમાં ટાઇપ કરવું જરૂરી છે.
પ્રયોગ 4
હેતુ : નિર્ણય માટેના if વિધાનનો ઉપયોગ કરીને હાલની ડિરેક્ટરીમાં તેમજ બૅક-અપ ડિરેક્ટરીમાં રહેલી બે ફાઈલની સરખામણી કરવી.
- vi script13.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 13માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# Script 13 : Script to compare files. echo -n "Enter a file name : " read fname if cmp ./$fname ./backup/$fname then echo "$fname is same at both places. " else echo "Both $fname are different." fi
Script 13
- અહીં સૌપ્રથમ આપણે ઉપયોગકર્તા પાસેથી ફાઈલનું નામ સ્વીકારીએ છીએ. આપણે અહીં ધારણા કરી છે કે, બંને સ્થાને રહેલ ફાઈલનાં નામ સમાન છે.
- આકૃતિ માં સ્ક્રિપ્ટનું પરિણામ દર્શાવેલ છે.
- અહીં સ્ક્રિપ્ટનો બે વખત અમલ કરવામાં આવ્યો છે.
- પ્રથમ અમલ વખતે બંને ફાઈલની વિગતો સમાન હોવાને કારણે બંને ફાઈલો સરખી હોવાનો સંદેશ જોઈ શકાય છે.
- બીજી વખતમાં અમલના પહેલા વર્તમાન ડિરેક્ટરીની ફાઈલનું લખાણ બદલવામાં આવ્યું છે, જેથી આપણને ફાઈલ સમાન ન હોવાનો સંદેશ દર્શાવવામાં આવે છે.
પ્રયોગ 5
હેતુ : નિર્ણય માટેના if વિધાનનો ઉપયોગ કરીને હાલના સમય પ્રમાણે Good Morning, Good Afternoon અથવા Good Eveningનો સંદેશ દર્શાવતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script14.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 14માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# Script14: Script to display welcome message to the user. clear hour=`date +"H"` usrname="who am i |cut -d " " - f 1` if [ $hour -ge θ -a $hour -lt 12 ] then echo "Good Morning $usrname, wetcome to Ubuntu Linux Session." elif [ $hour -ge 12 -a $hour -lt 18 ] then echo "Good Afternoon $usrname, welcome to Ubuntu Linux Session." else echo "Good Evening $usrname, Welcome to Ubuntu Linux session, " fi
Script 14
- આકૃતિ માં આ સ્ક્રિપ્ટનું પરિણામ દર્શાવ્યું છે.
- સ્ક્રિપ્ટનું પરિણામ ઉપયોગકર્તાના લૉગ-ઇન સમય પ્રમાણે બદલાશે.
પ્રશ્ન 2.
શેલસ્ક્રિપ્ટના Case વિધાનને તેમાં ઉપયોગમાં લઈ શકાતી ભાત(Pattern)ની યાદી સાથે સમજાવો.
ઉત્તર:
8.3.5 Case at (The Case Statement)
- સરખામણીઓની સંખ્યા વધે ત્યારે if-then-elif-then-else-fi વિધાન સમજવું મુશ્કેલ બની જાય છે. આવી પરિસ્થિતિ માટે અન્ય વિકલ્પ છે case વિધાન.
- Case વિધાનનો ઉપયોગ સમજવા ચાલો આપણે એક પ્રયોગ કરીએ.
પ્રયોગ 9
હેતુ : Case વિધાનનો ઉપયોગ કરીને ફાઈલ તથા ડિરેક્ટરી ઉપર અલગ અલગ કાર્ય કરતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script18.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 18માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
- આ સ્ક્રિપ્ટમાં દરેક પ્રક્રિયા માટે જુદા જુદા વિભાગ લખવામાં આવ્યા છે.
- જ્યારે ઉપયોગકર્તા 0થી 5 વચ્ચેની કોઈ આંકડાકીય વિગત ઉમેરે છે, ત્યારે તેનો choice નામના ચલમાં સંગ્રહ કરવામાં આવે છે.
- case વિધાન choice ચલમાં આવેલ કિંમતને વાંચે છે અને પૂરા થતાં કૌંસની પહેલાં આવેલ જે કિંમત સાથે સરખામણી મળે તે વિભાગમાં નિયંત્રણ લઈ જાય છે.
- બે અર્ધવિરામ(;;)ની નિશાની ન આવે ત્યાં સુધી આ વિભાગનાં તમામ વિધાનોનો અમલ કરે છે.
- બે અર્ધવિરામની નિશાની આવ્યા બાદ નિયંત્રણને Case વિધાનના અંત પછીની લીટી પર લઈ જાય છે.
- Case વિધાનનો અંત દર્શાવવા esac કી-વર્ડનો ઉપયોગ કરવામાં આવે છે.
નોંધ : જો ઉપયોગકર્તા એવી કિંમત ઉમેરે જે કોઈ પણ Caseની કિંમત સાથે સરખી ન હોય ત્યારે કૂદડી (*) સ્વરૂપે કિંમત આપવામાં આવેલી હોય તે વિભાગમાં નિયંત્રણને ખસેડવામાં આવે છે. - સ્ક્રિપ્ટ 18નાં જુદા જુદા પરિણામ આકૃતિ માં દર્શાવેલ છે.
- Case વિધાનમાં પસંદગી માટે કિંમત તરીકે આંકડાકીય, અક્ષર પ્રકારની કે સ્ટ્રિંગ સ્વરૂપે આપી શકાય છે.
- સ્ટ્રિંગ કિંમતોને Case વિધાનમાં એક અવતરણિચહ્ન(‘ ‘)માં આવરીને લખવી જરૂરી છે.
પ્રશ્ન 3.
While લૂપ વિશે સમજાવો.
ઉત્તરઃ
8.4.2 પુનરાવર્તન માટે while વિધાન (Repetition: while Statement)
- લૂફિંગ માટે while વિધાનનો ઉપયોગ પણ થઈ શકે છે.
- જ્યાં સુધી ‘એસ્પ્રેશન’ સ્વરૂપે આપવામાં આવેલી શરત સાચી ઠરે, ત્યાં સુધી do અને done કી-વર્ડ વચ્ચે આવેલાં તમામ વિધાનોનું પુનરાવર્તન કરવાનું કાર્ય while વિધાન કરે છે.
- હવે આપણે એવો પ્રયોગ કરીએ કે, જે એડમિનિસ્ટ્રેટરને ડિરેક્ટરીમાંથી ચોક્કસ સંખ્યામાં ફાઈલોને દૂર કરવામાં મદદરૂપ બને.
પ્રયોગ 12
હેતુ : પુનરાવર્તન વિધાન whileનો ઉપયોગ કરી, દર્શાવેલ ડિરેક્ટરીમાંથી અમુક સંખ્યાની ફાઈલ દૂર કરતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script21.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 21માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
સ્ક્રિપ્ટનું કાર્ય : અહીં શરૂઆતમાં ઉપયોગકર્તાને એક ડિરેક્ટરીનું નામ ઉમેરવા જણાવવામાં આવશે. આ કિંમત dname નામના ચલમાં ઉમેરાશે.
- ત્યારપછી ડિરેક્ટરી અસ્તિત્વમાં છે કે નહીં, તેની ચકાસણી કરવામાં આવશે. જો ડિરેક્ટરી અસ્તિત્વમાં હશે, તો cd કમાન્ડથી તે ડિરેક્ટરીમાં જઈ ઉપયોગકર્તા પાસેથી દૂર કરવામાં આવના૨ કુલ ફાઈલની સંખ્યા માંગવામાં આવશે.
- ત્યારપછી ફાઈલને શોધવા માટે while લૂપ શરૂ કરવામાં આવશે. જો ફાઈલ મળશે તો તેને દૂર કરવામાં આવશે, નહીં તો ‘ફાઈલ મળેલ નથી’ તેવો સંદેશ દર્શાવવામાં આવશે.
- જ્યાં સુધી ctr ચલની કિંમત ઉપયોગકર્તાએ આપેલ કિંમત કરતાં ઓછી અથવા બરાબર હોય, ત્યાં સુધી આ લૂપનો અમલ થતો રહેશે.
- while લૂપની વાક્યરચના (Syntax of while loop) :
while [test – condition] do command 1 command 2 done command 3
પ્રશ્ન 4.
Until લૂપ સમજાવો.
ઉત્તરઃ
8.4.3 પુનરાવર્તન માટે until વિધાન (Repetition: until Statement)
- કાર્યોના પુનરાવર્તિત અમલ માટે until વિધાનનો પણ ઉપયોગ કરી શકાય છે.
- until લૂપ એ while લૂપની જેમ જ કાર્ય કરે છે પરંતુ વિધાનોના અમલનું કાર્ય ત્યાં સુધી પુનરાવર્તિત કરે છે, જ્યાં સુધી આપેલ શરત ખોટી (False) હોય. જ્યારે શરત સાચી (True) હોય, ત્યાં સુધી વિધાનોનો અમલ કરવાનું કાર્ય while લૂપ કરે છે.
પ્રયોગ 13
હેતુ : ઉપયોગકર્તા બહાર નીકળવાનું ઇચ્છે નહી ત્યાં સુધી પુનરાવર્તન થાય તેવી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script22.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 22માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
સ્ક્રિપ્ટનું કાર્ય : જ્યારે આ સ્ક્રિપ્ટનો અમલ કરવામાં આવશે, ત્યારે ઉપયોગકર્તા સમક્ષ એક મેનૂ પ્રદર્શિત કરી પસંદગીની માંગણી કરવામાં આવશે.
- પસંદગી અનુસાર case વિધાનની પ્રક્રિયાનો અમલ કરવામાં આવશે.
- આ સ્ક્રિપ્ટનો વારંવાર અમલ કરવામાં આવે છે પરંતુ જો ઉપયોગકર્તા e વિકલ્પ પસંદ કરે, તો caseના exit વિધાનનો અમલ કરવામાં આવે છે અને “Do you want to continue?” પ્રશ્ન પૂછવામાં આવે છે. અહીં જો ‘y’ આપવામાં આવે, તો લૂપનું પુનરાવર્તન થાય છે અને જો ‘n’ આપવામાં આવે તો સ્ક્રિપ્ટનો અમલ અટકાવવામાં આવે છે. આકૃતિ માં પરિણામ દર્શાવેલ છે.
Computer Class 11 GSEB Notes Chapter 8 એડવાન્સ સ્ક્રિસ્ટિંગ સ્ક્રિપ્ટિંગ
પરિચય (Introduction)
- સિસ્ટમના રોજિંદા વહીવટ માટે શેલસ્ક્રિપ્ટનો ઉપયોગ કરવામાં આવે છે.
- દૂરના સ્થાને હોવા છતાં સિસ્ટમને સરળતાથી જોઈ અને નિયંત્રિત કરવા માટેનું આ શ્રેષ્ઠ સાધન છે.
- અત્યાર સુધી અગાઉના પ્રકરણમાં બનાવવામાં આવેલી શેલસ્ક્રિપ્ટ ક્રમાનુસાર (Sequential) કાર્ય કરતી હતી. સ્ક્રિપ્ટમાં ઉમેર્યા હોય તે જ ક્રમમાં આદેશોનો અમલ કરવામાં આવતો હતો.
- વહીવટી કાર્યો કરતી વખતે કેટલાંક વિધાનોનો અમલ પુનરાવર્તિત રીતે કરવાની જરૂર પડે છે અથવા પૂર્વવ્યાખ્યાયિત શરત આધારિત કેટલાંક વિધાનોના અમલીકરણને છોડી દેવાની જરૂર પડે છે.
- આ પ્રકરણમાં આપણે સિસ્ટમના વહીવટને લગતી કેટલીક સ્ક્રિપ્ટ જોઈશું અને શેલસ્ક્રિપ્ટમાં નિર્ણાયક વિધાનો અને લૂપિંગ બંધારણો વિશે ચર્ચા કરીશું.
પ્રોસેસ આઇડી શોધવો (Finding Process Id)
- લિનક્સમાં તમામ પ્રોગ્રામોનો પ્રોસેસ’ સ્વરૂપે અમલ કરવામાં આવે છે.
- દરેક પ્રોસેસને ચાલુ કરવામાં આવે, ત્યારે તેની સાથે ‘પ્રોસેસ આઇડી’ (PID) નામે ઓળખાતો એક અનન્ય અંક સાંકળવામાં આવે છે.
- પ્રોસેસને જોઈ કે અટકાવી શકાય છે.
- ps કમાન્ડનો ઉપયોગ કોઈ પેરામીટર વગર કરવામાં આવે, તો વર્તમાન શેલ સાથે જોડાયેલ તમામ પ્રોસેસ નિહાળી શકાય છે.
ps -ef
આ કમાન્ડનો ઉપયોગ કરવાથી તમામ ઉપયોગકર્તાઓ દ્વારા શરૂ કરવામાં આવેલી પ્રોસેસની યાદી જોઈ શકાય છે. સિસ્ટમ પર ચાલતી પ્રોસેસની યાદી આકૃતિ માં દર્શાવેલ છે.
આકૃતિ માં દર્શાવવામાં આવેલ કેટલાક સ્તંભ(કૉલમ)ની સમજૂતી કોષ્ટક 1માં આપવામાં આવી છે.
કોષ્ટક 1 : ps -ef કમાન્ડ દ્વારા દર્શાવવામાં આવેલા સ્તંભની સમજૂતી
સ્તંભનું નામ | વર્ણન |
UID | પ્રોસેસ ધરાવતા ઉપયોગકર્તાનું નામ અથવા ક્રમ |
PID | દરેક પ્રોસેસ સાથે જોડાયેલ એક અનન્ય પ્રોસેસક્રમાંક |
PPID | વર્તમાન પ્રોસેસ જેના દ્વારા શરૂ કરવામાં આવી હોય, તે પિતૃ-પ્રોસેસનો પ્રોસેસ આઇડી |
STIME | વર્તમાન પ્રોસેસ શરૂ કર્યાનો સમય |
TTY | વર્તમાન પ્રોસેસને નિયંત્રિત કરતા ટર્મિનલનું નામ |
TIME | વર્તમાન પ્રોસેસ દ્વારા ઉપયોગમાં લેવામાં આવેલા CPUના કુલ સમયની કિંમત |
CMD | પ્રોસેસ શરૂ કરવા માટે ઉપયોગમાં લેવામાં આવેલ કમાન્ડ |
પ્રયોગ 1
હેતુ : ઉપયોગકર્તા દ્વારા હાલ કુલ કેટલી પ્રોસેસ ચાલુ છે, તે દર્શાવતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script10.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 10માં દર્શાવ્યા મુજબ સ્ક્રિપ્ટ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# script 10 : Script to find out how many processes a user is running. clear echo -n "Enter username : " read us mame cnt=`s -ef | cut -d " " -f 1 | grep - o $usrname | wc -w` echo "User $usrname is running $cnt processes. "
Script 10
- સ્ક્રિપ્ટનું કાર્ય : આ સ્ક્રિપ્ટ નીચે મુજબ કાર્ય કરશે ઃ
લાઇન 1 : કૉમેન્ટનો ઉપયોગ કરેલ છે.
લાઇન 2 : સ્ક્રીન પરથી તમામ લખાણ દૂર કરશે.
લાઇન 3 : ઉપયોગકર્તા સમક્ષ તેનું યુઝરનેમ ઉમેરવા માટેનો સંદેશ રજૂ કરશે.
લાઇન 4 : કી-બોર્ડ પરથી આપવામાં આવેલી સ્ટ્રિંગ read કમાન્ડ દ્વારા usrname નામના ચલમાં મૂકવામાં આવશે.
લાઇન 5 : pipe વડે ps, cut, grep અને wc એમ ચાર કમાન્ડનું સંયોજન કરવામાં આવ્યું છે, તે નીચે મુજબ કાર્ય કરશે :
ps -ef
કમાન્ડ દ્વારા સિસ્ટમના તમામ ઉપયોગકર્તાઓ દ્વારા ચલાવવામાં આવેલી પ્રોસેસની યાદી દર્શાવાશે. તેનું પરિણામ cut કમાન્ડને ઇનપુટ તરીકે આપવામાં આવશે. તેમાંથી cut કમાન્ડ પ્રથમ ફિલ્ડ (ઉપયોગકર્તાનું નામ) અલગ પાડે છે. તે grep કમાન્ડને ઇનપુટ તરીકે આપવામાં આવે છે. grep કમાન્ડ usrname ચલમાં આપવામાં આવેલી કિંમત સરખાવશે. આ સરખાવેલી યાદી ત્યારપછી wc કમાન્ડને ઇનપુટ તરીકે આપવામાં આવશે. wc કમાન્ડ આપેલ શબ્દ(ઉપયોગકર્તાના નામ)ની સંખ્યા ગણે છે અને આ સંખ્યાનો cnt નામના ચલમાં સંગ્રહ કરવામાં આવે છે.
લાઇન 6 : જરૂરી પરિણામને સ્ક્રીન પર દર્શાવે છે.
આકૃતિ માં આ સ્ક્રિપ્ટનું નમૂનારૂપ પરિણામ દર્શાવ્યું છે. (sh script10.sh આદેશ આપતા આવતું પરિણામ)
- Kill કમાન્ડ : જરૂરી હોય તો આપણે કોઈ પ્રોસેસને દૂર કરી, કેટલીક મેમરી જગ્યા(Memory space)ને મુક્ત કરી શકીએ છીએ.
- મેમરીમાંથી પ્રોસેસને દૂર કરવા માટે Kill કમાન્ડનો ઉપયોગ થાય છે.
$kill -9 101
આ આદેશ PID = 101 ધરાવતી પ્રોસેસને મેમરીમાંથી ફોર્સફુલ્લી દૂર કરશે.
પ્રયોગ 2
હેતુ : ઉપયોગકર્તાએ કુલ કેટલા ટર્મિનલ ખોલ્યા છે, તે દર્શાવતી શૈલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script11.sh આદેશ આપી વિમ એડિટર ખોલો. તેમાં Script 11માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# script 11 : Script to find out how many terminals a user has opened. cnt=`who | cut -d " " -f 1 | grep -o $1 | wc -w` eche "User $1 has opened $cnt terminals"
Script 11
- આ સ્ક્રિપ્ટમાં આપણે કમાન્ડ લાઇન આર્ગ્યુમેન્ટનો ઉપયોગ કર્યો છે.
- અહીં $1 કમાન્ડ લાઇન આર્ગ્યુમેન્ટ રજૂ કરે છે.
સ્ક્રિપ્ટ 11નો અમલ કરવા નીચે મુજબ કમાન્ડ આપવો પડે :
$sh script11.sh manish
આ કમાન્ડમાં manish આર્ગ્યુમેન્ટ $1ની કિંમતનો નિર્દેશ કરે છે. આકૃતિ માં આ સ્ક્રિપ્ટનું પરિણામ દર્શાવ્યું છે.
નોંધ : કમાન્ડ લાઇન દ્વારા મેળવવામાં આવેલા ચલનો લિનક્સ $1, $2, $3 એમ ‘ડૉલર ચલ’- (Dollar variables)માં સંગ્રહ કરે છે. પ્રથમ આર્ગ્યુમેન્ટ $1માં, બીજી આર્ગ્યુમેન્ટ $2માં, ત્રીજી આર્ગ્યુમેન્ટ $3માં એમ $9 સુધી સંગ્રહ કરવામાં આવે છે.
- સ્ક્રિપ્ટનું કાર્ય : આ સ્ક્રિપ્ટ નીચે મુજબ કાર્ય કરશે :
લાઇન 1 : કૉમેન્ટનો ઉપયોગ કરેલ છે.
લાઇન 2 : ચાર કમાન્ડ who, cut, grep અને wcનો સંયુક્ત ઉપયોગ પાઇપની મદદથી કરેલો છે.- સિસ્ટમમાં લૉગ-ઇન થયેલા તમામ ઉપયોગકર્તાની યાદી who કમાન્ડ દ્વારા દર્શાવવામાં આવે છે.
- cut કમાન્ડ who દ્વારા મળેલ પરિણામમાંથી પ્રથમ ફિલ્ડ (યુઝરનેમ) અલગ પાડે છે.
- છૂટા પાડવામાં આવેલા પ્રથમ ફિલ્ડની યાદી grep કમાન્ડને આપવામાં આવે છે. grep કમાન્ડ દ્વારા કમાન્ડ લાઇન આર્ગ્યુમેન્ટ તરીકે ઉમેરવામાં આવેલી કિંમત(અહીં manish)ને ઉપયોગકર્તાની યાદીમાંથી શોધવામાં આવે છે.
- સરખામણી થયેલ યાદી wc કમાન્ડને આપવામાં આવે છે, જે આપેલ શબ્દ(ઉપયોગકર્તાના નામ)ની ગણતરી કરે છે.
- અંતે ગણવામાં આવેલા શબ્દોની સંખ્યાનો cnt ચલમાં સંગ્રહ કરવામાં આવે છે.
લાઇન 3 : અંતિમ પરિણામને સ્ક્રીન પર દર્શાવે છે.
test કમાન્ડ (The test command)
- if વિધાનનો વિવિધ સ્વરૂપોમાં ઉપયોગ શક્ય છે.
- if વિધાનમાં શરત ચોરસ કૌંસમાં આપવાને બદલે test કમાન્ડથી પણ આપી શકાય છે. દા. ત.,
if [$cnt -gt $nfile] અને if test $cnt -gt $nfile]
આ બંને કમાન્ડ સમાન છે અને કોઈ પણ રીતે if કમાન્ડનો ઉપયોગ કરી શકાય. - હવે test કમાન્ડનો ઉપયોગ કરી એક પ્રયોગ કરીએ.
પ્રયોગ 6
હેતુ : એક મહિના દરમિયાન ઉપયોગકર્તાએ અમુક સંખ્યા કરતાં વધુ ફાઈલ બનાવી છે કે નહીં તે ચકાસણી કરતી શેલસ્ક્રિપ્ટ તૈયાર કરવી. (if સાથે test કમાન્ડનો ઉપયોગ કરવો.)
- vi script15.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 15માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# Script 15 Script to see whether user has created more than specified month. clear cnt=`ls -l / greep -c [-]"$1"` echo -n "Enter number of files : " read nfile if test $cnt -gt $nfile then echo "You have created more than $nfile files in the month of $1"` else echo "You have not created more than $nfile files in the month of $1"` fi
Script 15
- આ સ્ક્રિપ્ટમાં આપણે cnt નામનો એક ચલ વ્યાખ્યાયિત કર્યો છે. આપેલ મહિનામાં બનાવવામાં આવેલી તમામ ફાઈલોની સંખ્યા આ ચલમાં સંગ્રહવામાં આવે છે.
- ફાઈલની સંખ્યા ગણવા માટે 1s અને grep કમાન્ડનો ઉપયોગ કરવામાં આવ્યો છે.
- ls -1 કમાન્ડની મદદથી ફાઈલ અને ડિરેક્ટરીની વિગતો દર્શાવી શકાય છે. તેનું પરિણામ ત્યારપછી grep કમાન્ડને આપી [-]“$1” શબ્દસમૂહ સાથે સરખાવવામાં આવે છે.
- મહિનાની કિંમત બે અંકોની હોય છે અને તે કમાન્ડ લાઇન આર્ગ્યુમેન્ટ દ્વારા મેળવી $1માં સંગ્રહવામાં આવે છે.
- સરખામણી થયેલ ફાઈલોની સંખ્યાને nfile નામના ચલમાં સંગ્રહવામાં આવે છે. શરતમાં આપવામાં આવેલ -gt વિકલ્પ ‘થી વધુ’ સરખામણી દર્શાવે છે.
- અહીં જો cntની કિંમત nfileથી વધુ હશે, તો “You have created more than $nfile files in the month of $1” સંદેશ આપશે અને જો વધુ નહીં હોય, તો “You have not created more then $nfile” સંદેશ આપશે.
$sh script15.sh 02
આ કમાન્ડ આપતા મળતું પરિણામ આકૃતિ માં દર્શાવેલ છે.
સંબંધિત પ્રક્રિયકો (Relational Operators)
- આંકડાકીય ચકાસણીમાં કરવા માટે રિલેશનલ ઑપરેટરનો ઉપયોગ કરવામાં આવે છે. -gt, -lt અને -ge વગેરે એ સંબંધિત પ્રક્રિયકો (Relational operators) છે. (આ ઑપરેટરનો ઉપયોગ બે આંકડાકીય ઑપરેન્ડની સરખામણી કરવા માટે થાય છે.)
- શેલસ્ક્રિપ્ટમાં ઉપયોગમાં લઈ શકાય તેવા રિલેશનલ ઑપરેટરની યાદી કોષ્ટક 2માં દર્શાવેલ છે.
કોષ્ટક 2 : રિલેશનલ ઑપરેટર
ઑપરેટર | ઉપયોગ |
-gt | -થી વધુ (greater than) |
-lt | -થી ઓછું (less than) |
-ge | -થી વધુ અથવા બરાબર (greater than or equal to) |
-le | -થી ઓછું અથવા બરાબર (less than or equal to) |
-ne | -સમાન નહીં (not equal to) |
-eq | -સમાન (equal to) |
તાર્કિક પ્રક્રિયકો (Logical Operators)
- ચોક્કસ અને યોગ્ય નિર્ણયો લેવા માટે ઉપયોગકર્તાને ઘણી વાર એકથી વધુ શરતોનું સંયોજન ક૨વું પડે છે. શરતોને સંયોજિત કરવા લૉજિકલ ઑપરેટરનો ઉપયોગ કરવામાં આવે છે. કોષ્ટક 3માં લૉજિકલ ઑપરેટરની યાદી તેના ઉપયોગ સાથે દર્શાવેલ છે.
કોષ્ટક 3 : લૉજિકલ ઑપરેટર
ઑપરેટર | ઉપયોગ. | સંયોજિત કરવામાં આવનાર ન્યૂનતમ શરતો | પરિણામ |
-a | AND | બે | બંને શરત સાચી હોય તો જ True, નહીં તો False |
-o | OR | બે | કોઈ પણ એક શરત સાચી હોય તો True, બંને શરતો ખોટી હોય તો જ False |
! | NOT | એક | True પરિણામને False અને False શરતને Trueમાં રૂપાંતિરત કરવા |
ફાઈલ પ્રક્રિયકો (File Operators)
- ફાઈલ કે ડિરેક્ટરીની સ્થિતિ (Status) તપાસવા માટે પણ if વિધાનનો ઉપયોગ શક્ય છે. ફાઈલની સ્થિતિ તપાસવા માટે ફાઈલ-ઑપરેટર ઉપલબ્ધ છે. આ ઑપરેટરોનો ઉપયોગ if સાથે શરતના સ્વરૂપમાં કરવામાં આવે છે.
- ફાઈલ-ઑપરેટરોનો ઉપયોગ કરી જાણી શકાય છે કે, આપેલ નામ માત્ર ફાઈલ છે કે ડિરેક્ટરી છે. ફાઈલને આપવામાં આવેલ મંજૂરી (Permissions) અંગેની માહિતી મેળવવા માટે પણ તેનો ઉપયોગ કરી શકાય છે.
- કોષ્ટક 4માં આ વિકલ્પોની યાદી દર્શાવેલ છે.
કોષ્ટક 4 : ફાઈલ-ચકાસણીની શરતો
તપાસેલી શરત | પરિણામ |
-s name | આપેલ નામ ધરાવતી ફાઈલ અસ્તિત્વમાં હોય અને તેનું કદ શૂન્યથી વધુ હોય. |
-f name | આપેલ નામ ધરાવતી ફાઈલ અસ્તિત્વમાં હોય અને તે ડિરેક્ટરી ન હોય. |
-d name | આપેલ નામ ધરાવતી ડિરેક્ટરી અસ્તિત્વમાં હોય. |
-r name | આપેલ નામ ધરાવતી ફાઈલ અસ્તિત્વમાં હોય અને ઉપયોગકર્તા read મંજૂરી ધરાવતો હોય. |
-w name | આપેલ નામ ધરાવતી ફાઈલ અસ્તિત્વમાં હોય અને ઉપયોગકર્તા write મંજૂરી ધરાવતો હોય. |
-x name | આપેલ નામ ધરાવતી ફાઈલ અસ્તિત્વમાં હોય અને ઉપયોગકર્તા execute મંજૂરી ધરાવતો હોય. |
- હવે આપણે ફાઈલ-ઑપરેટરનો ઉપયોગ સમજવા એક વધુ પ્રયોગ કરીએ.
પ્રયોગ 7
હેતુ : ફાઈલ-ઑપરેટરનો ઉપયોગ કરીને ફાઈલની સાઇઝ ચકાસતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script16.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 16માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
# Script 16 : Script to check file size. echo -n "Enter a file name : " read fname if [ -s $fname -a - $fname ] then echo $fname has size greater than θ and user has write permission on it else echo $fname has size θ or user does not have write permission on it. fi
Script 16
- અહીં if[-s $fname -a -w $fname] એકથી વધુ શરત દર્શાવે છે. જો બંને શરતોનું પરિણામ હકારાત્મક મળશે,
તો જ if વિધાનનો અમલ કરવામાં આવશે. - sh script16.sh કમાન્ડ આપી ફાઈલ નેમ આપતાં મળતું પરિણામ આકૃતિ માં દર્શાવેલ છે. અહીં સ્ક્રિપ્ટ બે વખત ન કરવામાં આવી છે.
- ઉપરની સ્ક્રિપ્ટમાં if વિધાનના અમલ સમયે મળી શકે તે શક્ય પરિણામોની યાદી કોષ્ટક 5માં દર્શાવી છે.
પ્રયોગ 8
હેતુ : ઉપયોગકર્તા દ્વારા આપવામાં આવેલ ત્રણ ફાઈલના નામમાંથી સૌથી વધુ સાઇઝ ધરાવતી ફાઈલ શોધી શકે તેવી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script17.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 17માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
- અહીં આપણે એકથી વધુ શરતો ચકાસવાની હોવાથી if-then-elif-then-elif-then-else-fiનો ઉપયોગ કરેલ છે.
- તેના બદલે આપણે Case વિધાનનો પણ ઉપયોગ કરી શકીએ. જે વધુ સરળ અને સુગમ રહે.
- અહીં clear કમાન્ડ પછીનાં છ વિધાનો દ્વારા ઉપયોગકર્તા પાસેથી ફાઈલના નામ મેળવવામાં આવે છે.
- ત્યારપછીનાં ત્રણ વિધાન દ્વારા ફાઈલનાં કદ શોધવામાં આવે છે.
- અંતમાં if વિધાનની મદદથી મહત્તમ કદ ધરાવતી ફાઈલ શોધવામાં આવે છે.
- આકૃતિ આ સ્ક્રિપ્ટનું પરિણામ દર્શાવે છે.
પુનરાવર્તન કરવું (Handling Repetition)
એકસરખા કમાન્ડ અનેક વખત પુનરાવર્તિત કરવાની પ્રક્રિયાને ‘લપિંગ’ (Looping) કહે છે. પુનરાવર્તિત કાર્યો કરવા માટે લિનક્સમાં ત્રણ કી-વર્ડ પૂરા પાડવામાં આવ્યા છે :
- for,
- while અને
- until.
પુનરાવર્તન માટે for વિધાન (Repetition: for statement)
- for લૂપ તેના વિધાનમાં કિંમતોની યાદી ઉમેરવાની છૂટ આપે છે. યાદીમાં આવેલ દરેક કિંમત માટે લૂપનો અમલ કરવામાં આવે છે.
- for વિધાનની સામાન્ય વાક્યરચના (Syntax of for loop) :
for control-variable in valuel, value2, value3 ... do command 1 command 2 command 3 done
- હવે, for લૂપ સમજવા પ્રયોગ કરીએ.
પ્રયોગ 10
હેતુ : પુનરાવર્તન વિધાન forનો ઉપયોગ કરી, શૂન્ય સાઇઝ ધરાવતી તમામ ફાઈલ દૂર કરવી (ભૂંસવી).
- vi script19.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 19માં દર્શાવ્યા મુજબ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
- Script 19માં લાઇનનંબર 9 ધ્યાનથી જુઓ. અહીં આપણે
for i in find “$dname/” -type f -size Oc’ વિધાનનો ઉપયોગ કર્યો છે.
આ વિધાનની મદદથી શૂન્ય સાઇઝની ફાઈલ શોધવાની ક્રિયા વારંવાર કરવામાં આવશે. - આકૃતિ માં sh script19.sh આપતાં મળતું પરિણામ દર્શાવેલ છે. અહીં Linuxscript નામની ડિરેક્ટરીમાં રહેલ શૂન્ય સાઇઝની તમામ ફાઈલ (test, test 1 અને test 2) આપમેળે દૂર કરવામાં આવે છે.
- હવે, for લૂપની મદદથી ઍડમિનિસ્ટ્રેટર દ્વારા ફાઈલોનો બૅક-અપ લેવાનું કાર્ય સરળ બનાવે તેવી એક બીજી સ્ક્રિપ્ટ બનાવીએ.
પ્રયોગ 11
હેતુ : પુનરાવર્તન વિધાન(for)નો ઉપયોગ કરી દર્શાવેલ સ્થાનમાં (ડિરેક્ટરીમાં) રહેલ ફાઈલોનો બૅક-અપ લેવો તથા તેને કમ્પ્રેસ કરતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- vi script20.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 20માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
- સ્ક્રિપ્ટનું કાર્ય : સૌપ્રથમ વર્તમાન તારીખનો સંગ્રહ dat ચલમાં તથા bdir ચલમાં backup – વર્તમાન તારીખ કિંમત ઉમેરવામાં આવશે.
- ત્યારપછી if આદેશથી ડિરેક્ટરી અસ્તિત્વમાં છે કે નહીં તે ચકાસવામાં આવે છે. જો નહીં હોય તો નવી ડિરેક્ટરી c બનાવવામાં આવશે અને ઉપયોગકર્તાને ફાઈલનું અનુલંબન (Extension) ઉમેરવાનું કહેવામાં આવશે.
- સ્ક્રિપ્ટ ત્યારબાદ આ પ્રકારની ફાઈલો વર્તમાન ડિરેક્ટરીમાં શોધશે. જો ફાઈલ મળશે, તો તેની નકલ બૅક-અપ ડિરેક્ટરીમાં કરશે.
- તમામ ફાઈલની નકલ થઈ ગયા પછી tar કમાન્ડની મદદથી બૅક-અપ ડિરેક્ટરીનું સંકોચન (Compression) કરવામાં આવશે.
- ત્યારપછી બૅક-અપ ડિરેક્ટરી ખાલી કરી દૂર કરવામાં આવશે.
શકાય.
નોંધ : સંકુચિત ફાઈલનું વિસ્તરણ (Uncompression) કરવા માટે tar -xvf filename કમાન્ડનો ઉપયોગ કરી
સ્ક્રિપ્ટમાં વિધેય (Function in Script)
- શેલસ્ક્રિપ્ટમાં આવેલા નાના વિભાગ(Sub scripts)ને ફંક્શન કહે છે.
- સ્ક્રિપ્ટને વધુ વિભાગીય (Modular) બનાવવા માટે ફંક્શનનો ઉપયોગ થાય છે.
- ફંક્શનની મદદથી સ્ક્રિપ્ટની વાંચનક્ષમતા સુધારી શકાય છે.
- શેલસ્ક્રિપ્ટમાં આવેલ ફંક્શન કોઈ કિંમત પરત કરતા નથી, પરંતુ ‘સ્ટેટસ કોડ’ (Status Code) પરત કરે છે.
- તો ચાલો ફંક્શનનો ઉપયોગ સમજવા એક પ્રયોગ કરીએ.
પ્રયોગ 14
હેતુ : ફંક્શનનો ઉપયોગ દર્શાવતી શેલસ્ક્રિપ્ટ તૈયાર કરવી.
- અહીં આપણે ઉપયોગકર્તાને વર્તમાન તારીખમાં બનાવેલ કુલ ફાઈલ ગણવામાં કે ફાઈલ છેલ્લે ક્યારે સુધારવામાં આવી છે તે જણાવવામાં મદદરૂપ બને તેવી સ્ક્રિપ્ટ બનાવવી છે.
- તે માટે અહીં આપણે file_today() તથા modified_today ( ) નામનાં બે ફંક્શન બનાવેલ છે.
નોંધ : ચલના નામની પાછળ આવતા કૌંસ ( ), ફંક્શનનો નિર્દેશ કરે છે. - vi script23.sh કમાન્ડ આપી વિમ એડિટર ખોલો. તેમાં Script 23માં દર્શાવેલ કમાન્ડ ટાઇપ કરો અને ફાઈલ સેવ કરો.
- sh script23.sh કમાન્ડ આપતાં મળતું આઉટપુટ આકૃતિ માં દર્શાવેલ છે.
- અહીં, જ્યારે ઉપયોગકર્તા a પસંદ કરે છે ત્યારે file_today( ) ફંક્શનને બોલાવી (call કરી) અમલમાં મૂકવામાં આવે છે.
- જ્યારે ઉપયોગકર્તા b પસંદ કરે તો તેને ફાઈલનું નામ પૂછવામાં આવે છે અને પછી modified_today() ફંક્શનનો અમલ કરવામાં આવે છે. જેના દ્વારા ફાઈલ હયાત છે કે નહીં તે ચકાસવામાં આવે છે અને જો હયાત હશે, તો તેને છેલ્લે ક્યારે સુધારવામાં આવી તે તારીખ દર્શાવવામાં આવે છે. અન્યથા યોગ્ય સંદેશ દર્શાવવામાં આવશે.