Č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.
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
- Každý skript by mal byť "#! / Bin / bash"
- Každá nová riadka je nový príkaz
- Riadky komentárov začínajú #
- 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:
Vytvoríme prázdny súbor v priečinku ~ / bin:
touch ~/bin/datecp
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 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.
variable=$(command –options arguments)
A pre nás by sme to stavali takto:
date_formatted=$(date +%m_%d_%y-%H.%M.%S)
Tu je príklad skript a jeho výstup:
Vráťme sa k nášmu skriptu. Ďalej pridáme časť kopírovania príkazu.
cp –iv $1 $2.$date_formatted
Ď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:
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:
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!