Kas ir Shell skripti?
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.
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 tu sāc
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.
Script atļaujas un vārdi
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:
which [command]
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!
Scripting vadlīnijas
- Katram skriptam jābūt ar "#! / Bin / bash"
- Katra jauna rindiņa ir jauna komanda
- Komentāru līnijas sākas ar #
- Komandas ieskauj ()
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 zīmes atzīmēm (`, dalās taustiņā ~). 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.
Jūsu pirmais skripts
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:
Veidosim tukšu failu mapē ~ / bin:
touch ~/bin/datecp
Un tagad mainīsim atļauju, pirms mēs aizmirstam:
nano ~/bin/datecp
Un, dodamies uz priekšu un izveidosim priekšnoteikumu pirmo rindu un komentāru par to, ko šis skripts dara.
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:
Izmantosim šo pēdējo atkārtojuma datuma komandu, "date +% m_% d_% y-% H.% M.% S", un izmantojiet to mūsu skriptā.
variable=$(command –options arguments)
Un mums tas būtu šāds:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Š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
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 "Tornis.mp3".
Apskatot mūsu skriptu, mēs varam redzēt, ka mēs, atsaucoties uz diviem argumentiem:
Otrais arguments, $ 2, darbosies kā vienas komandas izejas fails. Bet jūs arī varat redzēt, ka tas ir citāds. Mēs pievienojām periodu, un mēs atsaucām maiņas parametru "dotaformatēta" no augšas. Interesanti par to, ko tas dara?
To, kas notiek, kad skripts tiek palaists:
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. Nepieciešams mācīties jaunu programmēšanas valodu, lai tā notiktu. 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! Tur ir vairāk šīs sērijas!