Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • OS
  • Menaxhimi i ubuntu-së përmes një skripti në Windows. Krijimi dhe ekzekutimi i një skripti

Menaxhimi i ubuntu-së përmes një skripti në Windows. Krijimi dhe ekzekutimi i një skripti

Para së gjithash, le të kuptojmë se çfarë është skenar dhe pse është e nevojshme.

Script e perkthyer nga anglishtja - skenar. Ne të gjithë shikojmë filma, shumë prej nesh shikojnë shfaqje. Për të krijuar një film/dramë, skenaristët shkruajnë skenarë për ta, mbi bazën e të cilave aktorët interpretojnë rolet e tyre në skenë, skenë për skenë, nga e cila është krijuar filmi/shfaqja. Puna e krijimit të një skenari është mjaft e mundimshme, ku duhet të keni parasysh gjithçka deri në detajet më të vogla, në mënyrë që në fund artistët të përmbushin atë që synonte skenaristi dhe shikuesi të shohë një vepër të plotë.

Në mënyrë të ngjashme, skriptet shkruhen për të ekzekutuar një listë detyrash që përdoruesi bashkon (kodin) për t'i bërë ato më të lehta dhe më të shpejta për t'u kryer në sistemin operativ. Për të shkruar skripta të thjeshta, nuk është aspak e nevojshme të keni një arsim programues.

Së pari, le të krijojmë më të thjeshtën skenar-Shell për të përditësuar sistemin.

Unë do të kryej të gjitha veprimet me sistemin Ubuntu, por ato janë të aplikueshme edhe për sisteme të tjera Linux, që rrjedh nga Ubuntu. Për këtë na duhen: Redaktori i tekstit për ta mbushur me detyrat e nevojshme për të krijuar një skript (kod) dhe Terminal- për të ekzekutuar skriptin e krijuar. Këto mjete janë instaluar në çdo shpërndarje Linux default.

Pra, hapni një redaktues teksti Gedit dhe futni në të karakteret e para të kërkuara të thirrura shebang.
shebang në programim, kjo është një sekuencë prej dy karakteresh: një hash dhe një pikëçuditëse ( #! ) në fillim të skedarit të skriptit. Dhe shtojini këtyre personazheve pa hapësira /bin/sh- interpretuesi ku do të ekzekutohet skripti. /bin/sh- kjo është zakonisht Guaska Bourne ose një interpretues të pajtueshëm të linjës komanduese që kalon "rruga/drejt/skripti" si parametër i parë.
Rreshti i parë i kërkuar i skenarit do të duket kështu:

# Skripti im i parë i përditësimit të Ubuntu

Shenja hash (#) në fillim të rreshtit ia bën të qartë interpretuesit/terminalit se kjo rresht nuk ka nevojë të lexohet dhe ekzekutohet. Rreshti është i nevojshëm në kodin e këtij skenari në mënyrë që krijuesi i skenarit të dijë se çfarë do të bëjë në këtë segment/skenë në kod, për të mos u ngatërruar në të ardhmen kur të ketë shumë rreshta të tillë. Linja të tilla me një shenjë hash quhen - komentoi .

përditësim sudo apt
sudo apt përmirësim -y

-y në fund të komandës së dytë i bën të qartë përkthyesit/terminalit se ky veprim/komandë duhet të kryhet automatikisht, pa konfirmim shtesë nga përdoruesi duke shtypur një buton. Hyni. y- shkurt për anglisht po, d.m.th. po.

Kjo eshte e gjitha. Skripti juaj i parë është krijuar. Ju duhet të merrni diçka si në foto:


Mbetet vetëm të ruani skedarin/skriptin e krijuar dhe ta jepni Emri me një zgjatje të detyrueshme në fund - .sh. Zgjerim .sh caktuar në skedarin e ekzekutueshëm.
i dhashë Emri - përditësoj.sh, duke kursyer në Dosja kryesore përdorues:


Në mënyrë që skedari/skripti i krijuar të jetë i ekzekutueshëm, duhet t'i jepet leja për ta bërë këtë. Ka dy mënyra për ta bërë këtë.

1. Ekzekutoni komandën e mëposhtme në terminal:

sudo chmod +x përditësim.sh

2. Ose hapni menaxherin e skedarëve Dosja kryesore(ku keni ruajtur skriptin e krijuar), klikoni me të djathtën në skedar, në menunë e kontekstit - Pronat - Të drejtat dhe aktivizoni artikullin - Performanca: Lejo që skedari të ekzekutohet si program:


Për të ekzekutuar skriptin e krijuar, duhet të hapni terminalin (siç kam shkruar në fillim të artikullit se terminali është një atribut/mjet i nevojshëm për ekzekutimin e skriptit), futni sh, i ndarë me një hapësirë ​​emri i skenarit - përditësoj.sh dhe shtypni tastin Hyni:


Ose në terminal futemi sh dhe tërhiqni skedarin e krijuar me skriptin nga menaxheri i skedarëve (gjithashtu i ndarë nga një hapësirë):


Pasi të shfaqet shtegu i skedarit pas komandës sh dhe hapësirë, thjesht shtypni tastin Hyni(Enter) për të kryer një përditësim të sistemit:


Tani në çdo kohë mund të përditësoni sistemin duke përdorur skriptin tuaj.

Po, dikush mund të argumentojë se përditësimi i sistemit nuk është i vështirë për t'u bërë duke ekzekutuar këto dy komanda në terminal, pse të fryhet dhe të krijohen disa skripta? Kjo është e drejtë. Por ky është një shembull i krijimit të një skenari të thjeshtë për të treguar se "nuk janë perënditë ata që djegin tenxheret" 😃.

Pasi të keni mësuar të shkruani dhe të përdorni skripte të thjeshta, mund të krijoni një skript për konfigurimin e sistemit, në mënyrë që nëse sistemi riinstalohet, mund të përdorni skriptin e krijuar pa pasur nevojë të kërkoni çdo herë në internet faqe me cilësime të ngjashme.

Shumë prej jush me shumë gjasa përdorin faqet e konfigurimit të sistemit, të tilla si ato që publikoj pas publikimit të ardhshëm. Ubuntu - Ubuntu pas instalimit ose faqe të ngjashme. Hapni një nga këto sajte: , më pas një redaktues teksti për të krijuar një skript.
Për shembull, kam bërë bosh sa vijon.

Në një redaktues teksti, futni rreshtin e parë të kërkuar:

# Konfigurimi i Ubuntu pas instalimit
# Përditësim i sistemit

Më poshtë janë komandat e përditësimit të sistemit:

përditësim sudo apt
sudo apt përmirësim -y

Linja e përshkrimit: Shtimi i depove:

# Shtimi i depove

Dhe shtoni depot e nevojshme për instalimin e mëtejshëm të softuerit:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa:haecker-felix/gradio-daily -y

Pasi të jenë shtuar depot e nevojshme (e përsëris, ju mund të keni depot tuaja, unë kam një shembull), duhet të përditësoni sistemin:

Linja e përshkrimit:

# Përditësimi i sistemit pas lidhjes së depove

Dhe komanda për të ekzekutuar:

përditësim sudo apt

Tani që depot janë shtuar dhe sistemi është përditësuar, është koha për të instaluar programet:

# Instalimi i programeve

Për të instaluar programe, thjesht futni komandën një herë instalimi sudo apt, dhe më pas shtoni sa më shumë programe që dëshironi në këtë rresht, të ndarë nga një hapësirë, gjëja kryesore është që ato të jenë të kompozuara saktë. Nëse një program përbëhet nga disa fjalë, komanda e tij duhet të jetë monolit, d.m.th. të gjitha fjalët në të duhet të futen përmes një vize, për shembull: unity-tweak-mjet:

sudo apt instalo treguesin tim të motit telegram skype lm-sensorët hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Instalimi i kodekëve shtesë

# Multimedia dhe kodekë

sudo apt install ubuntu-restricted-extras -y

Çaktivizimi i dështimeve të sistemit

# Çaktivizo raportimin e përplasjeve të sistemit

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

Epo, kjo është ndoshta e gjitha. Ky skedar skripti i krijuar duhet të duket si ky:


Duhet ta ruani (kliko butonin Ruaj) dhe jepni Emri me shtrirje .sh. e thirra Cilësimet\Ubuntu.sh(mund ta emërtoni ndryshe, por sigurohuni që të përdorni shtesën .sh):


Le ta bëjmë skriptin e krijuar të ekzekutueshëm:

sudo chmod +x Setup\Ubuntu.sh

Për të ekzekutuar skriptin e krijuar, futeni në terminal sh dhe emri i skriptit të krijuar i ndarë me një hapësirë, ose sh, spacebar dhe tërhiqni skedarin e krijuar në terminal, siç u shpjegua më parë në skriptin më të thjeshtë dhe shtypni tastin Hyni, për ta realizuar atë.

shënim. Prapëslash në komandë Cilësimet\Ubuntu.sh ikën nga një hapësirë ​​në një emër skedari terminal midis dy fjalëve të veçanta.

Pasi të ekzekutohet skripti, ruajeni atë për të ardhmen, për riinstalimin e mundshëm të sistemit dhe rikonfigurimin, më së miri në një ndarje të veçantë të hard drive-it në dosje /shtëpi. Nëse nuk ka asnjë, atëherë në një shërbim cloud (ruajtje e të dhënave në renë kompjuterike) si: DropBox, Cloud Mail.Ru, Mega.co etj., në mënyrë që të mund ta përdorni vetë skriptin në çdo kohë, ose të ndihmoni miqtë ose të afërmit të konfigurojnë sistemin.

Sot do të flasim për skriptet bash. Këto janë skriptet e linjës komanduese të shkruara për guaskën bash. Ka predha të tjera, për shembull - zsh, tcsh, ksh, por ne do të përqendrohemi në bash. Ky material është i destinuar për të gjithë, kushti i vetëm është aftësia për të punuar në linjën e komandës Linux.



Skriptet e linjës së komandës janë koleksione të të njëjtave komanda që mund të futen nga tastiera, të grumbullohen në skedarë dhe të bashkohen për një qëllim të përbashkët. Në këtë rast, rezultatet e punës së ekipeve mund të jenë ose me vlerë të pavarur ose të shërbejnë si të dhëna hyrëse për ekipet e tjera. Skriptet janë një mënyrë e fuqishme për të automatizuar veprimet e kryera shpesh.

Pra, nëse flasim për vijën e komandës, ju lejon të ekzekutoni disa komanda në të njëjtën kohë duke i futur ato të ndara me një pikëpresje:

Pwd; Kush jam unë
Në fakt, nëse e keni provuar këtë në terminalin tuaj, skripti juaj i parë bash që përfshin dy komanda është shkruar tashmë. Punon kështu. Së pari, komanda pwd shfaq informacion në lidhje me direktorinë aktuale të punës, më pas komanda whoami shfaq informacion rreth përdoruesit në të cilin jeni regjistruar.

Duke përdorur këtë qasje, ju mund të kombinoni sa më shumë komanda që dëshironi në një rresht, i vetmi kufi është numri maksimal i argumenteve që mund t'i kalohen programit. Ju mund ta përcaktoni këtë kufi duke përdorur komandën e mëposhtme:

Getconf ARG_MAX
Linja e komandës është një mjet i shkëlqyeshëm, por duhet të futni komanda në të sa herë që ju nevojiten. Po sikur të shkruanim një grup komandash në një skedar dhe thjesht ta thërrisnim atë skedar për t'i ekzekutuar ato? Në fakt, skedari për të cilin po flasim quhet skript i linjës së komandës.

Si funksionojnë skriptet bash

Krijoni një skedar bosh duke përdorur komandën prekje. Rreshti i parë i tij duhet të tregojë se cilën guaskë do të përdorim. Ne jemi të interesuar për bash, kështu që rreshti i parë i skedarit do të jetë si ky:

#!/bin/bash
Linjat e tjera në këtë skedar përdorin simbolin hash për të treguar komentet që shell nuk i përpunon. Sidoqoftë, rreshti i parë është një rast i veçantë, ku një hash i ndjekur nga një pikëçuditëse (kjo sekuencë quhet shebang) dhe një shteg drejt bashit i tregojnë sistemit se skripti është krijuar posaçërisht për bash.

Komandat e guaskës ndahen nga një furnizim rreshti, komentet ndahen nga një shenjë hash. Kështu duket:

#!/bin/bash # Ky është një koment pwd whoami
Këtu, ashtu si në vijën e komandës, mund të shkruani komanda në një rresht, të ndara me pikëpresje. Sidoqoftë, nëse i shkruani komandat në rreshta të ndryshëm, skedari është më i lehtë për t'u lexuar. Në çdo rast, guaska do t'i përpunojë ato.

Vendosja e lejeve të skedarit të skriptit

Ruani skedarin dhe emërtojeni myscript dhe pothuajse keni mbaruar krijimin e skriptit tuaj bash. Tani mbetet vetëm ta bëni këtë skedar të ekzekutueshëm, përndryshe, nëse provoni ta ekzekutoni, do të hasni një gabim të mohimit të lejes.


Përpjekja për të ekzekutuar një skedar skripti me leje të konfiguruara gabimisht

Le ta bëjmë skedarin të ekzekutueshëm:

Chmod +x ./myscript
Tani le të përpiqemi ta ekzekutojmë:

./myscript
Pas vendosjes së lejeve, gjithçka funksionon siç duhet.


Po ekzekutohet me sukses skripti bash

Dalja e mesazhit

Për të nxjerrë tekst në konsolën Linux, përdorni komandën echo. Le të përdorim njohuritë e këtij fakti dhe të modifikojmë skriptin tonë, duke shtuar shpjegime për të dhënat që dalin nga komandat tashmë në të:

#!/bin/bash # komenti ynë është këtu echo "Direktoria aktuale është:" pwd echo "Përdoruesi i regjistruar është:" whoami
Kjo është ajo që ndodh pas ekzekutimit të skriptit të përditësuar.


Dalja e mesazheve nga një skenar

Tani mund të shfaqim shënime shpjeguese duke përdorur komandën echo. Nëse nuk dini si të redaktoni një skedar duke përdorur mjete Linux, ose nuk e keni hasur më parë komandën echo, hidhini një sy këtij burimi.

Përdorimi i variablave

Variablat ju lejojnë të ruani informacione në një skedar skripti, siç janë rezultatet e komandave, për t'u përdorur nga komanda të tjera.

Nuk ka asgjë të keqe me ekzekutimin e komandave individuale pa ruajtur rezultatet e tyre, por kjo qasje është mjaft e kufizuar në aftësitë e saj.

Ekzistojnë dy lloje të variablave që mund të përdoren në skriptet bash:

  • Variablat e Mjedisit
  • Variablat e përdoruesit

Variablat e Mjedisit

Ndonjëherë komandat e guaskës duhet të punojnë me disa të dhëna të sistemit. Këtu është një shembull se si të shfaqet direktoria kryesore e përdoruesit aktual:

#!/bin/bash # shfaq jehonën e përdoruesit në shtëpi "Shtëpia për përdoruesin aktual është: $HOME"
Ju lutemi vini re se ne mund të përdorim variablin e sistemit $HOME në thonjëza të dyfishta, kjo nuk do ta pengojë sistemin ta njohë atë. Kjo është ajo që ju merrni nëse ekzekutoni skenarin e mësipërm.


Përdorimi i një ndryshoreje mjedisi në një skenar

Po sikur të duhet të shfaqësh një shenjë dollari në ekran? Le ta provojmë këtë:

Echo "Kam 1$ në xhep"
Sistemi do të zbulojë një shenjë dollari në një varg të cituar dhe do të supozojë se ne kemi referuar një ndryshore. Skripti do të përpiqet të shfaqë vlerën e ndryshores së papërcaktuar $1. Kjo nuk është ajo që na nevojitet. Çfarë duhet bërë?

Në këtë situatë, përdorimi i karakterit të arratisjes, një vijë e prapme, përpara shenjës së dollarit do të ndihmojë:

Echo "Kam \$1 në xhep"
Skenari tani do të nxjerrë saktësisht atë që pritet.


Përdorimi i një sekuence arratisjeje për të printuar një shenjë dollari

Variablat e përdoruesit

Përveç variablave të mjedisit, skriptet bash ju lejojnë të përcaktoni dhe përdorni variablat tuaja në skript. Variabla të tillë mbajnë një vlerë derisa skripti të përfundojë ekzekutimin.

Ashtu si me variablat e sistemit, variablat e përdoruesit mund të aksesohen duke përdorur shenjën e dollarit:
TNW-CUS-FMP - kod promocional për një zbritje prej 10% në shërbimet tona, i disponueshëm për aktivizim brenda 7 ditëve
#!/bin/bash # testimi i variablave grade=5 person="Adam" echo "$person është një djalë i mirë, ai është në klasën $grade"
Kjo është ajo që ndodh pas ekzekutimit të një skenari të tillë.


Variablat e personalizuar në një skript

Zëvendësimi i komandës

Një nga veçoritë më të dobishme të skripteve bash është aftësia për të nxjerrë informacion nga dalja e komandës dhe për t'i caktuar ato variablave, duke lejuar që ai informacion të përdoret kudo në skedarin e skriptit.

Ka dy mënyra për ta bërë këtë.

  • Përdorimi i "`"
  • Duke përdorur konstruktin $().
Kur përdorni metodën e parë, kini kujdes që të mos përfshini një thonjëza të vetme në vend të prapavijës. Komanda duhet të përfshihet në dy ikona të tilla:

Mydir=`pwd`
Në qasjen e dytë, e njëjta gjë shkruhet kështu:

Mydir=$(pwd)
Dhe skenari mund të përfundojë si ky:

#!/bin/bash mydir=$(pwd) echo $mydir
Gjatë funksionimit të saj, dalja e komandës pwd do të ruhet në variablin mydir, përmbajtja e së cilës, duke përdorur komandën echo, do të dërgohet në tastierë.


Një skript që ruan rezultatet e një komande në një ndryshore

Veprimet matematikore

Për të kryer operacione matematikore në një skedar skripti, mund të përdorni një konstrukt si $((a+b)):

#!/bin/bash var1=$((5 + 5)) echo $var1 var2=$(($var1 * 2)) echo $var2


Veprimet matematikore në një skenar

nëse-atëherë konstruksioni i kontrollit

Në disa skenarë, ju duhet të kontrolloni rrjedhën e ekzekutimit të komandës. Për shembull, nëse një vlerë e caktuar është më e madhe se pesë, duhet të kryeni një veprim, përndryshe, një tjetër. Kjo është e zbatueshme në shumë situata, dhe këtu konstrukti i kontrollit nëse-atëherë do të na ndihmojë. Në formën e tij më të thjeshtë duket kështu:

Nëse komanda atëherë komandat fi
Këtu është një shembull pune:

#!/bin/bash nëse pwd atëherë bëni jehonë "Funksionon" fi
Në këtë rast, nëse komanda pwd përfundon me sukses, teksti "punon" do të printohet në tastierë.

Le të përdorim njohuritë që kemi dhe të shkruajmë një skenar më kompleks. Le të themi se duhet të gjejmë një përdorues të caktuar në /etc/passwd, dhe nëse kemi mundur ta gjejmë atë, raportojmë se ai ekziston.

#!/bin/bash user=likegeeks nëse grep $user /etc/passwd pastaj jehonë "Përdoruesi $user ekziston" fi
Kjo është ajo që ndodh pas ekzekutimit të këtij skenari.


Kërkoni për një përdorues

Këtu kemi përdorur komandën grep për të kërkuar përdoruesin në skedarin /etc/passwd. Nëse komanda grep nuk është e njohur për ju, mund të gjendet përshkrimi i saj.

Në këtë shembull, nëse përdoruesi gjendet, skripti do të shfaqë një mesazh përkatës. Po sikur përdoruesi të mos gjendej? Në këtë rast, skenari thjesht do të përfundojë ekzekutimin pa na thënë asgjë. Ne dëshirojmë që ai të na tregojë edhe për këtë, kështu që ne do të përmirësojmë kodin.

konstrukt kontrolli nëse-atëherë tjetër

Në mënyrë që programi të jetë në gjendje të raportojë rezultatet e një kërkimi të suksesshëm dhe dështimin, ne do të përdorim konstruktin nëse-atëherë-tjetër. Ja se si funksionon:

Nëse komanda atëherë komandat e tjera komandat fi
Nëse komanda e parë kthen zero, që do të thotë se është ekzekutuar me sukses, kushti do të jetë i vërtetë dhe ekzekutimi nuk do të vazhdojë përgjatë degës tjetër. Përndryshe, nëse kthehet diçka tjetër përveç zeros, që do të tregonte dështim ose një rezultat të rremë, komandat pas tjetrës do të ekzekutohen.

Le të shkruajmë skriptin e mëposhtëm:

#!/bin/bash user=anotherUser nëse grep $user /etc/passwd pastaj jehonë "Përdoruesi $user Ekziston" tjetër echo "Përdoruesi $user nuk ekziston" fi
Ekzekutimi i tij shkoi përgjatë degës tjetër.


Ekzekutimi i një skripti me një konstrukt nëse-atëherë-tjetër

Epo, le të vazhdojmë dhe të pyesim veten për kushte më komplekse. Po sikur të keni nevojë të kontrolloni jo një kusht, por disa? Për shembull, nëse gjendet përdoruesi i dëshiruar, duhet të shfaqet një mesazh, nëse plotësohet ndonjë kusht tjetër, duhet të shfaqet një mesazh tjetër etj. Në një situatë të tillë, kushtet e mbivendosura do të na ndihmojnë. Duket kështu:

Nëse komanda1 atëherë komanda elif komanda2 atëherë komanda fi
Nëse komanda e parë kthen zero, duke treguar sukses, komandat në bllokun e parë pastaj do të ekzekutohen, përndryshe, nëse kushti i parë është false, dhe nëse komanda e dytë kthen zero, blloku i dytë i kodit do të ekzekutohet.

#!/bin/bash user=anotherUser if grep $user /etc/passwd pastaj jehonë "Përdoruesi $user Ekziston" elif ls /home pastaj echo "Përdoruesi nuk ekziston por gjithsesi ka një direktori nën /home" fi
Në një skript të tillë, për shembull, mund të krijoni një përdorues të ri duke përdorur komandën useradd nëse kërkimi nuk jep rezultate, ose të bëni diçka tjetër të dobishme.

Krahasimi i numrave

Në skriptet mund të krahasoni vlerat numerike. Më poshtë është një listë e komandave përkatëse.
n1 -eq n2 Rikthen true nëse n1 është e barabartë me n2.
n1 -ge n2 Rikthen true nëse n1 është më i madh ose i barabartë me n2.
n1 -gt n2 Rikthen true nëse n1 është më i madh se n2.
n1 -le n2 Rikthen true nëse n1 është më i vogël ose i barabartë me n2.
n1 -lt n2 Rikthen true nëse n1 është më i vogël se n2.
n1 -ne n2 Rikthen true nëse n1 nuk është e barabartë me n2.

Si shembull, le të provojmë një nga operatorët e krahasimit. Vini re se shprehja është e mbyllur në kllapa katrore.

#!/bin/bash val1=6 nëse [ $val1 -gt 5 ] atëherë jehonë "Vlera e testit $val1 është më e madhe se 5" ndryshe echo "Vlera e testit $val1 nuk është më e madhe se 5" fi
Kjo është ajo që kjo komandë do të dalë.


Krahasimi i numrave në skriptet

Vlera e ndryshores val1 është më e madhe se 5, si rezultat ekzekutohet dega e atëhershme e operatorit të krahasimit dhe shfaqet një mesazh përkatës në konsolë.

Krahasimi i vargjeve

Skriptet gjithashtu mund të krahasojnë vlerat e vargut. Operatorët e krahasimit duken mjaft të thjeshtë, por operacionet e krahasimit të vargjeve kanë veçori të caktuara, të cilat do t'i prekim më poshtë. Këtu është një listë e operatorëve.
str1 = str2 Teston vargjet për barazi, duke e kthyer të vërtetën nëse vargjet janë identike.
s tr1 != str2 Rikthen true nëse vargjet nuk janë identike.
rr.1< str2 Возвращает истину, если str1 меньше, чем str2 .
str1 > str2 Rikthen true nëse str1 është më i madh se str2.
-n str1 Rikthen true nëse gjatësia e str1 është më e madhe se zero.
-z str1 Rikthen true nëse gjatësia e str1 është zero.

Këtu është një shembull i krahasimit të vargjeve në një skenar:

#!/bin/bash përdorues ="likegeeks" nëse [$user = $USER] atëherë jehonë "Përdoruesi $user është përdoruesi aktual i regjistruar" fi
Si rezultat i ekzekutimit të skenarit, marrim sa vijon.


Krahasimi i vargjeve në skriptet

Këtu është një veçori e krahasimit të vargjeve që vlen të përmendet. Përkatësisht, operatorët ">" dhe "<» необходимо экранировать с помощью обратной косой черты, иначе скрипт будет работать неправильно, хотя сообщений об ошибках и не появится. Скрипт интерпретирует знак «>» si një komandë ridrejtimi në dalje.

Ja se si duket puna me këta operatorë në kod:

#!/bin/bash val1=text val2="një tekst tjetër" nëse [ $val1 \>
Këtu janë rezultatet e skenarit.


Krahasimi i vargjeve, paralajmërimi i dhënë

Ju lutemi vini re se skenari, megjithëse i ekzekutuar, lëshon një paralajmërim:

./myscript: rreshti 5: [: shumë argumente
Për të hequr qafe këtë paralajmërim, ne mbyllim $val2 në thonjëza të dyfishta:

#!/bin/bash val1=text val2="një tekst tjetër" nëse [ $val1 \> "$val2" ] atëherë echo "$val1 është më i madh se $val2" tjetër echo "$val1 është më pak se $val2" fi
Tani gjithçka funksionon siç duhet.


Krahasimi i vargjeve

Një veçori tjetër e operatorëve ">" dhe "<» заключается в том, как они работают с символами в верхнем и нижнем регистрах. Для того, чтобы понять эту особенность, подготовим текстовый файл с таким содержимым:

Likegeeks likegeeks
Le ta ruajmë atë, duke i dhënë emrin myfile, dhe më pas të ekzekutojmë komandën e mëposhtme në terminal:

Rendit skedarin tim
Ai do t'i rendit linjat nga skedari si kjo:

Likegeeks Likegeeks
Komanda sort, si parazgjedhje, rendit vargjet në rend rritës, domethënë, shkronja e vogël në shembullin tonë është më e vogël se ajo e madhe. Tani le të përgatisim një skenar që do të krahasojë të njëjtat vargje:

#!/bin/bash val1=Likegeeks val2=likegeeks nëse [ $val1 \> $val2 ] atëherë echo "$val1 është më i madh se $val2" tjetër echo "$val1 është më pak se $val2" fi
Nëse e drejtoni, rezulton se gjithçka është anasjelltas - shkronja e vogël tani është më e madhe se ajo e madhe.


Komanda e renditjes dhe krahasimi i vargjeve në një skedar skripti

Në komandat e krahasimit, shkronjat e mëdha janë më të vogla se shkronjat e vogla. Krahasimi i vargjeve këtu bëhet duke krahasuar kodet ASCII të karaktereve, kështu që rendi i renditjes varet nga kodet e karaktereve.

Komanda e renditjes, nga ana tjetër, përdor rendin e renditjes të specifikuar në cilësimet e gjuhës së sistemit.

Kontrollet e dosjeve

Ndoshta komandat e mëposhtme përdoren më shpesh në skriptet bash. Ato ju lejojnë të kontrolloni kushte të ndryshme në lidhje me skedarët. Këtu është një listë e këtyre komandave.
-d file Kontrollon nëse skedari ekziston dhe është një direktori.
-e file Kontrollon nëse skedari ekziston.
-f file Kontrollon nëse skedari ekziston dhe është një skedar.
-r file Kontrollon nëse skedari ekziston dhe është i lexueshëm.
Skedari -s Kontrollon nëse skedari ekziston dhe nuk është bosh.
-w file Kontrollon nëse skedari ekziston dhe është i shkrueshëm.
-x file Kontrollon nëse skedari ekziston dhe është i ekzekutueshëm.
file1 -nt file2 Kontrollon nëse skedari1 është më i ri se skedari2.
file1 -ot file2 Kontrollon nëse skedari1 është më i vjetër se skedari2.
-O skedari Kontrollon nëse skedari ekziston dhe është në pronësi të përdoruesit aktual.
-Skedari G Kontrollon nëse ekziston një skedar dhe nëse ID-ja e grupit përputhet me ID-në e grupit të përdoruesit aktual.

Këto komanda, si dhe shumë të tjera të diskutuara sot, janë të lehta për t'u mbajtur mend. Emrat e tyre, duke qenë shkurtesa fjalësh të ndryshme, tregojnë drejtpërdrejt kontrollet që kryejnë.

Le të provojmë një nga komandat në praktikë:

#!/bin/bash mydir=/home/likegeeks nëse [ -d $mydir ] atëherë echo "Drektoria $mydir ekziston" cd $ mydir ls else echo "Drektoria $mydir nuk ekziston" fi
Ky skript, për një direktori ekzistuese, do të shfaqë përmbajtjen e tij.


Renditja e përmbajtjes së një drejtorie

Ne besojmë se ju mund të eksperimentoni vetë me komandat e mbetura; ato përdoren të gjitha sipas të njëjtit parim.

Rezultatet

Sot folëm se si të filloni të shkruani skripta bash dhe mbuluam disa gjëra themelore. Në fakt, tema e programimit bash është e madhe. Ky artikull është një përkthim i pjesës së parë të një serie të madhe prej 11 materialesh. Nëse dëshironi të vazhdoni tani, këtu është një listë e origjinaleve të këtyre materialeve. Për lehtësi, përkthimi i të cilit sapo lexuat është përfshirë këtu.

Sot do të flasim për skriptet bash. Këto janë skriptet e linjës komanduese të shkruara për guaskën bash. Ka predha të tjera, për shembull - zsh, tcsh, ksh, por ne do të përqendrohemi në bash. Ky material është i destinuar për të gjithë, kushti i vetëm është aftësia për të punuar në linjën e komandës Linux.



Skriptet e linjës së komandës janë koleksione të të njëjtave komanda që mund të futen nga tastiera, të grumbullohen në skedarë dhe të bashkohen për një qëllim të përbashkët. Në këtë rast, rezultatet e punës së ekipeve mund të jenë ose me vlerë të pavarur ose të shërbejnë si të dhëna hyrëse për ekipet e tjera. Skriptet janë një mënyrë e fuqishme për të automatizuar veprimet e kryera shpesh.

Pra, nëse flasim për vijën e komandës, ju lejon të ekzekutoni disa komanda në të njëjtën kohë duke i futur ato të ndara me një pikëpresje:

Pwd; Kush jam unë
Në fakt, nëse e keni provuar këtë në terminalin tuaj, skripti juaj i parë bash që përfshin dy komanda është shkruar tashmë. Punon kështu. Së pari, komanda pwd shfaq informacion në lidhje me direktorinë aktuale të punës, më pas komanda whoami shfaq informacion rreth përdoruesit në të cilin jeni regjistruar.

Duke përdorur këtë qasje, ju mund të kombinoni sa më shumë komanda që dëshironi në një rresht, i vetmi kufi është numri maksimal i argumenteve që mund t'i kalohen programit. Ju mund ta përcaktoni këtë kufi duke përdorur komandën e mëposhtme:

Getconf ARG_MAX
Linja e komandës është një mjet i shkëlqyeshëm, por duhet të futni komanda në të sa herë që ju nevojiten. Po sikur të shkruanim një grup komandash në një skedar dhe thjesht ta thërrisnim atë skedar për t'i ekzekutuar ato? Në fakt, skedari për të cilin po flasim quhet skript i linjës së komandës.

Si funksionojnë skriptet bash

Krijoni një skedar bosh duke përdorur komandën prekje. Rreshti i parë i tij duhet të tregojë se cilën guaskë do të përdorim. Ne jemi të interesuar për bash, kështu që rreshti i parë i skedarit do të jetë si ky:

#!/bin/bash
Linjat e tjera në këtë skedar përdorin simbolin hash për të treguar komentet që shell nuk i përpunon. Sidoqoftë, rreshti i parë është një rast i veçantë, ku një hash i ndjekur nga një pikëçuditëse (kjo sekuencë quhet shebang) dhe një shteg drejt bashit i tregojnë sistemit se skripti është krijuar posaçërisht për bash.

Komandat e guaskës ndahen nga një furnizim rreshti, komentet ndahen nga një shenjë hash. Kështu duket:

#!/bin/bash # Ky është një koment pwd whoami
Këtu, ashtu si në vijën e komandës, mund të shkruani komanda në një rresht, të ndara me pikëpresje. Sidoqoftë, nëse i shkruani komandat në rreshta të ndryshëm, skedari është më i lehtë për t'u lexuar. Në çdo rast, guaska do t'i përpunojë ato.

Vendosja e lejeve të skedarit të skriptit

Ruani skedarin dhe emërtojeni myscript dhe pothuajse keni mbaruar krijimin e skriptit tuaj bash. Tani mbetet vetëm ta bëni këtë skedar të ekzekutueshëm, përndryshe, nëse provoni ta ekzekutoni, do të hasni një gabim të mohimit të lejes.


Përpjekja për të ekzekutuar një skedar skripti me leje të konfiguruara gabimisht

Le ta bëjmë skedarin të ekzekutueshëm:

Chmod +x ./myscript
Tani le të përpiqemi ta ekzekutojmë:

./myscript
Pas vendosjes së lejeve, gjithçka funksionon siç duhet.


Po ekzekutohet me sukses skripti bash

Dalja e mesazhit

Për të nxjerrë tekst në konsolën Linux, përdorni komandën echo. Le të përdorim njohuritë e këtij fakti dhe të modifikojmë skriptin tonë, duke shtuar shpjegime për të dhënat që dalin nga komandat tashmë në të:

#!/bin/bash # komenti ynë është këtu echo "Direktoria aktuale është:" pwd echo "Përdoruesi i regjistruar është:" whoami
Kjo është ajo që ndodh pas ekzekutimit të skriptit të përditësuar.


Dalja e mesazheve nga një skenar

Tani mund të shfaqim shënime shpjeguese duke përdorur komandën echo. Nëse nuk dini si të redaktoni një skedar duke përdorur mjete Linux, ose nuk e keni hasur më parë komandën echo, hidhini një sy këtij burimi.

Përdorimi i variablave

Variablat ju lejojnë të ruani informacione në një skedar skripti, siç janë rezultatet e komandave, për t'u përdorur nga komanda të tjera.

Nuk ka asgjë të keqe me ekzekutimin e komandave individuale pa ruajtur rezultatet e tyre, por kjo qasje është mjaft e kufizuar në aftësitë e saj.

Ekzistojnë dy lloje të variablave që mund të përdoren në skriptet bash:

  • Variablat e Mjedisit
  • Variablat e përdoruesit

Variablat e Mjedisit

Ndonjëherë komandat e guaskës duhet të punojnë me disa të dhëna të sistemit. Këtu është një shembull se si të shfaqet direktoria kryesore e përdoruesit aktual:

#!/bin/bash # shfaq jehonën e përdoruesit në shtëpi "Shtëpia për përdoruesin aktual është: $HOME"
Ju lutemi vini re se ne mund të përdorim variablin e sistemit $HOME në thonjëza të dyfishta, kjo nuk do ta pengojë sistemin ta njohë atë. Kjo është ajo që ju merrni nëse ekzekutoni skenarin e mësipërm.


Përdorimi i një ndryshoreje mjedisi në një skenar

Po sikur të duhet të shfaqësh një shenjë dollari në ekran? Le ta provojmë këtë:

Echo "Kam 1$ në xhep"
Sistemi do të zbulojë një shenjë dollari në një varg të cituar dhe do të supozojë se ne kemi referuar një ndryshore. Skripti do të përpiqet të shfaqë vlerën e ndryshores së papërcaktuar $1. Kjo nuk është ajo që na nevojitet. Çfarë duhet bërë?

Në këtë situatë, përdorimi i karakterit të arratisjes, një vijë e prapme, përpara shenjës së dollarit do të ndihmojë:

Echo "Kam \$1 në xhep"
Skenari tani do të nxjerrë saktësisht atë që pritet.


Përdorimi i një sekuence arratisjeje për të printuar një shenjë dollari

Variablat e përdoruesit

Përveç variablave të mjedisit, skriptet bash ju lejojnë të përcaktoni dhe përdorni variablat tuaja në skript. Variabla të tillë mbajnë një vlerë derisa skripti të përfundojë ekzekutimin.

Ashtu si me variablat e sistemit, variablat e përdoruesit mund të aksesohen duke përdorur shenjën e dollarit:
TNW-CUS-FMP - kod promocional për një zbritje prej 10% në shërbimet tona, i disponueshëm për aktivizim brenda 7 ditëve
#!/bin/bash # testimi i variablave grade=5 person="Adam" echo "$person është një djalë i mirë, ai është në klasën $grade"
Kjo është ajo që ndodh pas ekzekutimit të një skenari të tillë.


Variablat e personalizuar në një skript

Zëvendësimi i komandës

Një nga veçoritë më të dobishme të skripteve bash është aftësia për të nxjerrë informacion nga dalja e komandës dhe për t'i caktuar ato variablave, duke lejuar që ai informacion të përdoret kudo në skedarin e skriptit.

Ka dy mënyra për ta bërë këtë.

  • Përdorimi i "`"
  • Duke përdorur konstruktin $().
Kur përdorni metodën e parë, kini kujdes që të mos përfshini një thonjëza të vetme në vend të prapavijës. Komanda duhet të përfshihet në dy ikona të tilla:

Mydir=`pwd`
Në qasjen e dytë, e njëjta gjë shkruhet kështu:

Mydir=$(pwd)
Dhe skenari mund të përfundojë si ky:

#!/bin/bash mydir=$(pwd) echo $mydir
Gjatë funksionimit të saj, dalja e komandës pwd do të ruhet në variablin mydir, përmbajtja e së cilës, duke përdorur komandën echo, do të dërgohet në tastierë.


Një skript që ruan rezultatet e një komande në një ndryshore

Veprimet matematikore

Për të kryer operacione matematikore në një skedar skripti, mund të përdorni një konstrukt si $((a+b)):

#!/bin/bash var1=$((5 + 5)) echo $var1 var2=$(($var1 * 2)) echo $var2


Veprimet matematikore në një skenar

nëse-atëherë konstruksioni i kontrollit

Në disa skenarë, ju duhet të kontrolloni rrjedhën e ekzekutimit të komandës. Për shembull, nëse një vlerë e caktuar është më e madhe se pesë, duhet të kryeni një veprim, përndryshe, një tjetër. Kjo është e zbatueshme në shumë situata, dhe këtu konstrukti i kontrollit nëse-atëherë do të na ndihmojë. Në formën e tij më të thjeshtë duket kështu:

Nëse komanda atëherë komandat fi
Këtu është një shembull pune:

#!/bin/bash nëse pwd atëherë bëni jehonë "Funksionon" fi
Në këtë rast, nëse komanda pwd përfundon me sukses, teksti "punon" do të printohet në tastierë.

Le të përdorim njohuritë që kemi dhe të shkruajmë një skenar më kompleks. Le të themi se duhet të gjejmë një përdorues të caktuar në /etc/passwd, dhe nëse kemi mundur ta gjejmë atë, raportojmë se ai ekziston.

#!/bin/bash user=likegeeks nëse grep $user /etc/passwd pastaj jehonë "Përdoruesi $user ekziston" fi
Kjo është ajo që ndodh pas ekzekutimit të këtij skenari.


Kërkoni për një përdorues

Këtu kemi përdorur komandën grep për të kërkuar përdoruesin në skedarin /etc/passwd. Nëse komanda grep nuk është e njohur për ju, mund të gjendet përshkrimi i saj.

Në këtë shembull, nëse përdoruesi gjendet, skripti do të shfaqë një mesazh përkatës. Po sikur përdoruesi të mos gjendej? Në këtë rast, skenari thjesht do të përfundojë ekzekutimin pa na thënë asgjë. Ne dëshirojmë që ai të na tregojë edhe për këtë, kështu që ne do të përmirësojmë kodin.

konstrukt kontrolli nëse-atëherë tjetër

Në mënyrë që programi të jetë në gjendje të raportojë rezultatet e një kërkimi të suksesshëm dhe dështimin, ne do të përdorim konstruktin nëse-atëherë-tjetër. Ja se si funksionon:

Nëse komanda atëherë komandat e tjera komandat fi
Nëse komanda e parë kthen zero, që do të thotë se është ekzekutuar me sukses, kushti do të jetë i vërtetë dhe ekzekutimi nuk do të vazhdojë përgjatë degës tjetër. Përndryshe, nëse kthehet diçka tjetër përveç zeros, që do të tregonte dështim ose një rezultat të rremë, komandat pas tjetrës do të ekzekutohen.

Le të shkruajmë skriptin e mëposhtëm:

#!/bin/bash user=anotherUser nëse grep $user /etc/passwd pastaj jehonë "Përdoruesi $user Ekziston" tjetër echo "Përdoruesi $user nuk ekziston" fi
Ekzekutimi i tij shkoi përgjatë degës tjetër.


Ekzekutimi i një skripti me një konstrukt nëse-atëherë-tjetër

Epo, le të vazhdojmë dhe të pyesim veten për kushte më komplekse. Po sikur të keni nevojë të kontrolloni jo një kusht, por disa? Për shembull, nëse gjendet përdoruesi i dëshiruar, duhet të shfaqet një mesazh, nëse plotësohet ndonjë kusht tjetër, duhet të shfaqet një mesazh tjetër etj. Në një situatë të tillë, kushtet e mbivendosura do të na ndihmojnë. Duket kështu:

Nëse komanda1 atëherë komanda elif komanda2 atëherë komanda fi
Nëse komanda e parë kthen zero, duke treguar sukses, komandat në bllokun e parë pastaj do të ekzekutohen, përndryshe, nëse kushti i parë është false, dhe nëse komanda e dytë kthen zero, blloku i dytë i kodit do të ekzekutohet.

#!/bin/bash user=anotherUser if grep $user /etc/passwd pastaj jehonë "Përdoruesi $user Ekziston" elif ls /home pastaj echo "Përdoruesi nuk ekziston por gjithsesi ka një direktori nën /home" fi
Në një skript të tillë, për shembull, mund të krijoni një përdorues të ri duke përdorur komandën useradd nëse kërkimi nuk jep rezultate, ose të bëni diçka tjetër të dobishme.

Krahasimi i numrave

Në skriptet mund të krahasoni vlerat numerike. Më poshtë është një listë e komandave përkatëse.
n1 -eq n2 Rikthen true nëse n1 është e barabartë me n2.
n1 -ge n2 Rikthen true nëse n1 është më i madh ose i barabartë me n2.
n1 -gt n2 Rikthen true nëse n1 është më i madh se n2.
n1 -le n2 Rikthen true nëse n1 është më i vogël ose i barabartë me n2.
n1 -lt n2 Rikthen true nëse n1 është më i vogël se n2.
n1 -ne n2 Rikthen true nëse n1 nuk është e barabartë me n2.

Si shembull, le të provojmë një nga operatorët e krahasimit. Vini re se shprehja është e mbyllur në kllapa katrore.

#!/bin/bash val1=6 nëse [ $val1 -gt 5 ] atëherë jehonë "Vlera e testit $val1 është më e madhe se 5" ndryshe echo "Vlera e testit $val1 nuk është më e madhe se 5" fi
Kjo është ajo që kjo komandë do të dalë.


Krahasimi i numrave në skriptet

Vlera e ndryshores val1 është më e madhe se 5, si rezultat ekzekutohet dega e atëhershme e operatorit të krahasimit dhe shfaqet një mesazh përkatës në konsolë.

Krahasimi i vargjeve

Skriptet gjithashtu mund të krahasojnë vlerat e vargut. Operatorët e krahasimit duken mjaft të thjeshtë, por operacionet e krahasimit të vargjeve kanë veçori të caktuara, të cilat do t'i prekim më poshtë. Këtu është një listë e operatorëve.
str1 = str2 Teston vargjet për barazi, duke e kthyer të vërtetën nëse vargjet janë identike.
s tr1 != str2 Rikthen true nëse vargjet nuk janë identike.
rr.1< str2 Возвращает истину, если str1 меньше, чем str2 .
str1 > str2 Rikthen true nëse str1 është më i madh se str2.
-n str1 Rikthen true nëse gjatësia e str1 është më e madhe se zero.
-z str1 Rikthen true nëse gjatësia e str1 është zero.

Këtu është një shembull i krahasimit të vargjeve në një skenar:

#!/bin/bash përdorues ="likegeeks" nëse [$user = $USER] atëherë jehonë "Përdoruesi $user është përdoruesi aktual i regjistruar" fi
Si rezultat i ekzekutimit të skenarit, marrim sa vijon.


Krahasimi i vargjeve në skriptet

Këtu është një veçori e krahasimit të vargjeve që vlen të përmendet. Përkatësisht, operatorët ">" dhe "<» необходимо экранировать с помощью обратной косой черты, иначе скрипт будет работать неправильно, хотя сообщений об ошибках и не появится. Скрипт интерпретирует знак «>» si një komandë ridrejtimi në dalje.

Ja se si duket puna me këta operatorë në kod:

#!/bin/bash val1=text val2="një tekst tjetër" nëse [ $val1 \>
Këtu janë rezultatet e skenarit.


Krahasimi i vargjeve, paralajmërimi i dhënë

Ju lutemi vini re se skenari, megjithëse i ekzekutuar, lëshon një paralajmërim:

./myscript: rreshti 5: [: shumë argumente
Për të hequr qafe këtë paralajmërim, ne mbyllim $val2 në thonjëza të dyfishta:

#!/bin/bash val1=text val2="një tekst tjetër" nëse [ $val1 \> "$val2" ] atëherë echo "$val1 është më i madh se $val2" tjetër echo "$val1 është më pak se $val2" fi
Tani gjithçka funksionon siç duhet.


Krahasimi i vargjeve

Një veçori tjetër e operatorëve ">" dhe "<» заключается в том, как они работают с символами в верхнем и нижнем регистрах. Для того, чтобы понять эту особенность, подготовим текстовый файл с таким содержимым:

Likegeeks likegeeks
Le ta ruajmë atë, duke i dhënë emrin myfile, dhe më pas të ekzekutojmë komandën e mëposhtme në terminal:

Rendit skedarin tim
Ai do t'i rendit linjat nga skedari si kjo:

Likegeeks Likegeeks
Komanda sort, si parazgjedhje, rendit vargjet në rend rritës, domethënë, shkronja e vogël në shembullin tonë është më e vogël se ajo e madhe. Tani le të përgatisim një skenar që do të krahasojë të njëjtat vargje:

#!/bin/bash val1=Likegeeks val2=likegeeks nëse [ $val1 \> $val2 ] atëherë echo "$val1 është më i madh se $val2" tjetër echo "$val1 është më pak se $val2" fi
Nëse e drejtoni, rezulton se gjithçka është anasjelltas - shkronja e vogël tani është më e madhe se ajo e madhe.


Komanda e renditjes dhe krahasimi i vargjeve në një skedar skripti

Në komandat e krahasimit, shkronjat e mëdha janë më të vogla se shkronjat e vogla. Krahasimi i vargjeve këtu bëhet duke krahasuar kodet ASCII të karaktereve, kështu që rendi i renditjes varet nga kodet e karaktereve.

Komanda e renditjes, nga ana tjetër, përdor rendin e renditjes të specifikuar në cilësimet e gjuhës së sistemit.

Kontrollet e dosjeve

Ndoshta komandat e mëposhtme përdoren më shpesh në skriptet bash. Ato ju lejojnë të kontrolloni kushte të ndryshme në lidhje me skedarët. Këtu është një listë e këtyre komandave.
-d file Kontrollon nëse skedari ekziston dhe është një direktori.
-e file Kontrollon nëse skedari ekziston.
-f file Kontrollon nëse skedari ekziston dhe është një skedar.
-r file Kontrollon nëse skedari ekziston dhe është i lexueshëm.
Skedari -s Kontrollon nëse skedari ekziston dhe nuk është bosh.
-w file Kontrollon nëse skedari ekziston dhe është i shkrueshëm.
-x file Kontrollon nëse skedari ekziston dhe është i ekzekutueshëm.
file1 -nt file2 Kontrollon nëse skedari1 është më i ri se skedari2.
file1 -ot file2 Kontrollon nëse skedari1 është më i vjetër se skedari2.
-O skedari Kontrollon nëse skedari ekziston dhe është në pronësi të përdoruesit aktual.
-Skedari G Kontrollon nëse ekziston një skedar dhe nëse ID-ja e grupit përputhet me ID-në e grupit të përdoruesit aktual.

Këto komanda, si dhe shumë të tjera të diskutuara sot, janë të lehta për t'u mbajtur mend. Emrat e tyre, duke qenë shkurtesa fjalësh të ndryshme, tregojnë drejtpërdrejt kontrollet që kryejnë.

Le të provojmë një nga komandat në praktikë:

#!/bin/bash mydir=/home/likegeeks nëse [ -d $mydir ] atëherë echo "Drektoria $mydir ekziston" cd $ mydir ls else echo "Drektoria $mydir nuk ekziston" fi
Ky skript, për një direktori ekzistuese, do të shfaqë përmbajtjen e tij.


Renditja e përmbajtjes së një drejtorie

Ne besojmë se ju mund të eksperimentoni vetë me komandat e mbetura; ato përdoren të gjitha sipas të njëjtit parim.

Rezultatet

Sot folëm se si të filloni të shkruani skripta bash dhe mbuluam disa gjëra themelore. Në fakt, tema e programimit bash është e madhe. Ky artikull është një përkthim i pjesës së parë të një serie të madhe prej 11 materialesh. Nëse dëshironi të vazhdoni tani, këtu është një listë e origjinaleve të këtyre materialeve. Për lehtësi, përkthimi i të cilit sapo lexuat është përfshirë këtu.

Para së gjithash, le të kuptojmë se çfarë është skenar dhe pse është e nevojshme.

Script e perkthyer nga anglishtja - skenar. Ne të gjithë shikojmë filma, shumë prej nesh shikojnë shfaqje. Për të krijuar një film/dramë, skenaristët shkruajnë skenarë për ta, mbi bazën e të cilave aktorët interpretojnë rolet e tyre në skenë, skenë për skenë, nga e cila është krijuar filmi/shfaqja. Puna e krijimit të një skenari është mjaft e mundimshme, ku duhet të keni parasysh gjithçka deri në detajet më të vogla, në mënyrë që në fund artistët të përmbushin atë që synonte skenaristi dhe shikuesi të shohë një vepër të plotë.

Në mënyrë të ngjashme, skriptet shkruhen për të ekzekutuar një listë detyrash që përdoruesi bashkon (kodin) për t'i bërë ato më të lehta dhe më të shpejta për t'u kryer në sistemin operativ. Për të shkruar skripta të thjeshta, nuk është aspak e nevojshme të keni një arsim programues.

Së pari, le të krijojmë më të thjeshtën skenar-Shell për të përditësuar sistemin.

Unë do të kryej të gjitha veprimet me sistemin Ubuntu, por ato janë të aplikueshme edhe për sisteme të tjera Linux, që rrjedh nga Ubuntu. Për këtë na duhen: Redaktori i tekstit për ta mbushur me detyrat e nevojshme për të krijuar një skript (kod) dhe Terminal- për të ekzekutuar skriptin e krijuar. Këto mjete janë instaluar në çdo shpërndarje Linux default.

Pra, hapni një redaktues teksti Gedit dhe futni në të karakteret e para të kërkuara të thirrura shebang.
shebang në programim, kjo është një sekuencë prej dy karakteresh: një hash dhe një pikëçuditëse ( #! ) në fillim të skedarit të skriptit. Dhe shtojini këtyre personazheve pa hapësira /bin/sh- interpretuesi ku do të ekzekutohet skripti. /bin/sh- kjo është zakonisht Guaska Bourne ose një interpretues të pajtueshëm të linjës komanduese që kalon "rruga/drejt/skripti" si parametër i parë.
Rreshti i parë i kërkuar i skenarit do të duket kështu:

# Skripti im i parë i përditësimit të Ubuntu

Shenja hash (#) në fillim të rreshtit ia bën të qartë interpretuesit/terminalit se kjo rresht nuk ka nevojë të lexohet dhe ekzekutohet. Rreshti është i nevojshëm në kodin e këtij skenari në mënyrë që krijuesi i skenarit të dijë se çfarë do të bëjë në këtë segment/skenë në kod, për të mos u ngatërruar në të ardhmen kur të ketë shumë rreshta të tillë. Linja të tilla me një shenjë hash quhen - komentoi .

përditësim sudo apt
sudo apt përmirësim -y

-y në fund të komandës së dytë i bën të qartë përkthyesit/terminalit se ky veprim/komandë duhet të kryhet automatikisht, pa konfirmim shtesë nga përdoruesi duke shtypur një buton. Hyni. y- shkurt për anglisht po, d.m.th. po.

Kjo eshte e gjitha. Skripti juaj i parë është krijuar. Ju duhet të merrni diçka si në foto:


Mbetet vetëm të ruani skedarin/skriptin e krijuar dhe ta jepni Emri me një zgjatje të detyrueshme në fund - .sh. Zgjerim .sh caktuar në skedarin e ekzekutueshëm.
i dhashë Emri - përditësoj.sh, duke kursyer në Dosja kryesore përdorues:


Në mënyrë që skedari/skripti i krijuar të jetë i ekzekutueshëm, duhet t'i jepet leja për ta bërë këtë. Ka dy mënyra për ta bërë këtë.

1. Ekzekutoni komandën e mëposhtme në terminal:

sudo chmod +x përditësim.sh

2. Ose hapni menaxherin e skedarëve Dosja kryesore(ku keni ruajtur skriptin e krijuar), klikoni me të djathtën në skedar, në menunë e kontekstit - Pronat - Të drejtat dhe aktivizoni artikullin - Performanca: Lejo që skedari të ekzekutohet si program:


Për të ekzekutuar skriptin e krijuar, duhet të hapni terminalin (siç kam shkruar në fillim të artikullit se terminali është një atribut/mjet i nevojshëm për ekzekutimin e skriptit), futni sh, i ndarë me një hapësirë ​​emri i skenarit - përditësoj.sh dhe shtypni tastin Hyni:


Ose në terminal futemi sh dhe tërhiqni skedarin e krijuar me skriptin nga menaxheri i skedarëve (gjithashtu i ndarë nga një hapësirë):


Pasi të shfaqet shtegu i skedarit pas komandës sh dhe hapësirë, thjesht shtypni tastin Hyni(Enter) për të kryer një përditësim të sistemit:


Tani në çdo kohë mund të përditësoni sistemin duke përdorur skriptin tuaj.

Po, dikush mund të argumentojë se përditësimi i sistemit nuk është i vështirë për t'u bërë duke ekzekutuar këto dy komanda në terminal, pse të fryhet dhe të krijohen disa skripta? Kjo është e drejtë. Por ky është një shembull i krijimit të një skenari të thjeshtë për të treguar se "nuk janë perënditë ata që djegin enët"

Për shkrimi i një skenari të thjeshtë bash, duhet të kryejmë hapat e mëposhtëm të thjeshtë:

Si funksionon gjithçka:

Rreshti i parë i skriptit tonë #!/bin/bash është thelbësor që skripti ynë të ekzekutohet me sukses.

rreshti i dytë mkdir testdir krijon direktorinë testdir

rreshti i tretë cd testdir ju lejon të shkoni në direktorinë e krijuar testdir

ekipi prekje në rreshtin tjetër prek file1 file2 file3 krijon tre skedarë

dhe komanda e fundit në rreshtin e skriptit tonë, ls -al, ju lejon të shfaqni përmbajtjen e drejtorisë aktuale, në të cilën, falë rreshtit të mëparshëm, janë shfaqur tre skedarë bosh.

Siç e shohim, në tonë skenar i thjeshtë të gjitha komandat fillojnë në një linjë të re. Çdo rresht, kur ekzekuton skriptin, kryen në mënyrë sekuenciale punën e tij, duke kryer veprime të caktuara.

Nëse çdo ditë ekzekutoni një zinxhir të ndonjë komande identike (me parametra konstante) në Linux, atëherë ndoshta ka kuptim që ju të shkruani të njëjtën gjë skenar i thjeshtë bash, e cila do t'ju lejojë të kurseni kohën tuaj dhe të automatizoni punën tuaj.

Artikujt më të mirë mbi këtë temë