Jinsi ya Kuunda Maandishi Rahisi ya Shell katika Linux
Kuunda maandishi ya ganda ni mojawapo ya ujuzi muhimu zaidi ambao watumiaji wa Linux wanapaswa kuwa nao kwenye ncha za vidole vyao. Maandishi ya Shell yana jukumu kubwa katika kugeuza kiotomatiki kazi zinazorudiwa ambazo sivyo zingekuwa za kuchosha kutekeleza mstari kwa mstari.
Katika somo hili, tunaangazia baadhi ya shughuli za kimsingi za uandishi wa ganda ambazo kila mtumiaji wa Linux anapaswa kuwa nazo.
1. Unda Hati Rahisi ya Shell
Hati ya ganda ni faili ambayo inajumuisha maandishi ya ASCII. Tutaanza kwa kuunda script rahisi ya shell, na kufanya hivyo, tutatumia mhariri wa maandishi. Kuna idadi kubwa ya wahariri wa vim.
Tutaanza kwa kuunda hati rahisi inayoonyesha \Hujambo ulimwengu inapotekelezwa.
$ vim hello.sh
Bandika yaliyomo kwenye faili na uhifadhi.
#!/bin/bash # Print Hello world message echo "Hello World!"
Hebu tuende juu ya mstari wa hati ya shell kwa mstari.
- Mstari wa kwanza -
#!/bin/bash
- inajulikana kama kichwa cha shebang. Huu ni muundo maalum ambao unaonyesha ni programu gani itatumika kutafsiri maandishi. Katika kesi hii, hii itakuwa ganda la bash lililoonyeshwa na /bin/bash. Kuna lugha zingine za uandishi kama vile Python ambayo inaashiriwa na#!/usr/bin/python3
na Perl ambayo kichwa chake cha shebang kimeashiriwa na#!/usr/bin/perl
. - Mstari wa pili ni maoni. Maoni ni taarifa inayoelezea kile hati ya ganda hufanya na haitekelezwi wakati hati inaendeshwa. Maoni kila mara hutanguliwa na alama ya heshi
#
. - Mstari wa mwisho ni amri inayochapisha ujumbe wa ‘Hujambo Ulimwenguni’ kwenye terminal.
Hatua inayofuata ni kufanya hati itekelezwe kwa kupeana ruhusa ya kutekeleza kwa kutumia amri ya chmod kama inavyoonyeshwa.
$ chmod +x hello.sh
Mwishowe, endesha hati ya ganda kwa kutumia mojawapo ya amri:
$ bash hello.sh OR $ ./hello.sh
2. Kutumia Taarifa za Masharti Kutekeleza Kanuni
Kama lugha zingine za programu, taarifa za masharti hutumika katika uandishi wa bash kufanya maamuzi, kukiwa na tofauti kidogo tu katika sintaksia. Tutashughulikia kauli za masharti za if, kama-mwingine, na elif.
Taarifa ya if inaweza kutumika kujaribu hali moja au nyingi. Tutaanza na matumizi ya kimsingi ya if taarifa ya kujaribu hali moja. Taarifa if inafafanuliwa na vizuizi vya if ... fi
.
if command then statement fi
Hebu tuangalie hati ya shell hapa chini.
#!/bin/bash echo 'Enter the score' read x if [[ $x == 70 ]]; then echo 'Good job!' fi
Hati iliyo hapo juu ya ganda humshawishi mtumiaji kutoa alama ambayo huhifadhiwa katika mabadiliko ya x. Ikiwa alama inalingana na 70, hati hurejesha matokeo \Kazi njema!. Opereta linganishi ==
hutumika kujaribu ikiwa alama imeingizwa, ambayo imehifadhiwa katika mabadiliko x, ni sawa. hadi 100.
Waendeshaji wengine wa kulinganisha unaweza kutumia ni pamoja na:
-eq
- Sawa na-ne
- Sio sawa na-lt
- Chini ya-le
- Chini ya au sawa na-lt
- Chini ya-ge
- Kubwa kuliko au sawa na
Kwa mfano, kipengele cha if-taarifa hapa chini huchapisha ‘Fanya kazi kwa bidii zaidi’ ikiwa alama ya ingizo ni thamani yoyote chini ya 50.
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
Kwa hali ambapo una matokeo 2 yanayowezekana: - iwe hili au lile - taarifa ikiwa-ingine itakusaidia.
if command then statement1 else statement2 fi
Hati iliyo hapa chini inasoma alama ya ingizo na kuangalia ikiwa ni kubwa kuliko au sawa na 70.
Ikiwa alama ni kubwa kuliko au sawa na 70, utapata ujumbe wa ‘Kazi nzuri, Umefaulu!’. Walakini, ikiwa alama iko chini ya 70, matokeo ya 'Umeshindwa' yatachapishwa.
#!/bin/bash echo 'Enter the score' read x if [[ $x -ge 70 ]]; then echo 'Great job, You passed!' else echo 'You failed' fi
Katika hali ambapo kuna hali nyingi na matokeo tofauti, kauli ya if-elif-else hutumiwa. Taarifa hii inachukua muundo ufuatao.
if condition1 then statement1 elif condition2 then statement2 else statement3 fi
Kwa mfano, tuna hati ya bahati nasibu ambayo hukagua ikiwa nambari iliyoingizwa ni 90, 60 au 30.
#!/bin/bash echo 'Enter the score' read x if [[ $x -eq 90 ]]; then echo “You have won the First Prize” elif [[ $x -eq 60 ]]; then echo “You have won the Second Prize” elif [[ $x -eq 30 ]]; then echo “You have won the Second Prize” else echo “Please try again” fi
3. Kutumia Taarifa ya Ikiwa na NA Mantiki
Unaweza kutumia if taarifa kando ya AND opereta wa mantiki kutekeleza kazi ikiwa masharti mawili yataridhika. Opereta &&
hutumiwa kuashiria NA mantiki.
#!/bin/bash echo 'Please Enter your user_id' read user_id echo 'Please Enter your tag_no' read tag_id if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]]; then echo “Login successful” else echo “Login failure” fi
5. Kutumia Taarifa ya Ikiwa na AU Mantiki
Unapotumia mantiki ya AU, ambayo inawakilishwa na alama ya ||
, mojawapo ya masharti yanahitaji kuridhika na hati ili kutoa matokeo yanayotarajiwa.
#!/bin/bash echo 'Please enter a random number' read number if [[ (number -eq 55 || number -eq 80) ]]; then echo 'Congratulations! You’ve won' else echo 'Sorry, try again' fi
Tumia Miundo ya Kitanzi
Loops za bash huruhusu watumiaji kufanya mfululizo wa kazi hadi matokeo fulani yamepatikana. Hii inakuja kwa manufaa katika kufanya kazi zinazojirudia. Katika sehemu hii, tutakuwa na mtazamo wa baadhi ya vitanzi ambavyo pia utapata katika lugha zingine za upangaji programu.
Hii ni moja ya vitanzi rahisi kufanya kazi nayo. Syntax ni rahisi sana:
while <some test> do commands done
Kitanzi cha wakati hapa chini kinaorodhesha nambari zote kutoka 1 hadi 10 wakati wa kutekelezwa.
#!/bin/bash # A simple while loop counter=1 while [ $counter -le 10 ] do echo $counter ((counter++)) done
Wacha tujadili kitanzi cha wakati:
Kaunta ya kutofautisha imeanzishwa hadi 1. Na wakati kigezo ni chini ya au sawa na 10, thamani ya kaunta itaongezwa hadi hali itakapotimizwa. Laini echo $counter huchapisha nambari zote kutoka 1 hadi 10.
Kama kitanzi cha wakati, kitanzi cha kitanzi kinatumika kutekeleza nambari mara kwa mara. I.e. kurudia utekelezaji wa nambari mara nyingi iwezekanavyo inavyofafanuliwa na mtumiaji.
Sintaksia ni:
for var in 1 2 3 4 5 N do command1 command2 done
Kitanzi kilicho hapa chini kinarudia kupitia 1 hadi 10 na kuchakata maadili yao kwenye skrini.
Njia bora ya kufikia hili ni kufafanua fungu la visanduku kwa kutumia viunga vyenye kupindapinda mara mbili { }
kama inavyoonyeshwa badala ya kuandika nambari zote.
#!/bin/bash # Specify range in a for loop for num in {1..10} do echo $num done
Vigezo vya Nafasi vya Bash
Kigezo cha nafasi ni kigezo maalum ambacho kinarejelewa kwenye hati wakati maadili yanapitishwa kwenye ganda lakini hayawezi kukabidhiwa. Vigezo vya nafasi huanzia $0 $1 $2 $3 …… hadi $9. Zaidi ya thamani ya $9, vigezo lazima vijumuishwe kwenye mabano yaliyopinda k.m $ {10}, $ {11} … na kadhalika.
Wakati wa kutekeleza hati, kigezo cha kwanza cha nafasi ambacho ni $0 huchukua jina la hati ya ganda. Kigezo cha $1 kinachukua kigezo cha kwanza kinachopitishwa kwenye terminal, $2 inachukua ya pili, $3 ya tatu na kadhalika.
Wacha tuunde script test.sh kama inavyoonyeshwa.
#!/bin/bash echo "The name of the script is: " $0 echo "My first name is: " $1 echo "My second name is: " $2
Ifuatayo, tekeleza hati na upe jina la kwanza na la pili kama hoja:
# bash test.sh James Kiarie
Kutoka kwa pato, tunaweza kuona kwamba tofauti ya kwanza ambayo imechapishwa ni jina la hati ya shell, katika kesi hii, test.sh. Baada ya hapo, majina yanachapishwa sambamba na vigezo vya nafasi vilivyofafanuliwa kwenye hati ya ganda.
Vigezo vya nafasi ni muhimu kwa kuwa vinakusaidia kubinafsisha data inayoingizwa badala ya kugawa thamani kwa kigezo.
Nambari za Toka za Amri ya Shell
Hebu tuanze kwa kujibu swali rahisi, Msimbo wa kutoka ni nini?
Kila amri inayotekelezwa kwenye ganda na mtumiaji au hati ya ganda ina hali ya kutoka. Hali ya kuondoka ni nambari kamili.
Hali ya kutoka ya 0 inamaanisha kuwa amri imetekelezwa kwa mafanikio bila makosa yoyote. Kitu chochote kati ya 1 hadi 255 kinaonyesha kuwa amri ilishindwa au haikutekelezwa kwa mafanikio.
Ili kupata hali ya kuondoka kwa amri, tumia $?
Tofauti ya Shell.
Hali ya kuondoka ya pointi 1 kwa kosa la jumla au makosa yoyote yasiyoruhusiwa kama vile kuhariri faili bila ruhusa za sudo.
Hali ya kuondoka ya pointi 2 kwa matumizi yasiyo sahihi ya amri au kutofautiana kwa shell iliyojengwa.
Hali ya 127 ya kuondoka inaelekeza kwa amri isiyo halali ambayo kwa kawaida hutoa kosa la 'amri haikupatikana'.
Inachakata Pato la Amri za Shell ndani ya Hati
Katika uandishi wa bash, unaweza kuhifadhi matokeo ya amri katika kutofautisha kwa matumizi ya baadaye. Hii pia inajulikana kama uingizwaji wa amri ya ganda na inaweza kupatikana kwa njia zifuatazo.
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
Kwa mfano, unaweza kuhifadhi amri ya tarehe katika kigezo kinachoitwa leo na uite hati ya ganda ili kufichua tarehe ya sasa.
#!/bin/bash today=$(date) echo “Today is $today”
Hebu tuchukue mfano mwingine. Tuseme unataka kupata watumiaji halali wa kuingia kwenye mfumo wako wa Linux. Ungefanyaje kuhusu hilo? Kwanza, orodha ya watumiaji wote (watumiaji wa mfumo, mchakato, na kuingia) huhifadhiwa kwenye /etc/passwd faili.
Ili kutazama faili, utahitaji kutumia grep amri kutafuta watumiaji walio na /bin/bash sifa na utumie kata -c 1-10 amri kama inavyoonyeshwa kuonyesha herufi 10 za kwanza za majina.
Tumehifadhi amri ya paka kwa utofauti wa login_users.
#!/bin/bash login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10) echo 'This is the list of login users: echo $login_users
Hii huleta mafunzo yetu juu ya kuunda hati rahisi za ganda hadi mwisho. Tunatumahi umepata hii muhimu.