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

Obsah:

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

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

Video: Príručka pre začiatočníkov pre Shell skriptovanie: Základy
Video: Apple Maps Vs Google Maps! (Which Should You Use?) (Comparison) - YouTube 2024, Apríl
Anonim
Pojem "shell skriptovanie" sa často spomína v 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.
Pojem "shell skriptovanie" sa často spomína v 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 Linuxu znamená, že si hráte s príkazovým riadkom. Páči sa vám to alebo nie, existujú len niektoré veci, ktoré sa cez toto rozhranie dajú oveľa ľahšie ako pomocou ukazovateľov a kliknutí. Čím viac používate a učia sa príkazové riadky, tým viac vidíte jeho potenciál. Príkazový riadok samotný je program: shell. Väčšina linuxových distribúcií dnes používa Bash a práve to naozaj vstupujete do príkazov.

Teraz niektorí z vás, ktorí používali systém Windows pred použitím Linuxu, 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. Bol to šikovný a elegantný spôsob, ako urobiť nejaké veci, ako napríklad spustiť hry vo vašej strednej škole počítačovej laboratóriu, keď ste nemohli otvoriť systémové priečinky alebo vytvoriť 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ťazcoch 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 je napríklad náhrada velenia. 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 svojho mena. Skripty nie sú len vyvolaním príkazov. Sú programy samy osebe. Skriptovanie vám umožňuje používať funkcie programovania - napríklad smyčky 'for', if / then / else atď. - 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.
Shell skripty nám umožňujú naprogramovať príkazy v reťazcoch 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 je napríklad náhrada velenia. 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 svojho mena. Skripty nie sú len vyvolaním príkazov. Sú programy samy osebe. Skriptovanie vám umožňuje používať funkcie programovania - napríklad smyčky 'for', if / then / else atď. - 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. Môžete programovať pomocou príkazov, ktoré už poznáte, zatiaľ čo sa učia staples väčšiny hlavných programovacích jazykov. Potrebujete robiť niečo opakujúce a zdĺhavé? Script to! Potrebujete skratku pre skutočne komplikovaný príkaz? Script to! Chcete vytvoriť naozaj jednoduché rozhranie príkazového riadka pre niečo? 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 operačného systému Mac OS a Cygwin pre systém 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 príkazy, na ktoré odkazujeme, skripty môžu pracovať na viacerých platformách, ktoré vyžadujú malé alebo žiadne ladenie.

Skriptovanie môže jednoducho využívať privilégiá "administrátora" alebo "superuživateľa", preto je najlepšie skontrolovať skripty skôr, než ich začnete pracovať. Tiež používajte zdravý rozum, ako napríklad uistiť sa, ž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 poskytuje, budem ju 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ť daný skript. Ak chcete obmedziť jeho použitie iba na svojho používateľa, môžete ho použiť namiesto toho:

chmod u+x ~/somecrazyfolder/script1

Ak chcete spustiť tento skript, museli by ste vložiť do riadneho adresára a potom spustiť skript takto:

cd ~/somecrazyfolder

./script1

Ak chcete veci urobiť pohodlnejšie, môžete umiestniť skripty do priečinka "bin" vo vašom domovskom adresári:

~/bin

V mnohých moderných distribučných priečinkoch 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 ostatným používateľom. Umiestnením skriptov tu môžete jednoducho spustiť zadaním ich názvu, 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:

which [command]

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 testovacím príkazom, ktorý nerobí nič bez argumentov. Vždy sa uistite, že názvy vašich skriptov nie sú v rozpore s príkazmi, inak môžete zistiť, ž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é musíte vedieť.
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é musíte vedieť.
  1. Každý skript by mal byť "#! / Bin / bash"
  2. Každá nová riadka 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žijete iný shell, nahraďte ho tu. Riadky s poznámkami začínajú s hashes (#), ale pridávajú tón (!) A cestu shell potom, čo je to nejaký hack, ktorý obišne toto pravidlo komentára a núti skript vykonať s shell, ktorý tento riadok ukazuje.

Nová riadok = nové príkazy

Každá nová linka by sa mala považovať za nový príkaz alebo za komponent väčšieho systému. Príkazy if / then / else preberú 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 dať vám chybu na ďalšom riadku. Ak to váš textový editor robí, mali by ste vypnúť text-wrapping byť na bezpečnej strane. Textové balenie môžete vypnúť v nano bitovom stlačení ALT + L.

Komentovať často s #s

Ak spustíte riadok s #, riadok sa ignoruje. To sa zmení na riadok komentárov, 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ým hash. Použitie veľkého počtu pripomienok je dobrá prax, ktorú si udržať, pretože vám a ostatným ľuďom môžete ľahšie upraviť svoje skripty. 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 ešte dotýkať, ale keďže väčšina ľudí odíde a skúma po tom, ako sa učia základy, je pravdepodobne dobré spomenúť, že by ste mali používať 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ý vám umožňuje kopírovať súbory a pridať dátumy do konca názvu súboru. Povedzme to "datecp". Po prvé, skontrolujte, či názov nie je v rozpore s niečím:

Môžete vidieť, že nie je žiadny výstup, ktorý príkaz, takže sme všetci nastaviť používať toto meno.
Môžete vidieť, že nie je žiadny výstup, ktorý príkaz, takže sme všetci nastaviť používať toto meno.

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

touch ~/bin/datecp

A teraz, zmeniť povolenie, skôr ako zabudneme:
A teraz, zmeniť povolenie, skôr ako zabudneme:
Potom začnime vytvárať náš skript. Otvorte súbor v textovom editore výberu. Ako som povedal, páči sa mi jednoduchosť nano.
Potom začnime vytvárať náš skript. Otvorte súbor v textovom editore výberu. 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í.

Image
Image

Ď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 chceme vložiť do premennej? No, 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:

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

Ak by sme tento skript ušetrili teraz, mohli by sme ho spustiť a dali by nám výstup dátového príkazu, ako by sme očakávali:
Ak by sme tento skript ušetrili teraz, 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ďte názov premennej, napríklad date formatted na tento príkaz. Správna syntax je nasledovná:
Ale urobme niečo iné. Uveďte názov premennej, napríklad date formatted na tento príkaz. Správna syntax je nasledovná:

variable=$(command –options arguments)

A pre nás by sme to stavali takto:

date_formatted=$(date +%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ť ľubovoľný výstup, ktorý majú príkazy, "date formatted".
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ť ľubovoľný výstup, ktorý majú príkazy, "date formatted".

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

Image
Image
Upozorňujeme, ž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" skript by nedal absolútne žiadny výstup.
Upozorňujeme, ž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" skript by nedal absolútne žiadny výstup.

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

cp –iv $1 $2.$date_formatted

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.
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ým argumentom je "Trogdor2.mp3" a druhý argument je "ťringtone.mp3".

Ak sa pozrieme späť na náš skript, môžeme vidieť, že odkazujeme na dva argumenty:

To znamená, že keď spustíme skript, budeme musieť poskytnúť dva argumenty, aby skript správne fungoval. Prvý argument, $ 1, je súbor, ktorý sa bude skopírovať a je nahradený prvým argumentom "príkazu", "prvé", prvý príkaz.
To znamená, že keď spustíme skript, budeme musieť poskytnúť dva argumenty, aby skript správne fungoval. Prvý argument, $ 1, je súbor, ktorý sa bude skopírovať a je nahradený prvým argumentom "príkazu", "prvé", prvý príkaz.

Druhý argument, $ 2, bude slúžiť ako výstupný súbor pre ten istý príkaz. Ale môžete tiež vidieť, že to je iné. Pridali sme obdobie a odkazovali sme na premennú Äúdate_formatted z vyššie uvedeného. 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, čo som zadal za $ 2, po ktorom nasleduje obdobie, potom výstup príkazu dátum! Má zmysel, že?
Môžete vidieť, že výstupný súbor je uvedený ako čokoľvek, čo som zadal za $ 2, po ktorom nasleduje obdobie, potom výstup príkazu dátum! Má zmysel, že?

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!

Shell skriptovanie je jadrom vášho operačného systému pre vás. Nemusíte sa naučiť aj 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!

Odporúča: