"Kas yra" Shell "scenarijus? " Linux "naudotojas reiškia, kad žaidžiate su komandų eilučių komandomis, o tai leidžia jums sutaupyti laiko, išmokti komandinę eilutę geriau ir ištrinti nuobodų failų valdymo užduotis.">
Sąvoka "shell scripting" dažnai minimas Linux forumuose, tačiau daugelis vartotojų nėra susipažinę su ja. "
" Linux "naudotojas reiškia, kad žaidžiate su komandų eilučių komandomis, o tai leidžia jums sutaupyti laiko, išmokti komandinę eilutę geriau ir ištrinti nuobodų failų valdymo užduotis. linija 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 naudojo "Windows" prieš naudodami "Linux", 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 "shell" scenarijų imitacija.
"Shell" scenarijai leidžia mums programuoti komandas grandinėse ir sistemai juos vykdyti kaip scenarijus, kaip ir paketinius failus. Jie taip pat leidžia atlikti daugiau naudingų funkcijų, pavyzdžiui, komandų pakeitimo. Galite pakviesti komandą, pvz., Datą, ir naudoti ją kaip failų pavadinimo schemos dalį. Galite automatizuoti atsargines kopijas ir kiekvienas nukopijuotas failas gali pridėti dabartinę datą prie jo pavadinimo pabaigos. Skriptai yra ne tik komandų išraiškos. Jie yra programos savarankiškai. Scripting leidžia naudoti programavimo funkcijas - pavyzdžiui, "for loop", if / then / else pareiškimus ir tt - tiesiai į operacinės sistemos sąsają. Ir jūs neturite išmokti kitos kalbos, nes naudojate tai, ką jau žinote: komandinė eilutė.
Manau, tai tikrai scenarijų 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š 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 yra visos nurodytos komandos, scenarijai gali būti naudojami keliose platformose, kurių nereikia truputį keisti.
Skriptai gali lengvai naudotis "administratoriaus" arba "administratoriaus" privilegijomis, todėl geriausia išbandykite 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 atveju perskaitykite įkeltus scenarijus ir būkite atsargūs su turimais duomenimis, jei viskas nepasiteisina.
Iš esmės 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š naudoju tai.
Skriptai vykdomi kaip programos, o tam, kad tai įvyktų, jie turi turėti tinkamus leidimus. Galite sukurti scenarijus, vykdomus, paleisdami šią komandą:
chmod + x ~ / somecrazyfolder / script1
Tai leis kiekvienam paleisti tą konkretų scenarijų. Jei norite apriboti jo naudojimą tik jūsų vartotojui, galite naudoti jį vietoje:
chmod u + x ~ / somecrazyfolder / script1
Norėdami paleisti šį scenarijų, turėsite cd į tinkamą katalogą ir paleisti scenarijų panašų į šį:
cd ~ / somecrazyfolder
./ script1
Kad būtų patogiau, galite įkelti scenarijus į namų katalogo aplanką "bin":
~ / bin
Daugelyje modernių distribucijų šis aplankas nebėra sukurtas pagal numatytuosius nustatymus, bet jūs galite sukurti tai Tai paprastai ten, kur vykdomieji failai yra saugomi, priklausantys jūsų naudotojui, o ne kitiems naudotojams. Įdėdami scenarijus čia, galite tiesiog paleisti jas, įvesdami savo vardą, kaip ir kitas komandas, o ne turėti kompaktinį diską ir naudoti "./" prefiksą.
Prieš įvardydami scenarijų, turėtumėte tai padaryti komandą patikrinti, ar turite įdiegtą programą, kuri naudoja šį vardą:
, kuris [command]
Daugelis žmonių pavadina savo ankstyvą scenarijų "testą" ir kai bando paleisti jį komandinėje eilutėje, nieko atsitinka 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
Kaip minėjau anksčiau, kiekvienas scenarijų failas iš esmės yra paprastas tekstas. Tai nereiškia, kad jūs galite rašyti tai, ko norėtumėte, viską viliškai, nepaisant to. Kai teksto failą bandoma paleisti, lukštai per juos analizuos už užuominas apie tai, ar jie yra scenarijai, ar ne, ir kaip tinkamai tvarkyti viską.
Hash-Bang Hack
Kai apvalkalas parsesuoja per tekstinį failą, pats tiesioginis būdas identifikuoti failą kaip scenarijų yra jūsų pirmoji eilutė:
# ! / bin / bash
Jei naudojate kitą apvalkalą, pakeiskite savo kelią čia. Komentarų eilutės prasideda nuo hashų (#), bet 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 bitais, paspaudus ALT + L.
Komentaras 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 apsuptas linijomis
Senesnėse dienose komandų pakeitimai buvo atlikti vienu pažymėtu ženklu (", dalijasi" ~ "klavišu). 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 lizdote - įdėkite komandas į kitas komandas - skliausteliuose veikia geriau.
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 yra nesuderinamas su kažkuo:
Galite matyti, kad nėra tos komandos išvesties, taigi mes visi esame pasiruošę naudoti šį vardą.
Sukurkime tuščią failą ~ / bin aplankas:
palieskite ~ / bin / datecp
Dabar pakeiskime leidimą, prieš pamiršdami:
Pradėsime kurti savo scenarijų. Atidarykite tą failą pasirinkto teksto redaktoriuje.
nano ~ / bin / datecp
Ir eikime į priekį ir įdėkite į pirmosios eilutės prielaidą ir pastabą apie tai, ką daro šis scenarijus.
Toliau, paskelbsime kintamąjį. Jei kada nors vartojote algebą, tikriausiai žinote, kas tai yra. Kintamasis leidžia mums saugoti informaciją ir daryti su juo susijusius veiksmus. Kintamieji gali "išplėsti", kai nurodomi kitur. Tai reiškia, kad vietoj jų vardo rodymo jie parodys jų saugomą turinį. Vėliau galite pasakyti tą patį kintamąjį, kad išsaugotumėte skirtingą informaciją, o po bet kokio instrukcijos bus naudojama nauja informacija. Tai tikrai išgalvotas vietos dėžutė.
Ką mes įdiegsime iš kintamojo? Na, saugykime datą ir laiką! Norėdami tai padaryti, mes paprašysime datos komandą.
Pažiūrėkite toliau pateiktą ekrano kopiją, kaip sukurti datos komandos išvestį:
Jūs galite pamatyti, kad pridėdami skirtingus kintamuosius, kurie prasideda% galite pakeisti komandos išvestį į tai, ko norite. Norėdami sužinoti daugiau informacijos, galite peržiūrėti komandą datos vadovo puslapyje.
Leiskite naudoti paskutinę datos komandų kartotinę datą "date +% m_% d_% y-% H.% M.% S" ir naudokite tai mūsų scenarijuje.
Jei mes dabar išsaugotume šį scenarijų, galėtume jį paleisti, ir tai suteiktų mums datos komandos, kaip tikėjomės, išvestis:
Bet atliksime kažką kitokio. Pateikime kintamojo pavadinimą, pvz., Date_formatted pagal šią komandą. Tinkama sintaksė yra tokia:
variable = $ (komandos-opcijos argumentai)
Ir mums, mes jį pastatyti taip:
date_formatted = $ (date +% m_% d_% y-% H.% M.% S)
Tai yra tai, ką mes vadiname komandų pakeitimu. Mes iš esmės sakome, kad kaskart, kai pasirodo kintamasis "date_formatted", paleisti komandą viduje skliaustų. 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:
Atkreipkite dėmesį, kad išvesties yra du tarpai. Ekrane rodomos erdvės tarp echo komandų kabučių ir prieš kintamąjį esančios vietos. Nenaudokite tarpų, jei nenorite, kad jie rodomi. Taip pat atkreipkite dėmesį, kad be šios pridėtos "echo" eilutės, scenarijus nesuteiks jokios išvesties.
Grįšime į mūsų scenarijų. Toliau pridėkite komandą kopijuoti.
cp -iv $ 1 $ 2. $ date_formatted
Tai bus naudojama komandą kopija su -i ir -v parinktimis. Pirmasis prašys patikrinti, prieš perrašydamas failą, o antrasis rodys, kas yra žemyn komandinėje eilutėje.
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 melodija.mp3
Pirmasis argumentas yra "Trogdor2.mp3", o antrasis argumentas yra "ringtone.mp3".
Žvelgiant atgal į mūsų scenarijų, matome, kad mes remiame du argumentus:
Tai reiškia, kad paleisdami scenarijų turėsime pateikti du argumentus, kad scenarijus būtų tinkamai paleistas. Pirmasis argumentas, $ 1, yra failas, kuris bus nukopijuotas ir pakeistas kaip pirmasis argumentas komandos "cp -iv".
Antrasis argumentas, $ 2, veiks kaip tos pačios komandos išvesties failas. Tačiau jūs taip pat galite pamatyti, kad tai kitokia. Mes pridėjome laikotarpį ir nurodėme kintamąjį "date_formatted" aukščiau. Įdomu, ką tai daro?
Štai kas atsitinka, kai scenarijus paleidžiamas:
Jūs galite pamatyti, kad išvesties failas yra išvardytas kaip bet koks, kurį aš įvedžiau už 2 dolerius, po kurio eina laikotarpis, tada datos komandų išvestis ! Ar manote, ar ne?
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 archyvuojant daiktus!
"Shell" scenarijus yra jūsų sistemos veikimo pagrindas. Taip pat nereikia išmokti naujos programavimo kalbos. Išbandykite scenarijus su kai kuriomis pagrindinėmis komandomis namuose ir pradėkite galvoti, ką galite tai panaudoti.
Ar jūs scenarijus? Ar turite patarimų naujokams? Pasidalykite savo mintimis į komentarus! Šioje serijoje yra dar daugiau!
Nest Thermostat: 5 patarimai, kuriuos galbūt nežinote apie
Iki šiol dauguma žmonių, turinčių interneto ryšį, girdėjo apie "Nest" skaitmeninio termostato sistemą. Ar žinojote, kad jame yra daug įdomių funkcijų, kurios susiejamos su beveik kiekvienu jūsų namuose esančiu įrenginiu? Ledas kaip pažangaus namo ateitis, mažas prietaisas, kuris padarė didelį "splash" su "Google", gali daryti viską nuo paprastų užduočių, pvz.
Kaip greitai pasidalyti savo buvimo vieta, naudodamiesi "Apple Watch" žinutėmis
Bandykite aprašyti, kur esate ir kaip jus susirasti drauge ar šeimos nariu? Galite greitai ir lengvai nusiųsti savo buvimo vietą kam nors, kai žiūrite pokalbį tarp jūsų ir šio asmens "Apple Watch" pranešimuose. Išsiųskite savo buvimo vietą per pranešimus, atidarę savo laikrodyje gautą pranešimą apie teksto pranešimą arba paspausdami skaitmeninį karūną, kad galėtumėte pasiekti pagrindinį ekraną ir paliesti piktogramą "Pranešimai".