Kas yra "Shell" scenarijus?
Būdamas "Linux" vartotojas reiškia, kad žaidžiate su komandų eilute. Patinka tai ar ne, yra tik keletas dalykų, kurie atliekami daug lengviau per šią sąsają, negu nurodant ir spustelėję. Kuo daugiau naudosite ir sužinok komandų eilutę, tuo daugiau matysite jo potencialą. Na, pats komandų eilutė yra programa: "shell". Dauguma "Linux distros" šiandien naudoja "Bash", ir tai, ką jūs tikrai įvedate komandas.
Dabar kai kurie iš jūsų, kurie prieš pradėdami naudoti "Linux" naudojo "Windows", gali prisiminti paketinius failus. Tai buvo mažai tekstinių failų, kuriuos galėtumėte užpildyti vykdydami komandas, o "Windows" juos sukūrė. Tai buvo protingas ir tvarkingas būdas atlikti tam tikrus veiksmus, pvz., Paleisti žaidimus jūsų aukštosios mokyklos kompiuterių laboratorijoje, kai negalėjote atidaryti sistemos aplankų ar kurti nuorodas. Bandomieji failai "Windows", nors ir naudingi, yra pigūs scenarijų apvalkalo imitacija.
Manau, tai tikrai scenarijaus galia. Jūs gaunate programą su komandomis, kurias jau žinote, tuo pačiu metu mokydamiesi daugelio pagrindinių programavimo kalbų grupes. Reikia daryti kažką pasikartojančio ir varginančio? Script it! Reikia spartieji klavišai tikrai sukurtinei komandai? Script it! Norite kurti tikrai lengva naudoti komandų eilutės sąsają kažką? Script it!
Prieš tau pradedant
Prieš pradėdami scenarijų seriją, pateiksime keletą pagrindinių duomenų. Mes naudosime "bash" apvalkalo, kuris daugeliu Linux distribucijų naudojamas natively. "Bash" galima įsigyti "Mac OS" vartotojams ir "Cygwin" sistemoje "Windows". Kadangi tai yra toks universalus, turėtumėte turėti galimybę scenarijų nepriklausomai nuo jūsų platformos. Be to, kol visose nurodytose komandose egzistuoja, scenarijai gali veikti keliose platformose, kurių nereikia truputį keisti.
Scripting gali lengvai pasinaudoti "administratoriaus" arba "superuserio" privilegijomis, todėl geriausia išbandyti scenarijus prieš pradėdami juos dirbti. Taip pat naudokite sveiką prasmę, pvz., Įsitikinkite, kad turite atsarginių kopijų failus, kuriuos ketinate paleisti scenarijų. Taip pat labai svarbu naudoti tinkamas parinktis, pavyzdžiui, -i komandai rm, kad jūsų sąveika būtų reikalinga. Tai gali užkirsti kelią keistam klaidinančiam klaidinimui. Tokiu būdu perskaitykite scenarijus, kuriuos atsisiųsite, ir būkite atsargūs su turimais duomenimis, tik tuo atveju, jei viskas blogai.
Pagal jų esmę scenarijai yra tik paprastų tekstinių failų. Galite naudoti bet kokį teksto redaktorių, norėdami juos parašyti: gedit, emacs, vim, nano … Šis sąrašas tęsiasi. Būtinai išsaugokite jį kaip paprastą tekstą, o ne kaip turtingą tekstą arba "Word" dokumentą. Kadangi man patinka naudojimo patogumas, kurį teikia "nano", aš jį naudosiu.
Scenarijaus leidimai ir vardai
Skriptai vykdomi kaip programos, o tam, kad tai įvyktų, jie turi turėti tinkamus leidimus. Galite padaryti scenarijus vykdomąjį, paleisdami šią komandą:
chmod +x ~/somecrazyfolder/script1
Tai leis kiekvienam paleisti šį konkretų scenarijų. Jei norite apriboti jo naudojimą tik jūsų naudotojui, galite naudoti jį vietoje:
chmod u+x ~/somecrazyfolder/script1
Norėdami paleisti šį scenarijų, jums reikės cd į tinkamą katalogą ir paleisti scenarijų panašūs į šį:
cd ~/somecrazyfolder
./script1
Kad dalykai būtų patogesni, scenarijus galite įdėti į aplanką "bin", esantį jūsų namų kataloge:
~/bin
Daugelyje modernių distrosų šis aplankas nebėra sukurtas pagal numatytuosius nustatymus, bet galite jį sukurti. Tai paprastai ten, kur vykdomieji failai yra saugomi, priklausantys jūsų naudotojui, o ne kitiems naudotojams. Įdėdami scenarijus čia, galite tiesiog paleisti juos, įveskite savo vardą, kaip ir kitas komandas, o ne cd aplink ir naudoti "./" prefiksą.
Prieš įvardydami scenarijų, jūs turėtumėte šią komandą patikrinti, ar turite įdiegtą programą, kuri naudoja šį vardą:
which [command]
Daugelis žmonių pavadina savo ankstyvą scenarijų "testą", o kai bando paleisti jį komandinėje eilutėje, nieko neįvyksta. Taip yra todėl, kad jis prieštarauja bandymo komandai, kuri nieko nedaro be argumentų. Visada įsitikinkite, kad jūsų scenarijų pavadinimai neprieštarauja komandoms, kitaip jums gali atrodyti, kad darai tai, ko neketinate daryti!
Scripting Guidelines
- Kiekvienas scenarijus turi būti su "#! / Bin / bash"
- Kiekviena nauja eilutė yra nauja komanda
- Komentarų eilutės prasideda nuo #
- Komandas supa ()
Hash-Bang Hack
Kai apvalkalas analizuojamas per teksto failą, pats tiesioginis būdas identifikuoti failą kaip scenarijų yra atliekant pirmąją eilutę:
#!/bin/bash
Jei naudojate kitą lukštą, pakeiskite savo kelią čia. Komentarų eilutės prasideda iš hashų (#), tačiau pridedant spragą (!) Ir apvalkalo kelią po to, kai tai yra hackas, kuris apeins šią komentarų taisyklę ir privers skriptą veikti su apvalkalu, į kurį nurodo ši eilutė.
Naujoji linija = naujoji komanda
Kiekviena nauja eilutė turėtų būti laikoma nauja komanda arba didesnės sistemos komponentas. Pavyzdžiui, jei / tada / else teiginiai perims kelias eilutes, bet kiekviena šios sistemos sudedamoji dalis yra nauja eilutė. Neleiskite komandai kraujuoti į kitą eilutę, nes tai gali sutrumpinti ankstesnę komandą ir pateikti klaidą kitoje eilutėje. Jei jūsų teksto redaktorius tai daro, turėtumėte išjungti teksto apvyniojimą saugioje pusėje. Galite išjungti teksto įvyniojimą nano bitų paspaudimu ALT + L.
Komentuoti dažnai su #s
Jei pradėsite eilutę su #, eilutė bus ignoruojama. Tai paverčia į komentarų eilutę, kurioje galite priminti save apie tai, ką atliko ankstesnės komandos išvestis arba kokia bus kita komanda. Vėlgi, išjunkite teksto įklijimą arba pertraukite komentavimą į kelias eilutes, kurios visos prasideda maišais. Naudojant daugybę pastabų yra gera praktika išlaikyti, nes ji leidžia jums ir kitiems žmonėms lengviau pritaikyti scenarijus. Vienintelė išimtis yra aukščiau paminėta "Hash-Bang", todėl nesilaikykite #s with! S.;-)
Komandos yra apsuptos gairėmis
Senesnėse dienose komandų pakeitimai buvo atlikti su vienos žymos ženklais (`, dalijasi ~ raktą). Mes nesirūpinsime šiuo klausimu, tačiau, kaip dauguma žmonių išeina ir išmėgina iš pradžių mokydamiesi, tikriausiai gera paminėti, kad vietoj to turite naudoti skliaustus. Tai daugiausia todėl, kad kai jūs lizdai - įdėti komandas viduje kitų komandų - skliaustuose geriau dirbti.
Jūsų pirmasis scenarijus
Pradėkime nuo paprasto scenarijaus, kuris leidžia kopijuoti failus ir pridėti datas prie failo pabaigos. Paskambėkime kaip "datecp". Pirmiausia patikrinkime, ar šis vardas nesuderinamas su kažkuo:
Sukurkime tuščią failą aplanke ~ / bin:
touch ~/bin/datecp
nano ~/bin/datecp
Ir eikime į priekį ir įdėkite pirmosios eilutės prielaidą ir pastabą apie tai, ką šis scenarijus daro.
Ką mes įdiegsime iš kintamojo? Na, saugykime datą ir laiką! Norėdami tai padaryti, mes paskambinsime datos komandą.
Pažiūrėkite toliau pateiktą ekrano kopiją, kaip sukurti datos komandų išvestį:
Leiskite naudoti tą paskutinę datos komandų kartotinę datą "date +% m_% d_% y-% H.% M.% S" ir naudoti ją mūsų scenarijuje.
variable=$(command –options arguments)
Ir mums, mes jį pastatyti taip:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Tai yra tai, ką vadiname pakaitomis komandai. Mes iš esmės sakome, kad kaskart, kai pasirodo kintamasis "date_formatted", paleisti komandą viduje skliaustuose. Tada, nepriklausomai nuo išvesties, kurią pateikia komandos, turėtų būti rodomas vietoj kintamojo pavadinimo, "date_formatted".
Štai pavyzdžio scenarijus ir jo išvestis:
Grįžkime prie scenarijaus. Leiskite dar kartą pridėti kopijavimo dalį komandą.
cp –iv $1 $2.$date_formatted
Tada galite pamatyti, kad pridėjau parinktį "$ 1".Kai scenarijus, dolerio ženklas ($), po kurio nurodomas numeris, žymi tą numerį pažymėtą scenarijaus argumentą, kai jis buvo pakviestas. Pavyzdžiui, šioje komandoje:
cp –iv Trogdor2.mp3 ringtone.mp3
Pirmasis argumentas yra: "Trogdor2.mp3", o antrasis argumentas - "Trumpas.mp3".
Žvelgiant atgal į mūsų scenarijų, mes galime pamatyti, kad mes, remdamiesi dviem argumentais:
Antrasis argumentas, $ 2, veiks kaip tos pačios komandos išvesties failas. Bet taip pat galite pamatyti, kad tai kitokia. Mes pridėjome laikotarpį, o mes nurodėme "aukštyn kintamojo" pakeistą datos formą. Įdomu, ką tai daro?
Štai, kas atsitinka, kai scenarijus paleidžiamas:
Dabar, kai paleisiu komandą datecp, jis paleis šį scenarijų ir leis man kopijuoti bet kokį failą į naują vietą ir automatiškai pridėti datą ir laiką iki failo pavadinimo pabaigos. Naudinga archyvavimui!
"Shell" scenarijus yra pagrindinis dalykas, kai jūsų OS veikia jums. Taip pat neturite išmokti naujos programavimo kalbos. Išbandykite scenarijus su kai kuriomis pagrindinėmis komandomis namuose ir pradėkite galvoti, ką galite tai panaudoti.
Ar tu scenarijus? Ar turite patarimų naujokams? Pasidalykite savo mintimis į komentarus! Yra dar daugiau šios serijos!