Úvodná » ako » Príručka pre začiatočníkov pre Shell skriptovanie Základy

    Príručka pre začiatočníkov pre Shell skriptovanie Základy

    Pojem "shell skriptovanie" sa často spomína na fórach Linux, ale mnohí používatelia nie sú s ňou oboznámení. Učíte sa, že táto jednoduchá a výkonná programovacia metóda vám pomôže ušetriť čas, lepšie sa naučiť príkazový riadok a vyhnúť únavným úlohám pri správe súborov.

    Čo je Shell skriptovanie?

    Byť užívateľom systému Linux znamená, že si hráte s príkazovým riadkom. Páči sa vám to alebo nie, existujú len niektoré veci, ktoré sa v tomto rozhraní vykonávajú oveľa ľahšie než ukazovaním a kliknutím. Čím viac budete používať a učiť príkazový riadok, tým viac vidíte jeho potenciál. Príkazový riadok sám je program: shell. Väčšina distribučných systémov Linuxu dnes používa Bash, a práve to naozaj vstupujete do príkazov.

    Niektorí z vás, ktorí používali systém Windows pred používaním systému Linux, si môžu pamätať dávkové súbory. Jednalo sa o malé textové súbory, ktoré by ste mohli vyplniť príkazmi na spustenie a systém Windows ich spustil. Bolo to šikovný a elegantný spôsob, ako urobiť nejaké veci, napríklad spustiť hry vo vašej vysokej škole počítačovej laboratóriu, keď ste nemohli otvoriť systémové zložky alebo vytvárať skratky. Dávkové súbory v systéme Windows, aj keď sú užitočné, sú lacnou imitáciou shell skriptov.

    Shell skripty nám umožňujú naprogramovať príkazy v reťaziach a nechať ich spustiť ako skriptovanú udalosť, rovnako ako dávkové súbory. Umožňujú tiež oveľa viac užitočných funkcií, ako napríklad výmena vecí. Môžete vyvolať príkaz, ako dátum, a použiť jeho výstup ako súčasť schémy pomenovania súborov. Môžete automatizovať zálohy a každý skopírovaný súbor môže mať aktuálny dátum pripojený na koniec jeho názvu. Skripty nie sú len vyvolaním príkazov. Sú to programy samy osebe. Skriptovanie umožňuje používať funkcie programovania - napríklad smyčky "pre", príkazy if / then / else a tak ďalej - priamo v rozhraní vášho operačného systému. A nemusíte sa učiť iný jazyk, pretože používate to, čo už viete: príkazový riadok.

    Skutočne je to práve skriptovanie. Dostanete sa programovať pomocou príkazov, ktoré už viete, zatiaľ čo sa učia staples väčšiny hlavných programovacích jazykov. Potrebujete robiť niečo opakujúce a nudné? Script to! Potrebujete skratku pre skutočne komplikovaný príkaz? Script to! Chcete niečo naozaj vytvoriť naozaj jednoduché rozhranie príkazového riadka? Script to!

    Predtým ako začneš

    Skôr než začneme naše skriptovacie série, poďme sa zaoberať niektorými základnými informáciami. Budeme používať bash shell, ktorý väčšinu linuxových distribúcií používa natívne. Bash je k dispozícii aj pre používateľov systémov Mac OS a Cygwin v systéme Windows. Keďže je to tak univerzálne, mali by ste byť schopní skriptovať bez ohľadu na vašu platformu. Okrem toho, ak existujú všetky spomenuté príkazy, skripty môžu pracovať na viacerých platformách s malým až žiadnym ladením..

    Skriptovanie môže jednoducho využívať privilégiá "administrátora" alebo "superužívateľ", preto je najlepšie vyskúšať skripty skôr, než ich začnete pracovať. Tiež používajte zdravý rozum, napríklad aby ste sa uistili, že máte zálohy súborov, na ktorých sa chystáte spustiť skript. Je tiež naozaj dôležité používať správne možnosti, napríklad -i pre príkaz rm, aby ste potrebovali interakciu. To môže zabrániť niektorým škaredým chybám. Ako taký, prečítajte si skripty, ktoré si stiahnete, a buďte opatrní s údajmi, ktoré máte, len v prípade, že sa veci pokazia.

    V ich jadre skripty sú len textové súbory. Na ich zápis môžete použiť ľubovoľný textový editor: gedit, emacs, vim, nano ... Tento zoznam pokračuje. Stačí ho uložiť ako obyčajný text, nie ako bohatý text alebo dokument programu Word. Keďže mám rád jednoduchosť používania, ktorú nano ponúka, budem to používať.

    Oprávnenia a mená skriptov

    Skripty sú vykonávané ako programy a na to, aby sa to stalo, musia mať správne povolenia. Skriptov môžete spustiť tak, že na nich spustíte nasledujúci príkaz:

    chmod + x ~ / somecrazyfolder / script1

    To umožní komukoľvek spustiť tento konkrétny skript. Ak chcete obmedziť jeho použitie len na svojho používateľa, môžete ho použiť namiesto toho:

    chmod u + x ~ / somecrazyfolder / script1

    Ak chcete spustiť tento skript, musíte vložiť do riadneho adresára a potom spustiť skript takto:

    cd ~ / somecrazyfolder

    ./ script1

    Aby ste to uľahčili, môžete umiestniť skripty do priečinka "bin" vo vašom domovskom adresári:

    ~ / Bin

    V mnohých moderných distribuciách už nie je táto zložka vytvorená predvolene, ale môžete ju vytvoriť. Toto je zvyčajne miesto, kde sú uložené spustiteľné súbory, ktoré patria vášmu používateľovi a nie iným používateľom. Umiestnením skriptov tu môžete jednoducho spustiť zadaním ich mena, rovnako ako ostatné príkazy, namiesto toho, aby ste museli cd okolo a používať predponu './'.

    Skôr ako napíšete skript, mali by ste však skontrolovať, či máte nainštalovaný program, ktorý používa tento názov:

    ktorý [príkaz]

    Mnoho ľudí pomenuje skoré skripty "test" a keď sa ich pokúšajú spustiť v príkazovom riadku, nič sa nestane. Je to preto, že je v rozpore s príkazom na test, ktorý nerobí nič bez argumentov. Vždy sa uistite, že vaše názvy skriptov nie sú v rozpore s príkazmi, inak sa môže stať, že robíte veci, ktoré nemáte v úmysle urobiť!

    Pokyny pre skriptovanie

    Ako som už spomenul, každý súbor skriptu je v podstate prostý text. To neznamená, že by ste mohli napísať to, čo chcete všetko vôľa-nilly, hoci. Keď sa pokúsi o vykonanie textového súboru, shelly budú analyzovať pomocou nich informácie o tom, či sú skripty alebo nie, a ako všetko správne spracovať. Z tohto dôvodu existuje niekoľko pokynov, ktoré potrebujete vedieť.

    1. Každý skript by mal byť "#! / Bin / bash"
    2. Každý nový riadok je nový príkaz
    3. Riadky komentárov začínajú #
    4. Príkazy sú obklopené ()

    Hash-Bang Hack

    Keď sa shell analyzuje prostredníctvom textového súboru, najpriamejší spôsob identifikácie súboru ako skriptu je vytvorením prvého riadka:

    #! / Bin / bash

    Ak používate iný shell, nahraďte ho tu. Riadky s komentármi začínajú s hashami (#), ale pridajú sa tón (!) A shell cesta potom, čo je nejaký hack, ktorý obišne toto komentár pravidlo a núti skript vykonať s shell, že tento riadok ukazuje na.

    Nový riadok = nové príkazy

    Každá nová riadka by sa mala považovať za nový príkaz alebo za komponent väčšieho systému. Príkazy if / else / else napríklad preberajú viac riadkov, ale každá súčasť tohto systému je v novom riadku. Nedovoľte, aby príkaz krváral do ďalšieho riadku, pretože to môže skrátiť predchádzajúci príkaz a na ďalšom riadku vám dá chybu. Ak to váš textový editor robí, mali by ste vypnúť text-wrapping byť na bezpečnej strane. Môžete vypnúť obalovanie textu v nano bitovom stlačení ALT + L.

    Komentovať často s #s

    Ak spustíte riadok s #, riadok sa ignoruje. To sa zmení na komentár, kde si môžete pripomenúť, aký bol výstup predchádzajúceho príkazu alebo čo bude robiť ďalší príkaz. Znova vypnite obtékání textu alebo rozbiť komentár na viacero riadkov, ktoré začínajú všetkými hashami. Použitie veľa pripomienok je dobrá prax, aby sa zachoval, pretože vám a ostatným ľuďom môžete upraviť svoje skripty ľahšie. Jedinou výnimkou je vyššie uvedený Hash-Bang hack, takže nesledujte #s s! S. ;-)

    Príkazy sú obklopené zátvorkami

    V starších dňoch boli vykonané substitúcie príkazov s jednotlivými značkami (", zdieľa kľúč ~). Nebudeme sa k tomu doteraz dotýkať, ale keďže väčšina ľudí odišla a skúmala po učení sa základom, je pravdepodobne dobré zmieniť sa, že by ste mali použiť zátvorky. Je to hlavne preto, že keď ste hniezdia - vložte príkazy do iných príkazov - zátvorky fungujú lepšie.

    Váš prvý skript

    Začnime jednoduchým skriptom, ktorý umožňuje kopírovať súbory a pridať dátumy do konca názvu súboru. Označme to "datecp". Po prvé, skontrolujte, či niekto nesúhlasí s niečím:

    Môžete vidieť, že nie je žiadny výstup toho príkazu, takže sme všetci nastavili tento názov.

    Vytvoríme prázdny súbor v priečinku ~ / bin:

    dotykom ~ / bin / datecp

    A teraz, zmeniť povolenie, skôr ako zabudneme:

    Potom začneme vytvárať náš skript. Otvorte súbor vo zvolenom textovom editore. Ako som povedal, páči sa mi jednoduchosť nano.

    nano ~ / bin / datecp

    A poďme sa pustiť do predpokladanej prvej línie a komentár k tomu, čo tento skript robí.

    Ďalej deklarujeme premennú. Ak ste niekedy absolvovali algebru, pravdepodobne viete, čo to je. Premenná nám umožňuje ukladať informácie a robiť veci s nimi. Premenné sa môžu "rozširovať", keď sú uvedené inde. To znamená, že namiesto zobrazenia svojho mena sa zobrazí ich uložený obsah. Neskôr môžete zistiť, že tá istá premenná ukladá rôzne informácie a akékoľvek inštrukcie, ktoré sa objavia po tom, použijú nové informácie. Je to naozaj skvelý zástupný symbol.

    Čo budeme vkladať premennú? Nuž, uložme si dátum a čas! Ak to chcete urobiť, zavoláme príkaz dátumu.

    Pozrite si nižšie uvedený obrázok obrazovky, ako vytvoriť výstup príkazu dátum:

    Môžete vidieť, že pridaním rôznych premenných, ktoré začínajú%, môžete zmeniť výstup príkazu na to, čo chcete. Ďalšie informácie nájdete na príručke na strane manuálu.

    Použite túto poslednú iteráciu príkazu dátum, "dátum +% m_% d_% y-% H.% M.% S" a použite to v našom skripte.

    Ak by sme teraz tento scenár zachránili, mohli by sme ho spustiť a dali by nám výstup dátového príkazu, ako by sme očakávali:

    Ale urobme niečo iné. Uveďme názov premennej, ako napríklad date_formatted na tento príkaz. Správna syntax je nasledovná:

    promenná = $ (príkaz -ptions argumenty)

    A pre nás by sme to stavali takto:

    date_formatted = $ (dátum +% m_% d_% y-% H.% M.% S)

    To je to, čo nazývame nahradenie príkazov. V podstate hovoríme, že vždy, keď sa zobrazí premenná "date_formatted", spustite príkaz v zátvorkách. Potom sa má namiesto názvu premennej zobraziť akýkoľvek výstup, ktorý majú príkazy, "date_formatted".

    Tu je príklad skript a jeho výstup:

    Všimnite si, že na výstupe sú dva medzery. Pri oboch príkazoch echo príkazu a priestore pred premennou sa zobrazia obidva miesta. Nepoužívajte medzery, ak nechcete, aby sa zobrazovali. Tiež si všimnite, že bez tohto pridaného riadku "echo" by skript nebol absolútne žiadny výstup.

    Vráťme sa k nášmu skriptu. Ďalej pridáme časť kopírovania príkazu.

    cp -iv $ 1 $ 2. $ dátum_formátovaný

    Toto vyvolá príkaz kopírovanie s možnosťami -i a -v. Prvý z nich vás požiada o overenie skôr, než prepíše súbor a ten druhý zobrazí, čo sa deje na príkazovom riadku.

    Ďalej uvidíte, že som pridal možnosť "$ 1". Pri skriptovaní bude znak dolára ($) nasledovaný číslom označovať tento očíslovaný argument skriptu, keď bol vyvolaný. Napríklad v nasledujúcom príkaze:

    cp -iv Trogdor2.mp3 ringtone.mp3

    Prvý argument je "Trogdor2.mp3" a druhý argument je "ringtone.mp3".

    Pri pohľade späť na náš skript môžeme vidieť, že odkazujeme na dva argumenty:

    Znamená to, že pri spustení skriptu budeme musieť poskytnúť dva argumenty, aby bol skript správne spustený. Prvý argument, $ 1, je súbor, ktorý sa skopíruje a je nahradený prvým argumentom príkazu "cp -iv".

    Druhý argument, $ 2, bude slúžiť ako výstupný súbor pre ten istý príkaz. Ale môžete tiež vidieť, že je to iné. Pridali sme určitú dobu a odkazovali sme na premennú "date_formatted" vyššie. Zvedavý, čo to robí?

    Tu je to, čo sa deje pri spustení skriptu:

    Môžete vidieť, že výstupný súbor je uvedený ako čokoľvek som zadal za $ 2, po ktorom nasleduje obdobie, potom výstup príkazu dátum! Má zmysel, správne?

    Teraz, keď spustím príkaz datecp, spustí tento skript a dovolí mi skopírovať akýkoľvek súbor na nové miesto a automaticky pridá dátum a čas do konca názvu súboru. Užitočné pre archiváciu vecí!


    Shell skriptovanie je v centre vášho operačného systému pre vás. Nemusíte sa naučiť nový programovací jazyk, aby sa to stalo. Skúste skriptovať s niektorými základnými príkazmi doma a začnite premýšľať o tom, na čo môžete použiť.

    Skriptáte? Máte nejaké rady pre nováčikov? Zdieľajte svoje myšlienky v komentároch! V tejto sérii príde viac!