Iesācēja rokasgrāmata par pamatu „Shell Scripting”
Termins „čaulu skripts” bieži tiek pieminēts Linux forumos, taču daudzi lietotāji to nepārzina. Šīs vienkāršas un spēcīgas programmēšanas metodes izmantošana var palīdzēt ietaupīt laiku, labāk izprast komandrindu un izdzēst garlaicīgus failu pārvaldības uzdevumus.
Kas ir Shell Scripting?
Linux lietotājs nozīmē, ka jūs spēlējat ar komandrindu. Patīk vai nē, ir tikai dažas lietas, kas tiek darītas daudz vieglāk, izmantojot šo saskarni, nekā norādot un noklikšķinot. Jo vairāk jūs izmantojat un mācīsiet komandrindu, jo vairāk jūs redzat tās potenciālu. Nu, komandrinda pati par sevi ir programma: apvalks. Lielākā daļa Linux domēnu šodien izmanto Bash, un tas ir tas, ko jūs patiešām ievadāt.
Tagad daži no jums, kas lietoja Windows pirms Linux izmantošanas, var atcerēties partiju failus. Tie bija mazi teksta faili, kurus jūs varat aizpildīt ar komandām, lai izpildītu, un Windows palaist tos savukārt. Tas bija gudrs un veikls veids, kā iegūt dažas lietas, piemēram, spēlēt spēles savā vidusskolas datorlaboratorijā, kad nevarēja atvērt sistēmas mapes vai izveidot īsceļus. Sērijveida faili Windows, lai gan ir noderīgi, ir lēts imitācija čaulu skriptiem.
Shell skripti ļauj programmēt komandas ķēdēs un nodrošināt, lai sistēma tos izpildītu kā scenāriju, tāpat kā partijas failus. Tās arī nodrošina daudz vairāk noderīgu funkciju, piemēram, komandu aizstāšanu. Varat izmantot komandu, piemēram, datumu, un izmantot tā izeju kā daļu no faila nosaukuma shēmas. Varat automatizēt dublējumkopijas, un katram kopētam failam var būt pievienots pašreizējais datums tā nosaukuma beigās. Skripti arī nav tikai komandu ielūgumi. Tās ir pašas savas programmas. Skripts ļauj izmantot programmēšanas funkcijas, piemēram, “cilpām”, ja / tad / cits paziņojumus utt. Tieši jūsu operētājsistēmas saskarnē. Un jums nav jāapgūst cita valoda, jo jūs lietojat jau zināmo valodu - komandrindu.
Manuprāt, tas ir skriptu spēks. Jūs saņemsiet programmu ar jau zināmām komandām, mācoties skavas no lielākajām programmēšanas valodām. Vai jādara kaut kas atkārtots un garlaicīgs? Script to! Vai jums ir nepieciešams īsceļš, lai izveidotu tiešām spirālveida komandu? Script to! Vai vēlaties kaut ko izveidot ļoti viegli lietojamu komandrindas interfeisu? Script to!
Pirms tu sāc
Pirms sākam mūsu skriptu sēriju, aptveram pamatinformāciju. Mēs izmantosim bash apvalku, ko lielākā daļa Linux izplatīšanas izmanto dabiski. Bash ir pieejams arī Mac OS lietotājiem un Cygwin arī Windows. Tā kā tas ir tik universāls, jums vajadzētu būt iespējai skriptu neatkarīgi no jūsu platformas. Turklāt, kamēr pastāv visas norādītās komandas, skripti var darboties vairākās platformās ar mazu vai nepievilcīgu rediģēšanu.
Skripti var viegli izmantot “administratora” vai “superlietotāja” privilēģijas, tāpēc vislabāk ir izmēģināt skriptus, pirms tos nododat darbam. Izmantojiet arī veselo saprātu, piemēram, pārliecinoties, ka jums ir dublējumkopijas failiem, kurus gatavojaties skriptu darbināt. Ir arī ļoti svarīgi izmantot pareizās opcijas, piemēram, -i, lai rm komandu varētu izmantot, lai jūsu mijiedarbība būtu nepieciešama. Tas var novērst dažas nepatīkamas kļūdas. Izlasiet skriptus, kurus lejupielādējat, un uzmanieties ar datiem, kas jums ir, tikai gadījumā, ja viss notiek nepareizi.
Skripti ir galvenie teksta faili. Varat izmantot jebkuru teksta redaktoru, lai tos rakstītu: gedit, emacs, vim, nano ... Šis saraksts turpinās. Vienkārši saglabājiet to kā vienkāršu tekstu, nevis kā bagātu tekstu vai Word dokumentu. Tā kā es mīlu lietošanas ērtumu, ko nodrošina nano, es to izmantos.
Skriptu atļaujas un vārdi
Skripti tiek izpildīti līdzīgi programmām, un, lai tas notiktu, viņiem ir jābūt atbilstošām atļaujām. Jūs varat veikt skriptus izpildāmo, izpildot šādu komandu:
chmod + x ~ / somecrazyfolder / skripts1
Tas ļaus ikvienam palaist šo konkrēto skriptu. Ja vēlaties to izmantot tikai savam lietotājam, varat to izmantot:
chmod u + x ~ / somecrazyfolder / skripts1
Lai palaistu šo skriptu, jums vajadzēs cd pareizajā direktorijā un pēc tam palaist šo skriptu:
cd ~ / somecrazyfolder
./ skripts1
Lai padarītu lietas ērtākas, skriptus varat ievietot mapē “bin” jūsu mājas direktorijā:
~ / bin
Daudzās modernās domkrāsās šī mape vairs nav izveidota pēc noklusējuma, bet jūs varat to izveidot. Parasti tas ir, ja izpildāmie faili tiek glabāti jūsu lietotājam, nevis citiem lietotājiem. Ievietojot skriptus šeit, jūs varat tos palaist, ierakstot viņu vārdu, tāpat kā citas komandas, tā vietā, lai cd apietu un izmantotu prefiksu “./”.
Pirms skripta nosaukuma jums jāpārbauda šāda komanda, lai pārbaudītu, vai ir instalēta programma, kas izmanto šo nosaukumu:
kura [komanda]
Daudzi cilvēki nosauc savu agrāko skriptu „pārbaudi”, un, kad viņi mēģina palaist to komandrindā, nekas nenotiek. Tas ir tāpēc, ka tas ir pretrunā ar testa komandu, kas neko nedara bez argumentiem. Vienmēr pārliecinieties, ka jūsu skriptu nosaukumi nav pretrunā ar komandām, pretējā gadījumā jūs varat atrast sev darījumus, ko nevēlaties darīt!
Skriptu vadlīnijas
Kā jau iepriekš minēju, katrs skripta fails būtībā ir vienkāršs teksts. Tas nenozīmē, ka jūs tomēr varat rakstīt to, ko vēlaties, lai viss būtu nevainojams. Kad teksta fails tiek mēģināts izpildīt, čaumalas caur tām izanalizēs, vai tās ir skripti vai nav, un kā rīkoties pareizi. Tāpēc ir dažas vadlīnijas, kas jums jāzina.
- Katram skriptam jābūt ar “#! / Bin / bash”
- Katra jaunā līnija ir jauna komanda
- Komentāru rindas sākas ar #
- Komandas ieskauj ()
Hash-Bang Hack
Kad apvalks analizē teksta failu, tiešākais veids, kā identificēt failu kā skriptu, ir padarīt pirmo rindu:
#! / bin / bash
Ja izmantojat citu apvalku, aizstājiet savu ceļu šeit. Komentāru rindas sākas ar hashes (#), bet pievienojot sprādzienu (!) Un čaumalu ceļu pēc tam, kad tas ir sava veida kapāt, kas apiet šo komentāru noteikumu un piespiež skriptu izpildīt ar apvalku, uz kuru šī līnija norāda.
Jauna rinda = Jauna komanda
Katra jaunā līnija ir jāuzskata par jaunu komandu vai lielākas sistēmas sastāvdaļu. Piemēram, ja / tad / cits paziņojumi pārņems vairākas rindas, bet katra šīs sistēmas sastāvdaļa ir jaunā rindā. Neļaujiet komandai pāriet nākamajā rindā, jo tas var saīsināt iepriekšējo komandu un dot jums kļūdu nākamajā rindā. Ja jūsu teksta redaktors to dara, jums jāizslēdz teksta ietīšana, lai tā būtu drošā pusē. Jūs varat izslēgt teksta iesaiņošanu nano bitā, kas pieskaras ALT + L.
Komentārs Bieži vien ar #
Ja sākat rindu ar #, līnija tiek ignorēta. Tas pārvērš to par komentāru rindu, kur jūs varat atgādināt sev par to, kas bija iepriekšējās komandas iznākums vai kāda būs nākamā komanda. Atkal, izslēdziet teksta iesaiņojumu vai pārtrauciet komentēt vairākās rindās, kas sākas ar hash. Daudzu komentāru izmantošana ir laba prakse, jo tas ļauj jums un citiem cilvēkiem vieglāk izmainīt jūsu skriptus. Vienīgais izņēmums ir iepriekš minētais Hash-Bang hack, tāpēc neievērojiet # s ar! S. ;-)
Komandas ieskauj aizzīmogojumi
Vecākajās dienās komandu aizstāšana tika veikta ar vienu atzīmes atzīmi (', dala ~ taustiņu). Mēs to vēl nepievērsīsim, bet, tā kā lielākā daļa cilvēku pamet un izzina pēc pamatiem apgūšanas, tas droši vien ir laba ideja pieminēt, ka jums vajadzētu izmantot iekavās. Tas ir galvenokārt tāpēc, ka, ja jūs ligzdojat komandas citās komandās - iekavās labāk darbojas.
Jūsu pirmais skripts
Sāksim ar vienkāršu skriptu, kas ļauj kopēt failus un pievienot datnes datnes beigās. Sauksim to par “datecp”. Pirmkārt, pārbaudīsim, vai šis vārds ir pretrunā ar kaut ko:
Jūs varat redzēt, ka nav nevienas komandas izvades, tāpēc mēs visi esam iestatījuši šo nosaukumu.
Izveidosim tukšu failu mapē ~ / bin:
pieskarieties ~ / bin / datecp
Un tagad, pirms aizmirsīsim, mainīsim atļauju.
Tad sāksim veidot mūsu skriptu. Atveriet šo failu izvēles teksta redaktorā. Tāpat kā es teicu, man patīk nano vienkāršība.
nano ~ / bin / datecp
Un, ejam uz priekšu un ielieciet pirmās rindas priekšnoteikumu un komentāru par to, ko šis skripts dara.
Pēc tam paziņosim mainīgo. Ja jūs kādreiz esat lietojis algebru, jūs droši vien zināt, kas tas ir. Mainīgais ļauj mums saglabāt informāciju un ar to darīt lietas. Mainīgie lielumi var “paplašināties”, ja tie ir norādīti citur. Tas ir, tā vietā, lai parādītu savu vārdu, viņi parādīs savu glabāto saturu. Vēlāk to pašu mainīgo var pateikt, lai saglabātu dažādu informāciju, kā arī norādījumus, kas pēc tam tiks izmantoti, izmantojot jauno informāciju. Tas ir patiešām iedomāts vietnieks.
Ko mēs ieviesīsim mainīgā lielumā? Nu, pieņemsim datumu un laiku! Lai to izdarītu, mēs aicināsim datuma komandu.
Skatiet tālāk redzamo ekrānuzņēmumu, lai izveidotu datuma komandas izlaidi:
Jūs varat redzēt, ka, pievienojot dažādus mainīgos lielumus, kas sākas ar%, varat mainīt komandas izeju uz to, ko vēlaties. Lai iegūtu plašāku informāciju, varat skatīt datuma komandas manuālo lapu.
Izmantosim pēdējo datuma komandas atkārtojumu, “datums +% m_% d_% y-% H.% M.% S” un izmantojiet to mūsu skriptā.
Ja mēs tagad saglabātu šo skriptu, mēs to varētu palaist un tas dotu mums datuma komandas izlaidi, kādu mēs sagaidām:
Bet, darīsim kaut ko citu. Sniegsim mainīgo nosaukumu, piemēram, datumu_formatēts šai komandai. Pareiza šīs sintakse ir šāda:
mainīgais = $ (komandu opciju argumenti)
Un mums mēs to izveidotu šādi:
date_formatted = $ (datums +% m_% d_% y-% H.% M.% S)
To mēs saucam par komandu aizstāšanu. Mēs būtībā sakām bash, ka ikreiz, kad parādās mainīgais “date_formatted”, izpildiet komandu iekavās. Pēc tam, lai mainītu mainīgā nosaukuma vietā “date_formatted”, ir jānorāda jebkura izeja, kas dod komandas..
Lūk, piemēram, skripts un tā izeja:
Ņemiet vērā, ka izvadā ir divas atstarpes. Tiek parādīta echo komandas pēdiņās esošā telpa un atstarotāja priekšā esošā telpa. Neizmantojiet atstarpes, ja nevēlaties, lai tās tiktu rādītas. Ņemiet vērā arī to, ka bez šīs pievienotās „echo” līnijas skripts nedotu absolūtu rezultātu.
Atgriezīsimies pie mūsu skripta. Tālāk pievienosim komandas kopēšanas daļā.
cp -iv $ 1 $ 2. $ date_formatted
Tiks izmantota kopēšanas komanda ar opcijām -i un -v. Pirmais pieprasīs jums verifikāciju pirms faila pārrakstīšanas, un tas parādīs, kas ir uz komandrindas.
Tālāk jūs varat redzēt, ka esmu pievienojis opciju „$ 1”. Skriptu laikā dolāra zīme ($), kam seko numurs, apzīmēs skripta numurēto argumentu, kad tas tika izmantots. Piemēram, šādā komandā:
cp -iv Trogdor2.mp3 zvana signāls.mp3
Pirmais arguments ir “Trogdor2.mp3” un otrais arguments ir “zvana signāls.mp3”.
Atskatoties uz mūsu skriptu, mēs redzam, ka mēs atsaucamies uz diviem argumentiem:
Tas nozīmē, ka tad, kad palaižam skriptu, mums būs jāiesniedz divi argumenti, lai skripts darbotos pareizi. Pirmais arguments, $ 1, ir fails, kas tiks kopēts un ir aizstāts ar komandu “cp -iv” pirmo argumentu.
Otrais arguments, $ 2, darbosies kā tās pašas komandas izejas fails. Bet jūs varat arī redzēt, ka tas atšķiras. Mēs esam pievienojuši periodu, un mēs esam atsaukušies uz “date_formatted” mainīgo no augšas. Ziņkārīgs par to, ko tas dara?
Lūk, kas notiek, kad skripts tiek palaists:
Jūs varat redzēt, ka izejas fails ir uzskaitīts kā viss, ko ievadīju par 2 ASV dolāriem, kam sekoja periods, tad datuma komandas izeja! Ir jēga, labi?
Tagad, kad palaižu datecp komandu, tas darbosies ar šo skriptu un ļaus man kopēt jebkuru failu jaunā atrašanās vietā un automātiski pievienot datumu un laiku faila nosaukuma beigām. Noderīga arhivēšanai!
Shell skripts ir galvenais, lai jūsu OS darbotos jums. Jums nav jāapgūst jauna programmēšanas valoda, lai tas nenotiktu. Mēģiniet skriptu ar dažām pamata komandām mājās un sākt domāt par to, ko jūs varat izmantot.
Vai jūs skriptu? Vai jums ir padomi par iesācējiem? Dalieties savās domās komentāros! Šajā sērijā ir vairāk!