Termins "shell shelling" bieži tiek minēts Linux forumos, taču daudzi lietotāji to nav pazīstami. Šī vienkāršā un spēcīgā programmēšanas metode var palīdzēt jums ietaupīt laiku, labāk mācīt komandrindu un izraidīt garlaicīgus failu pārvaldības uzdevumus.
Būt Linux lietotājam nozīmē, ka jūs spēlējat ar komandrindu. Tāpat kā tas vai ne, ir tikai dažas lietas, kuras tiek padarītas daudz ērtāk caur šo saskarni, nevis norādot un noklikšķinot. Jo vairāk jūs izmantojat un apgūstat komandrindu, jo vairāk jūs redzat tā potenciālu. Nu, komandrindā pati par sevi ir programma: čaula. Lielākā daļa Linux disku mūsdienās izmanto Bash, un tieši tā jūs patiešām ievadāt komandas.
Tagad daži no jums, kas pirms Windows izmantošanas izmantojuši Windows, var atcerēties partijas failus. Tie bija mazi teksta faili, kurus jūs varat aizpildīt ar izpildāmām komandām, un Windows tos darbosies pēc kārtas. Tas bija gudrs un veikls veids, kā iegūt dažas lietas, piemēram, palaist spēles jūsu vidusskolas datoru laboratorijā, kad nevarēja atvērt sistēmas mapes vai izveidot īsceļus. Sērijveida faili operētājsistēmā Windows, kaut arī noderīgi, ir lēti šifrēšanas skriptu imitācija.
Shell skripti ļauj programmēt komandas ķēdēs, un sistēma tos izpilda kā skriptu notikumu, tāpat kā partijas failus. Tās arī ļauj daudz noderīgākas funkcijas, piemēram, komandu aizstāšana. Varat atsaukties uz komandu, piemēram, datumu, un izmantot to kā daļu no failu nosaukšanas shēmas. Varat automātiski izveidot dublējumkopijas, un katram kopētam failam var pievienot pašreizējā datuma vārda beigās. Skripti ir ne tikai komandu izsaukumi. Viņi ir programmas pašas par sevi. Scripting ļauj operētājsistēmas saskarnes ietvaros izmantot programmēšanas funkcijas - piemēram, cilpas "for", if / then / else statements un tā tālāk. Un jums nav iemācīties citu valodu, jo jūs izmantojat to, ko jau zināt: komandrindā.
Es domāju, ka tas tiešām ir skriptu spēks. Jūs saņemat programmu ar komandām, kuras jūs jau zināt, vienlaikus mācot lielāko daļu programmēšanas valodu. Vai jādara kaut kas atkārtots un garlaicīgs? Script to! Nepieciešama saīsne patiešām viltīgai komandai? Script to! Vai vēlaties izveidot kaut ko ļoti vienkāršu komandrindas saskarni? Script to!
Pirms mēs sākam mūsu skriptu sēriju, apskatīsim pamatinformāciju. Mēs izmantosim bash apvalku, kuru visbiežāk Linux sadali izmanto natively. Bash ir pieejams arī Mac OS lietotājiem un Cygwin arī operētājsistēmā Windows. Tā kā tas ir tik universāls, jums ir jāspēj skripts neatkarīgi no jūsu platformas. Turklāt, tik ilgi, kamēr pastāv visas norādītās komandas, skripti var darboties vairākās platformās ar mazu nepieciešamo tweaking.
Skripti var viegli izmantot administratora vai administratora privilēģijas, tāpēc vislabāk ir pārbaudīt skriptus, pirms jūs tos ievietojat darbā. Izmantojiet arī veselo saprātu, piemēram, pārliecinieties, vai esat izveidojis dublējumkopijas no failiem, kurus jūs gatavojaties palaist skriptu. Ir arī ļoti svarīgi izmantot pareizās opcijas, piemēram, -i komandu rm, lai jūsu mijiedarbība būtu nepieciešama. Tas var novērst dažas neparastu kļūdas. Tādā veidā lasiet skriptus, kurus lejupielādējat, un esiet piesardzīgs ar datiem, kas jums ir, tikai gadījumā, ja viss notiek nepareizi.
Pēc būtības skripti ir vienkārši teksta faili. Jūs varat izmantot jebkuru teksta redaktoru, lai tos rakstītu: gedit, emacs, vim, nano ... Šis saraksts turpinās. Vienkārši noteikti saglabājiet to kā vienkāršu tekstu, nevis bagātinātu tekstu vai Word dokumentu. Tā kā man patīk lietošanas ērtums, ko sniedz nano, es to izmantošu.
Skripti tiek izpildīti tāpat kā programmas, un, lai tas notiktu, tiem ir jābūt pareizām atļaujām. Varat izpildīt izpildāmos skriptus, izpildot šādu komandu:
chmod + x ~ / somecrazyfolder / script1
Tas ļaus ikvienam palaist šo konkrēto skriptu. Ja vēlaties ierobežot tā lietošanu tikai savam lietotājam, to varat izmantot:
chmod u + x ~ / somecrazyfolder / script1
Lai palaistu šo skriptu, jums vajadzētu cd nokļūt pareizajā direktorijā un pēc tam palaist skriptu šādi:
cd ~ / somecrazyfolder
./script1
Lai padarītu lietas ērtāk, jūs varat ievietot skriptus savā domēna direktorijā esošā mapē "Bin":
~ / bin
Daudzos mūsdienu distros šī mape vairs netiek veidota pēc noklusējuma, bet jūs to varat izveidot. Parasti parasti tiek turēti izpildāmie faili, kas pieder jūsu lietotājam, nevis citiem lietotājiem. Novietojot skriptus šeit, jūs varat vienkārši palaist tos, ierakstot savu vārdu, tāpat kā citas komandas, nevis cd ap to un izmantot prefiksu ./
Tomēr, pirms jūs nosaucat skriptu, jums vajadzētu šādu komandu, lai pārbaudītu, vai jums ir instalēta programma, kas izmanto šo vārdu:
kas [komandu]
Daudzi cilvēki savu agrīno skriptu nosaukumu "tests" nosauc, un, mēģinot to palaist komandrindā, nekas nenotiek. Tas ir tāpēc, ka tas ir pretrunā ar testa komandu, kas nedara neko bez argumentiem. Vienmēr pārliecinieties, ka jūsu skriptu nosaukumi nav pretrunā ar komandu, pretējā gadījumā jūs varat atrast sev lietas, ko nevēlaties darīt!
Kā jau minēju iepriekš, katrs skripta fails ir būtībā vienkāršs teksts. Tas nenozīmē, ka jūs varat rakstīt to, ko jūs vēlaties visu viltīgi-nilly, though. Kad teksta fails tiek mēģināts izpildīt, čaulas analizēs tos, lai uzzinātu, vai tie ir skripti vai nav, un kā pareizi rīkoties. Tāpēc ir dažas vadlīnijas, kas jāzina.
Hash-Bang Hack
Ja apvalks tiek parsēts caur teksta failu, vistiešākais veids, kā identificēt failu kā skriptu, ir padarīt savu pirmo rindu:
#! / bin / bash
Ja jūs izmantojat citu apvalku, šeit mainiet savu ceļu. Komentāru rindiņas sākas ar hashes (#), bet tiek pievienots sprādziens (!) Un apvalka ceļš pēc tam, kad tas ir sava veida hack, kas apiet šo komentāru noteikumu un piespiest skriptu izpildīt ar apvalku, uz ko rinda norāda.
Jauna rindiņa = jauna komanda
Katru jaunu līniju jāuzskata par jaunu komandu vai lielākas sistēmas sastāvdaļu. Piemēram, ja / then / else paziņojumi pārņems vairākas rindas, bet katras sistēmas sastāvdaļa atrodas jaunā rindā. Neļaujiet komandai pārsniegt nākamo rindu, jo tas var saīsināt iepriekšējo komandu un radīt kļūdas nākamajā rindā. Ja jūsu teksta redaktors to dara, jums vajadzētu izslēgt teksta aplaušanu drošā pusē. Teksta iesaiņojumu var izslēgt ar nano bitu, kas pieskaras ALT + L.
Komentārs bieži ar #s
Ja sākat rindiņu ar #, rinda tiek ignorēta. Tas to pārvērš par komentāru rindiņu, kur jūs varat atgādināt sevi par to, kāda bija iepriekšējās komandas izeja vai kāda būs nākamā komanda. Vēlreiz izslēdziet teksta iesaiņošanu vai pārtraucat komentēt vairākas rindas, kuras visas sākas ar hash. Izmantojot daudz komentāru, ir laba prakse saglabāt, jo tā ļauj jums un citiem lietotājiem tweak jūsu skripti vieglāk. Vienīgais izņēmums ir iepriekš minētais Hash-Bang hack, tādēļ neizmantojiet #s with! S. ;-)
Komandas ieskauj ķermeņi
Vecākajās dienās komandu aizvietošana tika veikta ar vienas atzīmes atzīmēm (', koplieto taustiņu ~). Mēs par to vēl neieskatīsimies, taču, tā kā lielākā daļa cilvēku aiziet un izpēti pēc pamatu apgūšanas, visticamāk ir lietderīgi minēt, ka vietā vajadzētu izmantot iekavas. Tas ir galvenokārt tādēļ, ka tad, kad jūs ligzdo - ielieciet komandas citās komandās - iekavās darbojas labāk.
Sāksim ar vienkāršu skriptu, kas ļauj kopēt failus un pievienot datumus līdz faila nosaukuma beigām. Nosauksim to par "datecp". Vispirms pārbaudīsim, vai šis vārds ir pretrunā ar kaut ko:
Jūs varat redzēt, ka nav izejas no šīs komandas, tāpēc mēs visi esam iestatījuši izmantot šo vārdu.
Veidosim tukšu failu mapē ~ / bin:
pieskarties ~ / bin / datecp
Un tagad mainīsim atļauju, pirms mēs aizmirstam:
Tad sāksim veidot savu skriptu. Atveriet šo failu izvēlētajā teksta redaktorā. Kā jau teicu, man patīk nano vienkāršība.
nano ~ / bin / datecp
Un, dodamies uz priekšu un izveidosim priekšnoteikumu pirmo rindu un komentāru par to, ko šis skripts dara.
Tālāk paziņosim mainīgo. Ja esat kādreiz izdarījis algebru, jūs droši vien zināt, kas tas ir. Mainīgais ļauj mums saglabāt informāciju un ar to rīkoties. Mainīgie lielumi var "paplašināties", kad citur minēti. Tas nozīmē, ka tā vietā, lai parādītu viņu vārdu, viņi parādīs to saglabāto saturu. Varat vēlāk pateikt to pašu mainīgo, lai saglabātu dažādu informāciju, un pēc jebkuras instrukcijas, kas tiks izmantota, tiks izmantota jauna informācija. Tas ir ļoti iecienīts vietņu turētājs.
Ko mēs mainīsim? Nu, glabājam datumu un laiku! Lai to izdarītu, mēs pieprasīsim datuma komandu.
Apskatiet zemāk redzamo ekrānuzņēmumu, kā izveidot datuma komandas izvadi:
Jūs varat redzēt, ka, pievienojot dažādus mainīgos, kas sākas ar%, varat mainīt komandas izvadi uz to, ko vēlaties. Lai iegūtu plašāku informāciju, varat apskatīt datuma komandas manuālo lapu.
Izmantosim šo pēdējo atkārtojuma datuma komandu, "date +% m_% d_% y-% H.% M.% S", un izmantojiet to mūsu skriptā.
Ja mēs šobrīd saglabātu šo skriptu, mēs varētu to palaist, un tas dos mums datuma komandas izvadi, kā mēs sagaidām:
Bet, darīsim kaut ko citu. Apzīmēsim mainīgo nosaukumu, piemēram, date_formatted uz šo komandu. Pareizais sintakse ir šāds:
mainīgais = $ (komandas opciju argumenti)
Un mums tas būtu šāds:
date_formatted = $ (datums +% m_% d_% y-% H.% M.% S)
Tas ir tas, ko mēs saucam par komandu aizstāšanu. Mēs būtībā sakām bash, ka vienmēr, kad parādās mainīgais "date_formatted", komandu palaist iekšpusē iekavās. Tad neatkarīgi no izejas, ko dod komandas, vajadzētu norādīt mainīgā nosaukuma vietā "date_formatted".
Šeit ir piemēra skripts un tā izlaide:
Ņemiet vērā, ka produkcijā ir divas atstarpes. Abas ir atstarpes echo komandas pēdiņās un atstarpe priekš mainītāja. Neizmantojiet atstarpes, ja nevēlaties, lai tās parādās. Tāpat ņemiet vērā, ka bez šīs pievienotās "echo" rindas skripts nedotu absolūti nekādu rezultātu.
Atgriezīsimies pie mūsu skripta. Nākamajā vietā pievienosim komandas kopēšanas daļu.
cp -iv $ 1 $ 2. $ date_formatted
Tas aktivizēs komandu kopiju ar -i un -v opcijām. Pirmais lūgs jums pārbaudīt pirms faila pārrakstīšanas, un pēdējais parādīs to, kas ir uz leju par komandrindu.
Tālāk jūs varat redzēt, ka esmu pievienojis opciju "$ 1". Skriptu gadījumā dolāra zīme ($), kam seko skaitlis, apzīmē skripta numurēto argumentu, kad tas tika atsaukts. Piemēram, šādā komandā:
cp -iv Trogdor2.mp3 ringtone.mp3
Pirmais arguments ir "Trogdor2.mp3", un otrais arguments ir "ringtone.mp3".
Aplūkojot mūsu skriptu, mēs redzam, ka mēs atsaucam divus argumentus:
Tas nozīmē, ka, palaižot skriptu, mums būs jāsniedz divi argumenti, lai skripts darbotos pareizi. Pirmais arguments, $ 1, ir fails, kas tiks kopēts, un tas tiek aizstāts ar pirmā komandas "cp -iv" argumentu.
Otrais arguments, $ 2, darbosies kā vienas komandas izejas fails. Bet jūs varat arī redzēt, ka tas ir savādāk. Mēs esam pievienojuši periodu, un mēs esam minēti no augšminētā mainīgā elementa "date_formatted". Interesanti par to, ko tas dara?
Lūk, kas notiek, kad skripts tiek palaists:
Jūs varat redzēt, ka izvades fails tiek uzskaitīts kā tas, ko es ievadīju 2 $, pēc tam periodu, pēc tam datuma komandas izvadi! Vai ir jēga, vai ne?
Tagad, kad es palaistu datecp komandu, tas palaistu šo skriptu un ļauj man kopēt jebkuru failu uz jaunu atrašanās vietu un automātiski pievienot datuma un laika beigām faila nosaukumā. Noderīga arhivēšanai!
Shell skripti ir galvenais, lai jūsu OS darbotos jums. Vai nu tas nav nepieciešams, lai iemācītos jaunu programmēšanas valodu. Mēģiniet skriptus ar dažām pamata komandām mājās un sāciet domāt par to, ko jūs varat to izmantot.
Vai tu skripts? Vai kāds padoms iesācējiem? Dalieties savās domās komentāros! Šajā sērijā ir vairāk!