Maanta waxaan ka hadli doonaa bash scripts. Tani - qoraalada khadka taliska, oo loo qoray qolofka bashka. Waxaa jira qolof kale, sida zsh, tcsh, ksh, laakiin waxaan diiradda saari doonaa bash. Qalabkan waxaa loogu talagalay qof walba, shuruudda kaliya ayaa ah awoodda lagu shaqeynayo khadka taliska Linux
Qoraalada khadka taliska waa isku amarro isku mid ah oo laga soo gelin karo kiiboodhka, laga soo ururiyay faylal oo lagu midaynayo ujeeddo guud. Isla mar ahaantaana, natiijooyinka shaqada kooxuhu waxay noqon karaan kuwo qiimo leh oo madaxbannaan ama waxay u adeegi karaan qayb ka mid ah kooxaha kale. Qoraaladu waa hab awood badan oo lagu toosiyo falalka soo noqnoqda.
Marka, haddii aan ka hadalno khadka taliska, waxay kuu ogolaaneysaa inaad fuliso dhowr amar hal mar, adoo gelaya semicolon:
pwd ; whoami
Dhab ahaantii, haddii aad tan ku tijaabisay terminaalkaaga, qoraalkaaga bash ee ugu horreeya ee adeegsada laba amar hore ayaa loo qoray. Waxay u shaqeysaa sida tan. Kooxda marka hore pwd soo bandhigaya macluumaadka ku saabsan hagaha shaqada ee hadda, ka dibna amarka whoamiwaxay tusinaysaa macluumaadka ku saabsan isticmaalaha aad ku soo gashay sidii.
Isticmaalka habkan, waxaad isku dari kartaa amarro badan oo aad rabto hal xariiq, xadka waa kaliya tirada ugu badan ee doodaha loo gudbin karo barnaamijka. Waxaad ku qeexi kartaa xadkan amarka soo socda:
getconf ARG_MAX
Khadka talisku waa qalab weyn, laakiin waa inaad gelisaa amarrada mar kasta oo aad u baahato. Ka warran haddii aan u qorno amarro faylal ah oo aan si fudud ugu wacno faylkaas si aan u fulinno? Runtii, faylka aan ka hadlayno waxaa loo yaqaannaa qoraalka khadka taliska.
Sida qoraallada bash u shaqeeyaan
Samee fayl madhan adigoo isticmaalaya amarka touch. Sadarkeeda koowaad, waxaad u baahan tahay inaad ku qeexdo qolofka aan isticmaaleyno. Waxaan xiiseyneynaa bash, marka xariiqda koowaad ee faylka ayaa noqon doonta:
#!/bin/bash
Meel kale oo ka mid ah faylkan, calaamada xashiishka ayaa loo isticmaalaa in lagu muujiyo faallooyinka qoloftu aanay shaqayn. Si kastaba ha ahaatee, xariiqda koowaad waa kiis gaar ah, waa calaamad rodol ah oo ay ku xigto dhibic qaylo ah (taxankan waxaa la yiraahdaa shebang) iyo dariiqa loo maro bash, tilmaan nidaamka in qoraalka si gaar ah loogu abuuray bash.
Awaamiirta Shell waxaa lagu kala saaraa khadka quudinta, faallooyinka waxaa lagu kala saaraa calaamad rodol ah. Waa kan sida ay u egtahay:
#!/bin/bash
# This is a comment
pwd
whoami
Halkan, sida khadka taliska, waxaad ku qori kartaa amarrada hal sadar, iyaga oo ku kala soocaya semicolon. Si kastaba ha ahaatee, haddii aad amarro ku qorto xariiqyo kala duwan, feylku wuu sahlan yahay in la akhriyo. Si kastaba ha noqotee, qoloftu way ka baaraandegi doontaa iyaga.
Dejinta Ogolaanshaha Faylka Qoraalka
Kaydi faylka adoo siinaya magac myscript, iyo qoraalka bashku wuxuu ku dhow yahay in la sameeyo. Hadda waxa ay hadhaysaa oo kaliya in faylkan laga dhigo mid la fulin karo, haddii kale, marka aad isku daydo inaad socodsiiso, waxaad la kulmi doontaa qalad Permission denied.
Isku day inaad ku socodsiiso faylka qoraalka leh ogolaansho si khaldan loo habeeyey
Aan ka dhigno faylka la fulin karo:
chmod +x ./myscript
Hadda aan isku dayno inaan fulino:
./myscript
Kadib dejinta ogolaanshaha, wax walbaa waxay u shaqeeyaan sidii la rabay.
Si guul leh u socodsii qoraalka bash
Soo saarida fariinta
Si aad qoraalka ugu daabacdo console Linux, isticmaal amarka echo. Aynu isticmaalno aqoonta xaqiiqadan oo aynu tafatirno qoraalkayaga, innagoo sharraxaad ku kordhinayna xogta soo saartay amarradii hore ugu jiray:
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
Waa kuwan waxa dhacaya ka dib socodsiinta qoraalka la cusboonaysiiyay.
Soo saarista fariimaha qoraalka
Hadda waxaan muujin karnaa summada sharraxaadda annagoo adeegsanayna amarka echo. Haddii aadan aqoon sida loo tafatiro faylka adigoo isticmaalaya qalabka Linux, ama haddii aadan horay u arkin amarka echo, eega tan wax
Isticmaalka Variables
Doorsoomayaashu waxay kuu oggolaanayaan inaad ku kaydiso macluumaadka faylka qoraalka, sida natiijooyinka amarada, si loogu isticmaalo amarada kale.
Ma jiraan wax khalad ah in la fuliyo amarrada shakhsi ahaaneed iyada oo aan la kaydin natiijooyinka shaqadooda, laakiin suurtogalnimada habkani waa mid aad u xaddidan.
Waxaa jira laba nooc oo doorsoomayaal ah oo loo isticmaali karo qoraallada bash:
Isbeddellada Deegaanka
Doorsoomayaasha isticmaalaha
Isbeddellada Deegaanka
Mararka qaarkood amarrada qolofka waxay u baahan yihiin inay la shaqeeyaan xogta nidaamka qaarkood. Tusaale ahaan, waa kan sida loo muujiyo tusaha guriga isticmaalaha hadda:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
Fadlan ogow in aan isticmaali karno doorsoomiyaha nidaamka $HOME xigashooyinka laba jibaaran, tani kama hor istaagi doonto nidaamka inuu aqoonsado. Waa kuwan waxa dhacaya haddii aad socodsiiso qoraalka sare.
Nidaamku waxa uu ogaan doonaa calaamadda dollarka ee xadhigga xaddidan ee xigashooyinka waxaanu u qaadan doonaa in aanu tixraacnay doorsoome. Qoraalku wuxuu isku dayi doonaa inuu muujiyo qiimaha doorsoomayaasha aan la qeexin. $1. Tani ma aha waxa aan u baahanahay. Maxaa la sameeyaa?
Xaaladdan oo kale, adeegsiga dabeecadda kontoroolka dhabarka ka hor inta aan calaamada dollarku caawinin:
echo "I have $1 in my pocket"
Qoraalku hadda wuxuu soo saari doonaa sida saxda ah ee la filayo.
Isticmaalka isku xigxiga baxsadka ah si loo soo saaro calaamad dollar
Doorsoomayaasha isticmaalaha
Marka lagu daro doorsoomayaasha deegaanka, qoraalada bashku waxay kuu oggolaanayaan inaad dejiso oo aad isticmaasho doorsoomayaashaada qoraalka. Doorsoomayaasha noocan oo kale ah waxay hayaan qiimo ilaa qoraalku dhammaanayo.
Sida doorsoomayaasha nidaamka, doorsoomayaasha isticmaalaha waxa lagu geli karaa calaamadda dollarka:
TNW-CUS-FMP - koodka xayeysiinta ee 10% qiimo dhimista adeegyadayada, diyaar u ah hawlgelinta 7 maalmood gudahood
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Waa kan waxa dhacaya ka dib socodsiinta qoraalkan oo kale.
Isbeddellada gaarka ah ee qoraalka
Beddelka taliska
Mid ka mid ah sifooyinka ugu faa'iidada badan ee qoraallada bashku waa awoodda lagu soo saaro macluumaadka laga soo saaro amarrada oo lagu meeleeyo doorsoomayaasha, taas oo kuu ogolaanaysa inaad isticmaasho macluumaadkan meel kasta oo ka mid ah faylka qoraalka.
Tan waxaa lagu samayn karaa laba siyaabood.
Iyada oo leh jilaha dhabarka "`"
Iyada oo la kaashanayo dhismaha $()
Markaad isticmaalayso habka ugu horreeya, ka taxaddar inaadan isticmaalin hal xigasho halkii aad ka isticmaali lahayd gadaal. Amarka waa in lagu xidhaa laba calaamadood:
mydir=`pwd`
Habka labaad, mid la mid ah ayaa u qoran sidatan:
mydir=$(pwd)
Qoraalkuna, ugu dambeyntii, wuxuu u ekaan karaa sidan:
#!/bin/bash
mydir=$(pwd)
echo $mydir
Inta lagu jiro hawlgalkeeda, wax soo saarka amarka pwdwaxaa lagu kaydin doonaa doorsoome mydir, waxa ku jira oo isticmaalaya amarka echo, waxay aadi doontaa console-ka
Qoraal kaydiya natiijada amarka doorsoome
Hawlaha xisaabta
Si aad u samayso hawlo xisaabeed oo ku jira faylka qoraalka, waxaad isticmaali kartaa dhismaha foomka $((a+b)):
Xaaladaha qaarkood, waxaa loo baahan yahay in la xakameeyo socodka fulinta amarka. Tusaale ahaan, haddii qiimo gaar ah uu ka weyn yahay shan, hal fal waa in la sameeyaa, haddii kale mid kale. Tani waxay khusaysaa xaalado aad u badan, halkanna qaabka xakamaynta ayaa naga caawin doona if-then. Qaabkeeda ugu fudud, waxay u egtahay sidan:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Oo halkan waa tusaale shaqo:
#!/bin/bash
if pwd
then
echo "It works"
fi
Xaaladdan oo kale, haddii fulinta amarka pwdsi guul leh u dhammaato, qoraalka "ay shaqaynayso" waxa lagu soo bandhigi doonaa console-ka.
Aynu isticmaalno aqoonta aan haysano oo aynu qorno dhacdo ka adag. Aynu nidhaahno waxaan u baahanahay inaan helno isticmaale /etc/passwd, haddii la helayna soo sheeg inay jiraan.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
Tani waa waxa dhacaya ka dib socodsiinta qoraalkan.
Raadinta isticmaalaha
Halkan waxaan ku isticmaalnay amarka grepsi aad u raadiso isticmaale fayl ku jira /etc/passwd. Haddii kooxda grepAdaan aqoon kuu lahayn, tilmaanteeda waa la heli karaa halkan.
Tusaalahan, haddii isticmaalaha la helo, qoraalka ayaa soo bandhigi doona fariin ku habboon. Maxaa dhacaya haddii isticmaaluhu la heli waayo? Xaaladdan oo kale, qoraalka ayaa si fudud u dhammaystiri doona fulinta iyada oo aan waxba noo sheegin. Waxaan jeclaan lahaa in uu sidoo kale wax nooga sheego arrintan, markaa aynu hagaajinno koodhka.
Dhismaha kantaroolka haddii-ka dibna-kale
Si barnaamijku awood ugu yeesho inuu soo tebiyo natiijooyinka raadinta guul iyo guuldarrada labadaba, waxaan isticmaalnaa dhismaha if-then-else. Waa kan sida loo habeeyey:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
else
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Haddii amarka ugu horreeya uu soo celiyo eber, taas oo macnaheedu yahay in si guul leh loo fuliyay, xaaladdu waxay noqon doontaa run oo fulintu ma socon doonto laanta. else. Haddii kale, haddii wax aan eber ahayn la soo celiyo, taas oo macnaheedu yahay guuldarro, ama natiijo been ah, amarrada ka dib else.
Aan qorno qoraalkan soo socda:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesnβt exist"
fi
Dilkiisa ayaa hoos u dhacay else.
Ku socodsiinta qoraal leh dhismo haddi-ka-kale ah
Hagaag, aan sii socono oo aan is waydiino xaalado ka sii adag. Maxaa dhacaya haddii aad u baahan tahay inaad hubiso hal xaalad, laakiin dhowr ah? Tusaale ahaan, haddii la helo isticmaale loo baahan yahay, hal fariin waa in la soo bandhigaa, haddii shuruudo kale la buuxiyo, fariin kale waa in la soo bandhigaa, iyo wixii la mid ah. Xaaladdan oo kale, xaaladaha buulka ah ayaa na caawin doona. Waxay u egtahay sidan:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°1
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
elif ΠΊΠΎΠΌΠ°Π½Π΄Π°2
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Haddii amarka ugu horreeya uu soo celiyo eber, taas oo muujinaysa fulintiisa guusha leh, amarrada ku jira qaybta koowaad waa la fulin doonaa. thenHaddii kale, haddii shuruudda koowaad ay been tahay, iyo haddii amarka labaad uu soo celiyo eber, qaybta labaad ee koodka ayaa la fulin doonaa.
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesnβt exist but anyway there is a directory under /home"
fi
Qoraalkan oo kale, waxaad tusaale ahaan, ku abuuri kartaa isticmaale cusub adoo isticmaalaya amarka useradd, haddii raadinta ay soo celiso natiijo la'aan, ama samee wax kale oo faa'iido leh.
Isbarbardhigga Tirada
Qoraallada, waxaad is barbardhigi kartaa qiyamka tirooyinka. Hoos waxaa ku yaal liis amarrada khuseeya
n1 -eq n2Run ku soo noqda haddii n1 si siman n2. n1 -ge n2 Run ku soo noqda haddii n1badan ama siman n2. n1 -gt n2Run ku soo noqda haddii n1 in ka badan n2. n1 -le n2Run ku soo noqda haddii n1yar ama siman n2. n1 -lt n2Run ku soo noqda haddii n1 ka yar yahay n2. n1 -ne n2Run ku soo noqda haddii n1lamana siman yahay n2.
Tusaale ahaan, aan isku dayno mid ka mid ah hawlwadeenada isbarbardhigga. Ogsoonow in tibaaxuhu uu ku xidhan yahay xidhmo labajibbaaran.
#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi
Waa kan waxa amarkani soo saari doono.
Isbarbardhigga tirooyinka qoraallada
Qiimaha isbedbeddelaya val1ka weyn 5, ugu dambeyntii laanta waa la fuliyay thenhawlwadeenka isbarbardhigga iyo fariinta u dhiganta ayaa lagu soo bandhigay console-ka.
Isbarbardhigga xargaha
Qoraaladu waxay sidoo kale barbar dhigi karaan qiyamka xargaha. Hawlwadeennada isbarbardhigga ayaa u muuqda kuwo fudud, laakiin hawlwadeennada isbarbardhigga xargaha ayaa leh astaamo gaar ah, kuwaas oo aan hoosta ka taaban doono. Halkan waxaa ah liiska hawl-wadeennada.
str1 = str2 Wuxuu tijaabiyaa xadhkaha sinnaanta, wuxuu ku noqdaa run haddii xarguhu isku mid yihiin.
str1 != str2Run ku soo noqda haddi aanay xadhiggu isku mid ahayn. str1 < str2Run ku soo noqda haddii str1Ka yar str2. str1 > str2 Run ku soo noqda haddii str1in ka badan str2. -n str1 Run ku soo noqda haddii dhererka str1Eber ka sarreeya. -z str1Run ku soo noqda haddii dhererka str1waxay la mid tahay eber.
Waa kan tusaale isbarbardhigga xargaha ee qoraalka:
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
Natiijada fulinta qoraalka, waxaan helnaa kuwan soo socda.
Isbarbardhigga Xargaha ee Qoraallada
Halkan waxaa ah hal sifo oo isbarbardhigga xargaha oo mudan in la xuso. Magac ahaan, ">" iyo "<" hawl-wadeennada waa in lagu baxsadaa dib-u-dhac, haddii kale qoraalku si sax ah uma shaqayn doono, in kasta oo aanay farriimaha khaladku soo bixin. Qoraalku wuxuu tarjumaa ">" calaamad ahaan amar si loo jiheeyo wax soo saarka.
Waa kan sida la shaqaynta hawlwadeenadaan ugu eg tahay koodka:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Waa kuwan natiijada qoraalka
Isbarbardhigga xargaha, digniinta la tuuray
Ogsoonow in qoraalka, inkasta oo uu fulinayo, uu bixiyo digniin:
./myscript: line 5: [: too many arguments
Si looga takhaluso digniintan, waxaan ku soo gabagabeyneynaa $val2 laba xigasho:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Hadda wax walba waxay u shaqeeyaan sidii la rabay.
Isbarbardhigga xargaha
Sifada kale ee ">"iyo"" hawl wadeenada ayaa ah sida ay ugu shaqeeyaan xarfaha xarfaha waaweyn iyo kuwa yaryar. Si aan u fahanno sifadan, aan diyaarino faylka qoraalka ah ee ka kooban waxyaabahan soo socda:
Likegeeks
likegeeks
Ku keydi magac myfileka dibna ku socodsii amarka soo socda ee terminalka:
sort myfile
Waxay u kala sooci doontaa khadadka faylka sida:
likegeeks
Likegeeks
kooxda sort, sida caadiga ah, waxay u kala saartaa xargaha sida u koraya, taasoo la macno ah xarafka yar ee tusaalaheenna wuxuu ka yar yahay xarafka waaweyn. Hadda aan diyaarino qoraal is barbar dhigi doona isla xargaha:
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Haddii aad socodsiiso, waxaa soo baxday in caksigeeda run tahay - xarafka yar ayaa hadda ka weyn kan weyn.
kala sooc amarka iyo isbarbardhigga xadhigga faylka qoraalka
Marka la barbardhigo amarrada, xarfaha waaweyn way ka yar yihiin xarfaha yaryar. Isbarbardhigga xargaha halkan waxaa lagu sameeyaa isbarbardhigga koodka xarfaha ASCII, nidaamka kala-soocida ayaa sidaas ku xiran koodka jilayaasha.
kooxda sort, iyaduna, waxay isticmaashaa nidaamka kala-soocida ee lagu qeexay habaynta luqadda nidaamka.
Jeegaga galka
Waxaa laga yaabaa in amarrada hoose lagu isticmaalo inta badan qoraallada bash. Waxay kuu oggolaanayaan inaad hubiso xaalado kala duwan oo ku saabsan faylasha. Halkan waxaa ah liiska amarradan.
Amarradan, iyo sidoo kale kuwa kale oo badan oo maanta laga hadlay, way fududahay in la xasuusto. Magacyadooda, oo loo soo gaabiyo erayo kala duwan, ayaa si toos ah u tilmaamaya jeegaga ay sameeyaan.
Aan isku dayno mid ka mid ah amarada ficil ahaan:
#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi
Qoraalkan, ee hagaha jira, ayaa soo bandhigi doona waxa ku jira.
Bash Scripting Qaybta 3, Halbeegyada & fursadaha - Maaddadani waxay u heellan tahay cabbirrada xariiqda taliska iyo furayaasha loo gudbin karo qoraallada, iyagoo ku shaqeynaya xogta uu isticmaaluhu galo oo laga akhrin karo faylasha.
Bash Scripting Qaybta 4, Gelida & Soo saarista - halkan waxaan ka hadlaynaa sharraxayaasha faylalka oo aan la shaqeyno iyaga, ku saabsan wax-soo-saarka, soo-saarka, khaladaadka, durdurrada dib-u-hagaajinta.
Bash Scripting Qaybta 11, Amarka Filo - Maaddadani waxay u heellan tahay qalabka la filayo, kaas oo aad si otomaatig ah ugu dhejin karto is-dhexgalka qalabka is-dhexgalka. Gaar ahaan, tani waxay ku saabsan tahay qoraallada la filayo iyo sida ay ula falgalaan qoraallada bash iyo barnaamijyada kale.
Waxaan u maleyneynaa in mid ka mid ah waxyaabaha ugu waaweyn ee ku saabsan maqaalladan taxanaha ah ay tahay inay ka bilaabato aasaaska aasaasiga ah, oo ku habboon isticmaaleyaasha heer kasta, si tartiib tartiib ah u horseedda mowduucyo aad u daran, oo qof walba siinaya fursad uu ku hormariyo qorista khadka taliska Linux.
Akhristayaasha sharafta lahow! Waxaan weydiisaneynaa bash-programming gurus inay ka hadlaan sidii ay ku gaareen heerkii ugu sarreeyay, oo ay wadaagaan sirta, waxaanan sugeynaa aragtiyo kuwa hadda qoray qoraalkoodii ugu horreeyay.
Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.
Turjumi maqaallada taxanaha ah ee hadhay?
Haa!
Looma baahna
1030 isticmaale ayaa u codeeyay. 106 isticmaale ayaa ka aamusay.