Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • TV (Smart TV)
  • Udhëzues për skriptimin Bash. Shkrimi i skripteve në kodet burimore të skripteve Bash Shell

Udhëzues për skriptimin Bash. Shkrimi i skripteve në kodet burimore të skripteve Bash Shell

Në komunitetin e administratorëve të sistemit dhe përdoruesve të zakonshëm Linux, praktika e shkrimit të skripteve Bash është shpesh e famshme për të lehtësuar dhe thjeshtuar ekzekutimin e qëllimeve specifike në sistemin operativ Linux. Në këtë artikull do të shikojmë shkrimin e skripteve në Bash, do të shikojmë operatorët bazë, si dhe se si funksionojnë ata, si të thuash, skriptet Bash nga e para. E thënë thjesht, një herë keni shkruar rendin e ngjarjeve që duhen bërë, keni shkruar të dhënat e kështu me radhë, dhe më pas shkruani lehtësisht dhe thjesht një komandë të vogël dhe të gjitha procedurat kryhen sipas nevojës.

Është e mundur të shkohet edhe më tej dhe të planifikohet ekzekutimi automatik i një skenari. Nëse tashmë jeni një përdorues më me përvojë, atëherë, ka shumë të ngjarë, shpesh arrini qëllime të ndryshme përmes terminalit. Ky është vetëm një shembull dhe ka shumë veprime të tilla, madje edhe marrjen e kopjeve rezervë dhe ngarkimin e skedarëve të kopjuar në një server të largët. Shpesh ka detyra për të cilat ju duhet të ekzekutoni disa komanda me radhë, për shembull, për të përditësuar sistemin, së pari duhet të përditësoni depot dhe vetëm atëherë të shkarkoni versione të reja të paketave.

Kjo është një guaskë komandimi ku ju keni mundësinë të lëshoni komanda të ndryshme që do të fillojnë të kryejnë punë të ndryshme me shpejtësi të lartë dhe frytdhënëse. Absolutisht e gjithë fuqia e Linux OS është në përdorimin e terminalit. Prandaj, për të mos shtypur të njëjtat komanda disa herë, mund të përdorni skriptet. Kjo është shumë e përshtatshme, thjesht kombinoni disa komanda që kanë një efekt, dhe më pas i ekzekutoni me të njëjtën komandë ose edhe duke përdorur një shkurtore. Për sistemin operativ Linux, janë krijuar shumë skripta që ekzekutohen në predha të ndryshme komandash. Epo, në parim, ju tashmë e kuptoni këtë.

Sistemi operativ i konsideron si të ekzekutueshëm vetëm ato skedarë të cilëve u është caktuar karakteristika e ekzekutueshmërisë. Dhe interpretuesi shqipton rresht pas rreshti në një rresht dhe ekzekuton të gjitha direktivat që janë të pranishme në skedar. Por nëse për ta është caktuar karakteristika e ekzekutueshmërisë, atëherë për t'i nisur ato përdoret një program i specializuar kompjuterik - një përkthyes, në veçanti, guaska bash. Mund ta ekzekutojmë si çdo program tjetër duke përdorur një server terminal, ose mund të ekzekutojmë një shell dhe t'i tregojmë se cilin skedar të ekzekutojë.

Në këtë rast, nuk keni nevojë as për një flamur ekzekutueshmërie. Në vend të kësaj, përdoren nënshkrimet e fillimit të skedarëve dhe flamuj të veçantë. Ne kemi disa metoda të ndryshme për të aktivizuar skriptin në Linux OS. Linux OS praktikisht nuk përdor një shtesë skedari për të përcaktuar llojin e tij në nivelin e sistemit. Menaxherët e skedarëve mund ta bëjnë këtë, por jo gjithmonë. Sistemi operativ i konsideron si të ekzekutueshëm vetëm ato skedarë të cilëve u është caktuar karakteristika e ekzekutueshmërisë. Këto janë skedarë të zakonshëm që përmbajnë tekst.

Skriptet Linux Bash për Dummies

Konstrukti bash mund të përshkruhet në 7 detyrime të një lloji të ngjashëm: "thirrja e interpretuesit të komandës - trupi i skriptit bash - fundi i skenarit". Skriptet shkruhen me mbështetjen e redaktuesve të ndryshëm të tekstit dhe ruhen si të dhëna kompjuterike tekstuale. Por, për ta bërë më të përshtatshëm, i ruaj së bashku me shtesën “*.sh”. Por le t'i shohim të gjitha këto me shembullin e një qëllimi specifik. Ekziston një përdorim që duhet të nisë me një grup mjaft të madh karakteristikash. Do t'ju duhet të filloni shpesh dhe jeni shumë dembel për t'i futur këto karakteristika çdo herë. Për të qenë më specifik, le të shohim se si duket ky efekt:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u user -c 100

Për këtë skenar, le të përdorim interpretuesin bash. Procesi kryesor që ju dhe unë kemi nevojë është të thërrasim përkthyesin. Hapni një redaktues teksti dhe shkruani kodin.

Le të shtojmë këtë operacion duke marrë parasysh variablat e futura:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u $user -c $cash

Teksti që do të fusim në regjistrat do të jetë si ky: text="Bilanci i përdoruesit "përdorues" është rimbushur me rubla "cash" me kohë"

Argumenti i tekstit ndryshon në varësi të përdoruesit, parave të gatshme dhe variablave të kohës

nëse [ -e /home/Admin/scripts/sgconf/sgconf.log] atëherë jehonë tekstin >> /home/Admin/scripts/sgconf/sgconf.log tjetër echo text > /home/Admin/scripts/sgconf/sgconf.logfi

Tani, kur duhet t'i depozitojmë para dikujt, e ekzekutojmë skriptin me komandën "sh sgconf.sh", shkruani emrin e paguesit dhe shumën e pagesës. Pa rreshta të gjata, pa dhimbje koke me hyrje të vazhdueshme në të njëjtat vlera.

Krijo një skript bash në Linux OS

Për të shkruar një skenar të thjeshtë në bash, duhet të kryejmë procedurat e mëposhtme të zakonshme. Le të krijojmë një skedar të pakuptimtë në linjën e komandës Linux (për shembull, ne e quajmë shkrimin e parë) dhe ta hapim për redaktim në redaktuesin tonë të preferuar të tekstit (vi/vim, nano, gedit, e kështu me radhë). Për të zhvilluar një skenar nuk do t'ju duhet shumë përpjekje, por për të skicuar një skenar (program), do t'ju duhet të studioni literaturë të ndryshme ndihmëse. Ne do të përshkruajmë bazat e shkrimit të skripteve, kështu që le të fillojmë, por nëse nuk e dini se çfarë është një terminal dhe si ta përdorni atë, atëherë ky është vendi për ju. Që në fillim, për të shkruar bash, duhet të krijojmë një direktori për skriptet tona dhe një skedar ku do të shkruajmë gjithçka, për këtë hapim terminalin dhe krijojmë një direktori.

Kaloni në drejtorinë e krijuar rishtazi

Dhe krijoni një skedar

shkrimi sudo gedit.sh

Në shembullin tim, unë do të krijoj një skript të përditësimit të sistemit dhe do ta shkruaj në këtë skedar. Ne do të hapim redaktuesin e tekstit gedit, më pëlqen më shumë vim, por nuk do të pranohet përgjithësisht nga ju, kështu që po e shfaq në atë standard.

sudo apt përditësim;sudo apt përmirësim i plotë;

Bëni skedarin e skriptit të ekzekutueshëm (nëse nuk është tashmë kështu). Drejtimi i skripteve sh nga linja e komandës është e lehtë. Ekzekutoni linux skriptin bash.

chmod +x skript.sh

Ne ekzekutojmë skriptin thjesht duke specifikuar rrugën drejt tij:

rrugë/to/skript.sh

Nëse skripti është në drejtorinë aktuale, atëherë duhet të specifikoni ./ përpara emrit të skedarit të skriptit:

Ndonjëherë ju nevojiten të drejtat e superpërdoruesit për të ekzekutuar një skript, pastaj thjesht shkruani komandën sudo përpara skriptit:

sudo./script.shsudo shteg/to/script.sh

Sigurisht, mund ta filloni skenarin duke specifikuar drejtpërdrejt përkthyesin: sh, bash dhe të tjerët:

skript bash.shsh shteg/to/script.sh

Siç mund ta shihni, fillimi i një skripti sh në Linux është një detyrë mjaft e zakonshme, edhe nëse nuk jeni ende shumë të njohur me terminalin. Ka vërtet shumë skripta dhe mund t'ju duhet të ekzekutoni disa prej tyre. Në këtë udhëzues, ne shikuam skriptet e dobishme të Linux bash që mund të përdorni kur përdorni Linux OS. Në këtë artikull, ne shikuam skriptet e dobishme të Linux bash që mund të përdorni kur punoni me sistemin. Disa prej tyre përbëhen nga disa rreshta, disa janë vendosur në një rresht. Ka të dyja copa të vogla që mund t'i përdorni në skriptet tuaja, si dhe skriptet e dialogut të plotë për të punuar me ta përmes tastierës.

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 skriptet e 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 në internet për faqe me cilësime të ngjashme çdo herë.

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.

Linja e komandës dhe gjërat e pabesueshme që mund të bëni me të janë shenjë dalluese e UNIX dhe të gjithë pasardhësve të tij. Dhe ku ka një linjë komande, ka skripta. Dhe sot... jo, nuk do të mësojmë të shkruajmë skripta, do të shikojmë më të dobishmet prej tyre, ato që mund t'i përdorni çdo ditë për të zgjidhur një gamë të gjerë problemesh, nga raportet e motit dhe një server në internet në një rresht deri te një bot për Twitter në dhjetë rreshta dhe një skenar për të nisur automatikisht çdo klient torrent.

Më lejoni të bëj një rezervë menjëherë se nuk jam aspak ndjekës i shamanizmit dhe në asnjë mënyrë nuk ju bëj thirrje të uleni në një tastierë jeshile dhe të zezë dhe të shkruani një tufë shkronjash për të kryer veprime për të cilat në ndërfaqen grafike thjesht duhet të vendosësh miun mbi elementin e dëshiruar. Megjithatë, jam i bindur se për zgjidhjen e shumë problemeve, tastiera dhe skriptet janë shumë më të mira se ndërfaqja grafike dhe për këtë arsye nuk mund të neglizhohen. Për më tepër, çdo DE ju lejon të krijoni një ikonë për skriptin, kështu që nuk keni nevojë as të hapni tastierën për ta ekzekutuar atë.

Shembuj të thjeshtë

Pra, pa përçartje të mëtejshme, le të kalojmë drejtpërdrejt te shembujt:

$ curl ifconfig.co

Kjo komandë e thjeshtë do t'ju tregojë IP-në e jashtme - ideale nëse hyni në Rrjet përmes një ruteri. Gjithçka që bën është thjesht të kontaktojë serverin ifconfig.co, i cili e kthen IP-në përsëri në një rresht në vend të një faqeje të plotë ueb.

Dhe po, ky nuk është fare një skrip, është thjesht një komandë, por për ta kthyer një komandë në skript, thjesht vendoseni në një skedar teksti dhe shtoni të ashtuquajturin shebang si rreshtin e parë, domethënë simbolet # !, e ndjekur nga emri i interpretuesit të komandës:

$ chmod +x ~/bin/myip.sh

Tani mund të thirret nga linja e komandës me komandën myip.sh.

#!/bin/sh curl -4 wttr.in/Moscow

Ky skenar ju lejon të merrni një raport moti për katër ditë. Parimi këtu është i njëjtë si në rastin e ifconfig.co.

Raporti i motit në tastierën #!/bin/sh dig +short txt $1.wp.dg.cx

Dhe në këtë mënyrë mund të merrni një përshkrim të shkurtër të diçkaje në Wikipedia, duke përdorur një pyetje DNS në vend që të kontaktoni një server në internet. Nga rruga, është gjithashtu shumë e lehtë të krijosh një server në internet përmes vijës së komandës:

#!/bin/sh ndërsa (nc -l 80< file.html >:) ; bëj: ; bërë

Ky skenar bazohet në programin netcat (nc), i cili quhet thika e ushtrisë zvicerane të operacioneve të rrjetit. Skripti fillon një lak që ekzekuton komandën nc, e cila dëgjon në portin 80 dhe i përgjigjet kërkesës me skedar.html, duke dërguar kërkesën e kaluar në askund (simboli do të thotë noop, domethënë një operacion bosh).

Duke përdorur skriptet dhe komandat e thjeshta, mund të dëgjoni me lehtësi radio në internet:

#!/bin/sh mpv --volume=50 -lista për luajtje ~/16bit.fm_128.m3u

Natyrisht, lista e luajtjes në formatin M3U duhet të shkarkohet paraprakisht nga faqja e internetit e stacionit të radios. Meqë ra fjala, nëse ekzekutoni MPlayer me argument --input-ipc-server=/tmp/mpvsocket, mund të kontrollohet duke shkruar komanda në një skedar. Për shembull, rregulloni volumin:

Echo "volumi +10" | socat - /tmp/mpvsocket

Krijoni dy skripta: njëri për të nisur, tjetri për të ndalur radion (me linjën killall mpv), varni në desktopin tuaj dhe konfiguroni çelësat e nxehtë DE për të kontrolluar riprodhimin. Voila, ju keni një luajtës të gatshëm për radio në internet, të cilin mund ta lansoni thjesht duke klikuar në ikonën në desktopin tuaj. Dhe vështirë se do të konsumojë kujtesën ose do ta zërë tabakanë.

Por le të bëjmë një pushim nga operacionet e rrjetit dhe të kthehemi te çështjet lokale.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Ky është një nga skenarët e mi të preferuar. Krijon një arkiv tar.gz të drejtorisë aktuale. Veçanërisht vlen të përmendet këtu konstruksioni $(PWD##*/), i cili merr rrugën e plotë për në direktoriumin aktual (ndryshorja $PWD) dhe heq pjesën e parë prej saj deri në prerjen e fundit, duke lënë kështu vetëm emrin e vetë drejtoria. Më pas, shtohet në të shtesa tar.gz. Mund të lexoni më shumë rreth konstrukteve të tilla në man bash.

#!/bin/sh ndërsa e vërtetë; bëj inotifywait -r -e MODIFY DIRECTORY && YOUR_COMMAND kryer

Dhe ky është një skript që ekzekuton një komandë në përgjigje të ndryshimeve në skedarët në drejtori. Mund të përdoret për shumë qëllime të ndryshme, të tilla si ndezja automatike e luajtësit kur ruani një skedar MP3. Ose thjesht shfaqni një njoftim në desktop duke përdorur notify-send si komandë:

Njoftoni-dërgoni "Skedari u ndryshua"

Desktop

Meqenëse po flasim për desktopin, le të vazhdojmë. Ashtu si tastiera, ajo gjithashtu mund të skriptohet. Për shembull, këtu është një skript që shkarkon sfonde të rastësishme të publikuara në kanalin reddit të sfondit:

Vazhdimi është i disponueshëm vetëm për anëtarët

Opsioni 1. Bashkohuni me komunitetin "site" për të lexuar të gjitha materialet në sajt

Anëtarësimi në komunitet brenda periudhës së specifikuar do t'ju japë akses në TË GJITHA materialet e Hakerëve, do të rrisë zbritjen tuaj personale kumulative dhe do t'ju lejojë të grumbulloni një vlerësim profesional të pikëve të Xakep!

Konsola Linux është një mjet që ju lejon të kryeni manipulime të tilla që linja e komandës në Windows nuk ju lejon t'i bëni; tastiera Linux është karta telefonike e UNIX. Materiali i sotëm nuk ka të bëjë me atë se si të shkruani skenarë, jo, nuk do t'ju mësoj si, çfarë dhe pse. Ne do të shikojmë një përzgjedhje të vogël të skripteve të dobishme që mund t'i përdorni çdo ditë për të zgjidhur lloje të ndryshme problemesh, për shembull, shikoni motin për disa ditë përpara, skriptet për një server në internet në një rresht, duke shkruar një bot për Twitter dhe një skript për të nisur automatikisht çdo klient torrent.

Ky material nuk është shkruar që ju të merreni me shamanizëm, në asnjë rast nuk ju inkurajoj të uleni në tastierë dhe të shkruani qindra karaktere për të kryer disa veprime që mund t'i kryeni në ndërfaqen grafike vetëm duke vendosur miun mbi elementin që ju nevojë. Por ka një gjë, ndërfaqja grafike nuk është gjithmonë zgjidhja më e mirë; shpesh, për zgjidhjen e shumë problemeve, tastiera dhe skriptet përballen me detyrën shumë më mirë sesa aplikacionet me një ndërfaqe grafike, dhe për këtë arsye nuk duhet të harroni skriptet pasi ato zgjidhni shumë punë rutinë më mirë se mjetet grafike. Vlen gjithashtu të shtohet se çdo DE ju lejon të krijoni një ikonë për skriptet tuaja, duke klikuar mbi të cilën mund t'i hapni lehtësisht pa hapur tastierën.

Le të fillojmë me shembuj të thjeshtë

Komanda e mëposhtme do t'ju tregojë IP-në tuaj të jashtme - kjo është ideale nëse hyni në Rrjet duke përdorur një ruter. Kjo komandë thërret serverin ifconfig.co, i cili kthen IP-në në një rresht pa shkrim të panevojshëm që nuk ju nevojitet.

Curl ifconfig.co

Po, ky nuk është një skript, kjo është një komandë e vogël, por nëse dëshironi ta ktheni këtë komandë në një skript, thjesht duhet ta vendosni në një skedar teksti, në fund do të marrim një skript të vogël bash:

#!/bin/bash curl ifconfig.co

Ne e ruajmë skriptin në drejtorinë ~/bin dhe japim të drejtat e ekzekutimit:

Chmod +x ~/bin/yourip.sh

Pothuajse gati, mund ta ekzekutoni skriptin nga linja e komandës duke përdorur komandën yourip.sh.

Ne kemi mbaruar me IP-në, le të kontrollojmë motin nga tastiera.

#!/bin/sh curl -4 wttr.in/Kiev

Ky skenar ju lejon të merrni një raport moti për katër ditë, në këtë rast moti për qytetin e Kievit.

#!/bin/sh dig +short txt $1.wp.dg.cx

Më sipër shihni një shembull se si mund të merrni një përshkrim të shkurtër të diçkaje në Wikipedia, në rastin tonë ne përdorim një pyetje DNS në vend që të kontaktojmë serverin e uebit. Është gjithashtu shumë e lehtë të krijosh një server në internet përmes tastierës:

#!/bin/sh ndërsa (nc -l 80< file.html >:) ; bëj: ; bërë

Skripti i mësipërm bazohet në programin netcat (nc), i quajtur shpesh thika e ushtrisë zvicerane, pasi ju lejon të bëni shumë truke për operacionet e rrjetit. Skripti është i thjeshtë, fillon një lak që ekzekuton komandën nc, e cila tashmë dëgjon portin 80 dhe i përgjigjet kërkesës skedar.html, duke dërguar kërkesën e kaluar në askund (simboli do të thotë noop, domethënë një operacion bosh).

Duke përdorur skriptet dhe komandat e thjeshta, mund të dëgjoni radio në internet:

#!/bin/sh mpv --volume=50 -lista për luajtje ~/16bit.fm_128.m3u

Sigurisht, para kësaj ju duhet të shkarkoni listën e luajtjes së radios në formatin M3U nga faqja e internetit e stacionit të radios. Nëse nisni MPlayer duke përdorur argumentin -input-ipc-server=/tmp/mpvsocket, mund të kontrollohet duke shkruar komanda në një skedar. Për shembull, rregulloni volumin:

Echo "volumi +10" | socat - /tmp/mpvsocket

Ne krijojmë dy skripta: i pari për të filluar dhe tjetri për të ndaluar radion (në të cilën do të shkruajmë linjën killall mpv), më pas e varim në desktop, së bashku duke vendosur çelësat e nxehtë DE për të kontrolluar riprodhimin. Dhe kjo është e gjitha, ju keni një lojtar me të cilin mund të dëgjoni radio në internet.

Ne u larguam me operacionet e rrjetit, le të kalojmë në ato lokale.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Ky skript krijon një arkiv tar.gz për drejtorinë aktuale. Vëmendje e veçantë duhet t'i kushtohet konstruksionit $(PWD##*/), i cili merr të gjithë shtegun për në direktoriumin aktual (ndryshorja $PWD), më pas heq pjesën e parë deri në prerjen e fundit, duke lënë vetëm emrin e drejtorisë dhe duke shtuar në të ekstensionin tar.gz. Nëse dëshironi të mësoni më shumë informacion mbi ndërtime të tilla, mund të lexoni duke ekzekutuar komandën man bash në tastierë.

#!/bin/sh ndërsa e vërtetë; bëj inotifywait -r -e MODIFY DIRECTORY && YOUR_COMMAND kryer

Skripti i mësipërm ekzekuton një komandë në përgjigje të ndryshimeve në skedarët në një drejtori. Mund ta përdorni për qëllime të ndryshme, si shembull për ndezjen automatike të luajtësit kur ruani MP3. Ose, si shembull, shfaqni një njoftim në desktop duke përdorur komandën notify-send:

Njoftoni-dërgoni "Skedari u ndryshua"

Për desktop

Më poshtë do të shihni një shembull të një skripti që ngarkon sfonde të rastësishme që publikohen në kanalin reddit të sfondit:

#!/bin/bash wget -O - http://www.reddit.com/r/wallpaper |\ grep -Eo "http://i.imgur.com[^&]+jpg" |\ shuf -n 1 |\ xargs wget -O background.jpg feh --bg-fill background.jpg

E gjitha funksionon mjaft thjesht. Duke përdorur mjetin wget, skripti shkarkon faqen www.reddit.com/r/wallpaper, më pas ia kalon grep, i cili tashmë kërkon lidhje me imgur, dhe zgjedh një të rastësishme duke përdorur shuf, e shkarkon atë duke përdorur wget dhe e vendos si letër-muri për desktopin tuaj, duke përdorur komandën feh (ky është një shikues imazhi në miniaturë që duhet të instalohet së pari). Ju mund ta shtoni këtë skript në një skedar teksti të rregullt siç e përshkrova më sipër, ta ruani në formatin sh, ta bëni të ekzekutueshëm, t'i shtoni një ikonë dhe ta ekzekutoni nga desktopi duke klikuar dhe sfondi juaj do të ndryshojë.

#!/bin/sh gjendje=`synklient | grep TouchpadOff | cut -d "=" -f 2` if [ $state = "1" ]; pastaj sinklienti TouchpadOff=0 tjetër sinklienti TouchpadOff=1 fi

Skripti i mësipërm përdoret për të aktivizuar dhe çaktivizuar tastierën me prekje të laptopit tuaj: aktivizo nëse është i çaktivizuar dhe anasjelltas. Për funksionimin e saktë, ai përdor mjetin sinklient, i cili ju lejon të kontrolloni tastierë me prekje, të cilat prodhohen kryesisht nga Synaptics, kjo është 90% e mundur, madje edhe më shumë. Pas nisjes, programi shfaq shumë informacione, duke përfshirë linjën TouchpadOff = 1 nëse është i aktivizuar dhe TouchpadOff = 2 nëse është i çaktivizuar. Skripti do t'i lexojë këto vlera dhe, në varësi të gjendjes së tastierës me prekje, do ta aktivizojë ose çaktivizojë atë.

!#/bin/bash mpv tv:// -korniza 3 -vo jpeg mv 00000003.jpg foto.jpg rm -f 0000*.jpg

Duke përdorur skriptin e mësipërm, mund të bëni një foto duke përdorur kamerën tuaj të internetit. Skripti përdor një luajtës video mpv që regjistron tre kornizat e para të kapura nga kamera në skedarë të formatit JPEG me emrat 0000000.jpg, 00000002.jpg, 00000003.jpg, etj., pas së cilës imazhi i tretë riemërohet në një foto.jpg skedar, dhe pjesa tjetër fshihet. Për çfarë përdoren tre foto? Ato nevojiten vetëm në mënyrë që kamera juaj të ketë kohë për të inicializuar; nëse përdorni dy fotografitë e para, zakonisht do të merrni një foto të zezë. Ka edhe incidente me pozicionimin, fotografia mund të jetë me kokë poshtë; për të shmangur këtë, mpv duhet të lëshohet me flamurin e rrotullimit -vf:

Mpv tv:// -korniza 3 -vf flip -vo jpeg

Ju mund të përdorni të njëjtën komandë për të krijuar një kamerë sigurie që do të bëjë fotografi vetëm kur përdoruesi prek miun:

#!/bin/bash ndërsa e vërtetë; bëj sudo cat /dev/input/mouse0 | lexo -n1 mpv tv:// -korniza 3 -vo jpeg mv 00000003.jpg `data +%F-%H-%M`.jpg rm -f 0000*.jpg gjumë 10 kryer

Skripti i mësipërm përdor një lak të pafund, duke marrë të dhëna nga pajisja /dev/input/mouse0. Nëse ka të dhëna, do të thotë se miu është zhvendosur ose një nga butonat e tij është shtypur. Pastaj mpv përdoret për të krijuar tre fotografi, fotografisë së tretë i jepet emri i datës aktuale dhe dy të parat fshihen.

Nëse dëshironi të regjistroni një video të plotë nga një kamerë në internet, mund të përdorni një skenar të ngjashëm si shembull:

#!/bin/bash menkoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:advice=hw.2, 0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi

Si rezultat, do të merrni një skedar të quajtur video.avi në formatin MPEG4, shpejtësia e biteve 1800 dhe një skedar audio në formatin MP3 me shpejtësi bit 128.

#!/bin/bash ffmpeg -f x11grab -r 25 -s 1366x768 -i:0.0 screencast.mpg

Duke përdorur skriptin e mësipërm, mund të regjistroni një transmetim të plotë të ekranit. 1366×768 është rezolucioni i desktopit, mund ta personalizoni sipas dëshirës tuaj. Për të marrë një pamje të ekranit të një dritareje të vetme, mund të përdorni komandën e importit:

Importo screenshot.png

Nëse ekzekutoni komandën e mësipërme, ikona e kursorit të miut do të ndryshojë në një kryq, duke përdorur të cilin mund të zgjidhni një zonë të ekranit siç bëni kur bëni pamje nga ekrani duke përdorur aplikacione ose shtesa të palëve të treta. Nëse e bashkëngjitni këtë komandë në një nga çelësat kryesorë, do të merrni një sistem pothuajse ideal për marrjen e pamjeve të ekranit dhe ky kombinim nuk do të hajë RAM-in tuaj, gjë që i jep në mënyrë të konsiderueshme një avantazh të madh.

Ju gjithashtu mund të konfiguroni një monitor të jashtëm duke përdorur tastierën:

#!/bin/sh nëse [ -z "$1"]; atëherë dilni nga fi nëse [ $1 == "off" ]; pastaj xrandr --dalja VGA-0 --off xrandr -s 0 other if [ $1 == "on"]; pastaj xrandr --dalja LVDS --auto --primare --dalja VGA-0 --auto --e majta e LVDS xrandr --mode e re "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088ndra xrandr addmode VGA-0 1920x1080 xrandr --dalja VGA-0 --mode 1920x1080 fi xrandr --dpi 96

Ky skenar bazohet në faktin se monitori kryesor quhet LVDS, dhe monitori i jashtëm quhet VGA-0. Kjo është një situatë standarde për të gjithë laptopët; nëse nuk jeni të sigurt, mund të kontrolloni duke ekzekutuar komandën xrandr: kur kaloni një argument në skript fikur ai çaktivizon monitorin e jashtëm, argument , nga ana tjetër, e përfshin atë, duke e vendosur në anën e majtë të kryesores (argument -majtas-ngaLVDS në ekipin e parë). Më pas skripti krijon një konfigurim të ri për monitorin me rezolucion 1920 x 1080 dhe e aktivizon atë. Dhe së fundi, skripti vendos vlerën e paracaktuar të DPI - pasi kur lidh një monitor me një rezolucion të ndryshëm, ai shpesh rrëzohet.

Në shumicën e rasteve komandat xrandr -mode e re... Dhe xrandr -addmode... nuk nevojiten pasi Xorg do të marrë konfigurimin dhe rezolucionin e monitorit duke përdorur EDID. Ndonjëherë, megjithatë, kjo nuk ndodh, dhe vargu i konfigurimit specifikohet pas argumentit -mode e re, duhet ta gjeneroni vetë duke përdorur mjetin cvt:

CVT 1920 1080

Duke përdorur mjetin cvt, mund të gjeneroni rezolucione të personalizuara që nuk mbështeten nga monitori i paracaktuar.

Kërkoni në Google nga linja e komandës

Le të kthehemi sërish te shërbimet e rrjetit. Si të merrni 10 rezultatet më të mira të kërkimit në Google? Shikoni skenarin më poshtë:

#!/bin/bash Q=" " URL="https://www.google.de/search?tbs=li:1&q=" AGENT="Mozilla/4.0" transmetim=$(curl -A "$AGENT" -skLm 10 "$(GOOG_URL)$(Q//\ /+)" | grep -oP "\/url\?q=.+?&" | sed "s|/url?q=||; s| &||") echo -e "$(stream//\%/\x)"

Ky skenar i dërgon një kërkesë Google duke përdorur curl, duke zëvendësuar hapësirat në vargun e kërkimit me pluse. Pastaj lidhjet shfaqen në përgjigjen HTML

Shembull me shërbimin YouTube:

#!/bin/bash mpv -fs -qetë `youtube-dl -g "$1"`

Skripti nga shembulli i mësipërm luan një video me ID-në e specifikuar në argument duke përdorur një luajtës mpv. Ju duhet të instaloni youtube-dl paraprakisht.

Disa shembuj të punës me Twitter. Më poshtë do të shihni një skript për një bot të plotë, i cili pranon një komandë si hyrje, e ekzekuton atë duke përdorur interpretuesin e komandës dhe ia dërgon rezultatin përdoruesit të specifikuar.

#!/bin/bash USER="Nofka juaj" ndërsa e vërtetë; bëni CMD=`echo "/dma +1" | ttytter-script | sed "s/\[.*\]\ //" nëse [ $CMD != $OLD_CMD ]; pastaj REPL=`$CMD` echo "/dm $USER $(REPL:0:140)" | ttytter -script CMD = $OLD_COMD fi gjumë 60 i kryer

Skripti përdor klientin e tastierës ttytter, duke lexuar vlerën e fundit të mesazhit të drejtpërdrejtë nga cikli, pastaj kontrollon nëse kjo komandë është ekzekutuar, nëse jo, e ekzekuton atë dhe ia dërgon përdoruesit të specifikuar me variablin USER, duke prerë deri në 140 karaktere .

Që gjithçka të funksionojë, duhet të instaloni mjetin ttytter, ta ekzekutoni, më pas kopjoni lidhjen e krijuar nga tastiera dhe ngjisni atë në shiritin e adresave të shfletuesit, kaloni përmes konfirmimit, pranoni, më pas merrni çelësin e vërtetimit, kopjoni dhe ngjitni atë në tastierë në ttytter. Sigurisht, para gjithë kësaj, këshillohet të shtoni një përdorues të veçantë dhe të identifikoheni nën llogarinë e tij.

Ju mund të përdorni Twitter jo vetëm për të krijuar një bot, por edhe për të monitoruar kompjuterin tuaj. Skripti më poshtë i dërgon një mesazh furnizimit me informacion në lidhje me gjendjen e makinës (emri i hostit, koha e funksionimit, ngarkesa, memoria e lirë dhe ngarkesa e CPU-së):

#!/bin/bash HOST=`emri i hostit -s` UP=`uptime | prerë -d" " -f4,5 | cut -d"," -f1` LOAD=`uptime | cut -d":" -f5,6` MEM=`ps aux | awk "( shuma += $4 ); FUND (shuma e printimit)"` CPU=`ps aux | awk "( shuma += $3 ); END ( shuma e printimit )"` tweet="Host: $(HOST), koha e funksionimit: $(UP), procesori: $(CPU)%, memoria: $(MEM)%, loadavg $(LOAD)" nëse [ $(echo "$(tweet)" | wc -c) -gt 140 ]; pastaj jehonë "FATAL: Tweet-i është më i gjatë se 140 karaktere!" dalje 1 fi echo $tweet | ttytter-script

Më në fund, shikoni skriptin më poshtë, ky skript përdoret për të nisur dhe ndaluar klientin e torrentit ndërsa kompjuteri juaj është i papunë:

#!/bin/bash IDLE=600000 STOPCMD="transmission-remote -S" STARTCMD="transmission-remote -s" STOPPED="po" while true; bëj nëse [ `xprintidle` -gt $IDLE ]; atëherë nëse [ $STOPPED = "po" ]; atëherë $STARTCMD STOPPED="jo" fi tjetër nëse [ $STOPPED = "jo" ]; pastaj $STOPCMD STOPPED="po" fi fi gjumë 60 kryer

Çdo minutë skripti shkon në një lak të pafund dhe kontrollon se sa kohë në milisekonda ka kaluar që kur përdoruesi ka kryer veprimin e fundit (xprintidle përdoret për këto qëllime). Nëse kanë kaluar 600,000 ms (dhjetë minuta), skripti ekzekuton komandën e specifikuar në variablin STARTCMD. Përndryshe, komanda STOPCMD ekzekutohet, por vetëm nëse STARTCMD është ekzekutuar para saj. Për ta shpjeguar në terma të thjeshtë, ju nuk bëni asgjë në kompjuter për dhjetë minuta, pastaj STARTCMD hapet, në rastin tonë kjo është komanda që fillon të gjitha shkarkimet në Transmision, nëse jo, të gjitha shkarkimet pezullohen. Nuk ju pëlqen klienti i Transmisionit? Ne përdorim komanda për Deluge, shih më poshtë:

STOPCMD="pauzë deluge-console \*" STARTCMD="rifillimi i deluge-console \*"

konkluzioni

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