Kajeno re tla bua ka bash scripts. Sena - mangolo a taelo, e ngotsoeng bakeng sa khetla ea bash. Ho na le likhetla tse ling tse kang zsh, tcsh, ksh, empa re tla tsepamisa maikutlo ho bash. Boitsebiso bona bo reretsoe motho e mong le e mong, boemo feela ke bokhoni ba ho sebetsa mola oa taelo Linux
Lingoliloeng tsa mola oa taelo ke pokello ea litaelo tse tšoanang tse ka kengoang ho tsoa ho keyboard, tse bokelletsoeng lifaeleng le ho kopanngoa ke sepheo se itseng se tšoanang. Tabeng ena, liphetho tsa mosebetsi oa lihlopha li ka ba tsa boleng bo ikemetseng kapa tsa sebetsa e le lintlha tse kenyang lihlopha tse ling. Lingoliloeng ke mokhoa o matla oa ho iketsetsa liketso tse etsoang khafetsa.
Kahoo, haeba re bua ka mola oa taelo, o u lumella ho phethahatsa litaelo tse 'maloa ka nako e le' ngoe ka ho li kenya li arotsoe ke semicolon:
pwd ; whoami
Ebile, haeba u lekile sena ho terminal ea hau, script ea hau ea pele ea bash e kenyelletsang litaelo tse peli e se e ngotsoe. E sebetsa tjena. Sehlopha pele pwd e bonts'a tlhahisoleseling mabapi le sesebelisoa sa hajoale sa ho sebetsa, ebe taelo whoamie bonts'a lintlha ka mosebelisi eo u keneng ho eena.
U sebelisa mokhoa ona, u ka kopanya litaelo tse ngata kamoo u ratang kateng moleng o le mong, moeli o le mong feela ke palo e kholo ea likhang tse ka fetisetsoang lenaneong. O ka hlalosa moeli ona o sebelisa taelo e latelang:
getconf ARG_MAX
Mohala oa taelo ke sesebelisoa se setle, empa u tlameha ho kenya litaelo ho eona nako le nako ha u li hloka. Ho thoe'ng haeba re ka ngola lethathamo la litaelo faeleng ebe re bitsa faele eo ho e phetha? Ha e le hantle, faele eo re buang ka eona e bitsoa script line line.
Kamoo li-script tsa bash li sebetsang kateng
Etsa faele e se nang letho u sebelisa taelo touch. Mohala oa eona oa pele o hloka ho bontša hore na re tla sebelisa khetla efe. Re thahasella bash, kahoo mola oa pele oa faele e tla ba:
#!/bin/bash
Mela e meng faeleng ena e sebelisa letšoao la hash ho bontša maikutlo ao khetla ha e sebetse. Leha ho le joalo, mola oa pele ke nyeoe e khethehileng, ho na le hashe e lateloang ke letšoao la mohoo (tatellano ena e bitsoa shebang) le tsela ea ho bash, bonts'a sistimi eo script e etselitsoeng eona ka ho khetheha bash.
Litaelo tsa Shell li arotsoe ke phepelo ea line, maikutlo a aroloa ke letšoao la hash. Ena ke tsela eo e shebahalang ka eona:
#!/bin/bash
# This is a comment
pwd
whoami
Mona, joalo ka mola oa taelo, o ka ngola litaelo moleng o le mong, o arotsoe ke li-semicolon. Leha ho le joalo, haeba u ngola litaelo meleng e fapaneng, faele e bonolo ho e bala. Leha ho le joalo, khetla e tla li sebetsa.
Ho beha litumello tsa faele ea script
Boloka faele e e fang lebitso myscript, 'me mosebetsi oa ho bopa bash script o se o tla fela. Hona joale se setseng ke ho etsa hore faele ena e phethahale, ho seng joalo, haeba u leka ho e tsamaisa, u tla kopana le phoso. Permission denied.
E leka ho tsamaisa faele ea script e nang le litumello tse hlophisitsoeng ka phoso
Ha re etse hore faele e phethahale:
chmod +x ./myscript
Joale a re leke ho e phetha:
./myscript
Kamora ho beha litumello tsohle li sebetsa kamoo li lokelang.
E atlehile ho tsamaisa bash script
Sephetho sa molaetsa
Ho hlahisa mongolo ho khomphutha ea Linux, sebelisa taelo echo. Ha re sebeliseng tsebo ea 'nete ena' me re hlophise sengoloa sa rona, re kenyelletsa litlhaloso ho data e hlahisoang ke litaelo tse seng li ntse li le ho eona:
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
Sena ke se etsahalang ka mor'a ho tsamaisa script e ntlafalitsoeng.
Ho hlahisa melaetsa ho tsoa ho script
Joale re ka bonts'a lintlha tse hlalosang re sebelisa taelo echo. Haeba o sa tsebe ho hlophisa faele o sebelisa lisebelisoa tsa Linux, kapa ha o so bone taelo pele echo, sheba sena litaba.
Ho Sebelisa Liphetoho
Liphetoho li u lumella ho boloka tlhahisoleseding faeleng ea script, joalo ka liphetho tsa litaelo, bakeng sa ho sebelisoa ke litaelo tse ling.
Ha ho letho le phoso ka ho phethahatsa litaelo tsa motho ka mong ntle le ho boloka liphetho tsa tsona, empa mokhoa ona o na le bokhoni bo fokolang.
Ho na le mefuta e 'meli ea mefuta e ka sebelisoang ho bash scripts:
Liphetoho tsa Tikoloho
Liphetoho tsa mosebelisi
Liphetoho tsa Tikoloho
Ka linako tse ling litaelo tsa shell li hloka ho sebetsa le data e itseng ea tsamaiso. Mona ke mohlala oa mokhoa oa ho hlahisa bukana ea lehae ea mosebelisi oa hajoale:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
Ka kopo elelloa hore re ka sebelisa mofuta oa sistimi $HOME ka mantsoe a mabeli, sena se ke ke sa thibela tsamaiso ho e lemoha. Sena ke seo u se fumanang haeba u tsamaisa boemo bo ka holimo.
Ho sebedisa phapano ya tikoloho sengolweng
Empa ho thoe'ng haeba u hloka ho hlahisa letšoao la dollar skrineng? Ha re leke sena:
echo "I have $1 in my pocket"
Sistimi e tla bona lets'oao la lidolara khoeleng e qotsitsoeng ebe e nka hore re buile ka mofuta o fapaneng. Script e tla leka ho bontša boleng ba mofuta o sa hlalosoang $1. Sena ha se seo re se hlokang. Se o lokelang ho se etsa?
Boemong bona, ho sebelisa sebopeho sa ho baleha, ho khutlela morao, pele letšoao la dollar le tla thusa:
echo "I have $1 in my pocket"
Sengoliloeng joale se tla hlahisa hantle se lebelletsoeng.
Ho sebelisa tatellano ea ho baleha ho hatisa letšoao la dollar
Liphetoho tsa mosebelisi
Ntle le mefuta e fapaneng ea tikoloho, mangolo a bash a u lumella ho hlalosa le ho sebelisa mefuta ea hau ea mongolo. Mefuta e joalo e na le boleng ho fihlela script e qeta ho e sebelisa.
Joalo ka mefuta e fapaneng ea sistimi, mefuta e fapaneng ea basebelisi e ka fumaneha ho sebelisa letšoao la dollar:
TNW-CUS-FMP - khoutu ea papatso bakeng sa theolelo ea 10% lits'ebeletso tsa rona, e fumanehang bakeng sa ts'ebetso nakong ea matsatsi a 7
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Sena ke se etsahalang ka mor'a ho tsamaisa script e joalo.
Liphetoho tse Tloaelehileng ho Script
Laela Phapanyetso
E 'ngoe ea likarolo tse molemo ka ho fetisisa tsa bash scripts ke bokhoni ba ho ntša tlhahisoleseding ho tsoa ho taelo ea taelo le ho e abela mefuta e fapaneng, e leng se u lumellang hore u sebelise boitsebiso bona kae kapa kae faeleng ea script.
Ho na le mekhoa e 'meli ea ho etsa sena.
Ho sebelisa backtick "`"
Ka moralo $()
Ha u sebelisa mokhoa oa pele, ela hloko hore u se ke ua kenyelletsa qotso e le 'ngoe ho e-na le mokokotlo. Taelo e tlameha ho kenngoa ka har'a litšoantšo tse peli tse joalo:
mydir=`pwd`
Mothating oa bobeli, ntho e tšoanang e ngotsoe tjena:
mydir=$(pwd)
'Me script e ka qetella e shebahala tjena:
#!/bin/bash
mydir=$(pwd)
echo $mydir
Nakong ea ts'ebetso ea eona, tlhahiso ea taelo pwde tla bolokoa ka ho feto-fetoha mydir, likahare tsa eona, ka ho sebelisa taelo echo, e tla ea ho console.
Mongolo o bolokang diphetho tsa taelo ka phapano
Ts'ebetso ea lipalo
Ho etsa ts'ebetso ea lipalo faeleng ea script, o ka sebelisa mofuta o tšoanang $((a+b)):
Maemong a mang, o hloka ho laola phallo ea ts'ebetso ea taelo. Ka mohlala, haeba boleng bo itseng bo feta bohlano, u lokela ho etsa ketso e le 'ngoe, ho seng joalo, e' ngoe. Sena se sebetsa maemong a mangata, mme mona sebopeho sa taolo se tla re thusa if-then. Ka mokhoa oa eona o bonolo, e shebahala tjena:
if команда
then
команды
fi
Mona ke mohlala o sebetsang:
#!/bin/bash
if pwd
then
echo "It works"
fi
Tabeng ena, haeba taelo e phethiloe pwde tla phethela ka katleho, mongolo o reng "e ea sebetsa" o tla hlahisoa ka har'a console.
Ha re sebeliseng tsebo eo re nang le eona mme re ngole mongolo o rarahaneng haholoanyane. Ha re re re hloka ho fumana mosebelisi ea itseng ho /etc/passwd, 'me haeba u khonne ho e fumana, tlaleha hore e teng.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
Sena ke se etsahalang ka mor'a ho tsamaisa script.
Patlisiso ea basebelisi
Mona re sebelisitse taelo grepho batla mosebedisi faeleng /etc/passwd. Haeba sehlopha grepe sa tloaelehang ho uena, tlhaloso ea eona e ka fumanoa mona.
Mohlala ona, haeba mosebelisi a fumanoa, script e tla hlahisa molaetsa o lumellanang. Ho thoe'ng haeba mosebelisi a sa fumanehe? Tabeng ena, script e tla qeta ho phethahatsa ntle le ho re bolella letho. Re rata hore le eena a re bolelle ka taba ena, kahoo re tla ntlafatsa khoutu.
haeba-ebe-e mong ho laola haha
E le hore lenaneo le khone ho tlaleha liphetho tse peli tsa ho batla ka katleho le ho hlōleha, re tla sebelisa mohaho if-then-else. Mona ke kamoo e sebetsang kateng:
if команда
then
команды
else
команды
fi
Haeba taelo ea pele e khutlisa zero, ho bolelang hore e phethiloe ka katleho, boemo e tla ba 'nete mme ts'ebetso e ke ke ea tsoela pele lekaleng. else. Ho seng joalo, haeba ntho e 'ngoe ntle le zero e khutlisetsoa, e tla bontša ho hloleha, kapa sephetho se fosahetseng, litaelo tse latelang else.
Ha re ngole mongolo o latelang:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi
Polao ya hae e ile ya theosetsa moseleng else.
Ho tsamaisa sengoloa ka moaho oa haeba-e mong
Hantle-ntle, ha re tsoeleng pele 'me re ipotse ka maemo a rarahaneng haholoanyane. Ho thoe'ng haeba u hloka ho hlahloba eseng boemo bo le bong, empa tse 'maloa? Ka mohlala, haeba mosebedisi ea lakatsehang a fumanoa, molaetsa o le mong o lokela ho bontšoa, haeba boemo bo bong bo kopane, molaetsa o mong o lokela ho bontšoa, joalo-joalo. Boemong bo joalo, maemo a sehlaha a tla re thusa. E shebahala tjena:
if команда1
then
команды
elif команда2
then
команды
fi
Haeba taelo ea pele e khutlisa zero, e bontšang katleho ea eona, litaelo tse lebokoseng la pele li tla etsoa. then, ho seng joalo, haeba boemo ba pele bo fosahetse 'me haeba taelo ea bobeli e khutlisa zero, ho tla etsoa karolo ea bobeli ea khoutu.
#!/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
Sengoliloeng se joalo, ka mohlala, u ka etsa mosebelisi e mocha u sebelisa taelo useradd, haeba patlisiso e sa hlahise liphetho, kapa ho etsa ntho e 'ngoe e molemo.
Papiso ea linomoro
Lingoliloeng u ka bapisa boleng ba linomoro. Ka tlaase ke lethathamo la litaelo tse amehang.
n1 -eq n2E khutlisa 'nete haeba n1 ka ho lekana n2. n1 -ge n2 E khutlisa 'nete haeba n1ho feta kapa ho lekana n2. n1 -gt n2E khutlisa 'nete haeba n1 ho feta n2. n1 -le n2E khutlisa 'nete haeba n1e nyane kapa e lekanang n2. n1 -lt n2E khutlisa 'nete haeba n1 e le ka tlase ho n2. n1 -ne n2E khutlisa 'nete haeba n1ha e lekane n2.
Ka mohlala, ha re lekeng e 'ngoe ea li-operator tsa papiso. Hlokomela hore poleloana e kentsoe ka masakaneng a lisekoere.
#!/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
Sena ke seo taelo ena e tla se hlahisa.
Papiso ea lipalo mangolong
Boleng bo feto-fetohang val1kholo ho feta 5, lekala le qetella le phethoa thenopareitara ya papiso le molaetsa o tsamaellanang le ona o bontshwa ho console.
Papiso ea likhoele
Mengolo e ka boela ea bapisa boleng ba likhoele. Basebelisi ba papiso ba shebahala ba le bonolo, empa ts'ebetso ea ho bapisa likhoele e na le likarolo tse itseng, tseo re tla li ama ka tlase. Lenane la basebedisi ke lena.
str1 = str2 Lekola likhoele bakeng sa tekano, ho khutlisa 'nete haeba likhoele li ts'oana.
str1 != str2E khutlisa 'nete haeba likhoele li sa ts'oana. str1 < str2E khutlisa 'nete haeba str1ka tlase ho str2. str1 > str2 E khutlisa 'nete haeba str1ho feta str2. -n str1 E khutlisa 'nete haeba bolelele str1Ka holimo ho zero. -z str1E khutlisa 'nete haeba bolelele str1lekana le zero.
Mona ke mohlala oa ho bapisa likhoele ka har'a script:
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
Ka lebaka la ho phethahatsa script, re fumana tse latelang.
Ho bapisa likhoele tsa mengolo
Mona ke tšobotsi e 'ngoe ea papiso ea likhoele eo u lokelang ho e bua. E leng, li-operator ">" le "<" li tlameha ho phonyoha ka morao, ho seng joalo mongolo o ke ke oa sebetsa hantle, leha ho se melaetsa ea liphoso e tla hlaha. Sengoliloeng se fetolela ">" lets'oao e le taelo ea ho tsamaisa tlhahiso.
Mona ke hore na ho sebetsa le basebelisi bana ho shebahala joang ka khoutu:
#!/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
Mona ke liphetho tsa script.
Papiso ea khoele, temoso e fanoeng
Ka kopo hlokomela hore script, le hoja e phethiloe, e fana ka temoso:
./myscript: line 5: [: too many arguments
Ho felisa temoso ena, re etsa qeto $val2 ka mantsoe a mabeli:
#!/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
Hona joale ntho e 'ngoe le e' ngoe e sebetsa kamoo e lokelang.
Papiso ea likhoele
Tšobotsi e 'ngoe ea li-operator ">" le "<" ke kamoo li sebetsang ka litlhaku tse kholo le tse nyane. E le ho utloisisa tšobotsi ena, ha re lokiseng faele ea mongolo e nang le litaba tse latelang:
Likegeeks
likegeeks
A re e bolokeng ka ho e reha lebitso myfile, ebe u tsamaisa taelo e latelang ho terminal:
sort myfile
E tla hlophisa mela ho tsoa faeleng ka tsela ena:
likegeeks
Likegeeks
sehlopha sort, ka kamehla, e hlophisa likhoele ka tatellano e nyolohang, ke hore, tlhaku e nyane mohlaleng oa rona e nyane ho feta litlhaku tse kholo. Joale ha re lokiseng mongolo o tla bapisa likhoele tse tšoanang:
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Haeba u e matha, ho bonahala eka ntho e 'ngoe le e' ngoe e fapane - litlhaku tse nyenyane li se li le kholo ho feta tse kholo.
Taelo ea ho hlopha le ho bapisa likhoele faeleng ea script
Ha ho bapisoa litaelo, litlhaku tse kholo li nyane ho feta litlhaku tse nyane. Papiso ea likhoele mona e etsoa ka ho bapisa likhoutu tsa ASCII tsa litlhaku, tatellano ea mofuta ka hona e ipapisitse le likhoutu tsa litlhaku.
sehlopha sort, ka lehlakoreng le leng, e sebelisa tatellano ea mofuta o boletsoeng ho litlhophiso tsa puo ea sistimi.
Litlhahlobo tsa lifaele
Mohlomong litaelo tse latelang li sebelisoa hangata ho bash scripts. Li u lumella ho hlahloba maemo a fapaneng mabapi le lifaele. Lenane la litaelo tsena ke lena.
-d fileE hlahloba hore na faele e teng le hore na ke directory. -e fileE hlahloba hore na faele e teng. -f file E hlahloba hore na faele e teng le hore ke faele. -r fileE hlahloba hore na faele e teng le hore ea baloa. -s file ПE hlahloba hore na faele e teng le hore ha e na letho. -w fileE hlahloba hore na faele e teng le hore ea ngoloa. -x fileE hlahloba hore na faele e teng le hore e ea phethisoa. file1 -nt file2 E hlahloba hore na e ncha file1ho feta file2. file1 -ot file2E hlahloba hore na ke khale file1ho feta file2. -O file E hlahloba hore na faele e teng le hore ke ea mosebelisi oa hajoale. -G fileE hlahloba hore na faele e teng le hore na ID ea eona ea sehlopha e lumellana le ID ea sehlopha sa mosebelisi.
Litaelo tsena, hammoho le tse ling tse ngata tseo ho buisanoeng ka tsona kajeno, li bonolo ho li hopola. Mabitso a bona, e leng khutsufatso ea mantsoe a sa tšoaneng, ka ho toba a bontša licheke tseo ba li etsang.
Ha re leke e 'ngoe ea litaelo tse sebetsang:
#!/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
Script ena, bakeng sa bukana e teng, e tla hlahisa litaba tsa eona.
E thathamisa litaba tsa bukana
Re lumela hore u ka leka ka bouena litaelo tse setseng; kaofela li sebelisoa ho latela molao-motheo o tšoanang.
Liphello
Kajeno re buile ka mokhoa oa ho qala ho ngola mangolo a bash le ho koahela lintho tse ling tsa mantlha. Ha e le hantle, sehlooho sa bash programming se seholo. Sengoliloeng sena ke phetolelo ea karolo ea pele ea letoto le leholo la lisebelisoa tsa 11. Haeba u batla ho tsoela pele hona joale, lethathamo la li-original tsa thepa ena ke lena. Bakeng sa boiketlo, phetolelo eo u sa tsoa e bala e kenyelelitsoe mona.
Bash Script Mohato ka Mohato - mona re bua ka mokhoa oa ho qala ho theha li-script tsa bash, tšebeliso ea mefuta-futa e nkoa, mehaho e nang le maemo, lipalo, papiso ea linomoro, likhoele, le ho fumana boitsebiso bo mabapi le lifaele.
Bash Scripting Karolo ea 3, Parameters & dikgetho - thepa ena e nehetsoe ho li-parameter tsa line ea litaelo le linotlolo tse ka fetisetsoang ho mangolo, ho sebetsa ka data eo mosebedisi a e kenyang le e ka baloang ho tsoa lifaeleng.
Bash Scripting Karolo ea 4, Input & Output - mona re bua ka litlhaloso tsa lifaele le ho sebetsa le tsona, mabapi le ho kenya letsoho, tlhahiso, melapo ea liphoso, le mabapi le ho tsamaisa tlhahiso.
Bash Scripting Karolo ea 11, Lebella Taelo - thepa ena e nehetsoe ho sesebelisoa sa Lebella, seo ka sona u ka iketsetsang tšebelisano le lisebelisoa tse sebetsanang. Ka ho khetheha, re bua ka ho lebella mangolo le ho sebelisana ha bona le mangolo a bash le mananeo a mang.
Re lumela hore e 'ngoe ea likarolo tsa bohlokoa tsa letoto lena la lingoloa ke hore, ho qala ho tse bonolo, tse loketseng basebelisi ba boemo bofe kapa bofe, butle-butle e lebisa lihloohong tse tebileng, e fang bohle monyetla oa ho tsoela pele ho thehoeng ha Linux command line scripts. .
Babali ba ratehang! Re kopa bash programming gurus ho bua ka hore na ba fihletse maemo a phahameng a boqhetseke ba bona joang, ba arolelane liphiri tsa bona, 'me re lebelletse ho amohela maikutlo ho tsoa ho ba sa tsoa ngola lengolo la bona la pele.
Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. kenaka kopo.
Na ke lokela ho fetolela letoto le setseng la lihlooho?
E, ho joalo!
Che ha ho hlokahale
Basebelisi ba 1030 ba ile ba khetha. Basebelisi ba 106 ba ile ba hana.