Shellovské skriptovanie: vytváranie skriptov

Mnoho úloh v shelli sa dá dosiahnuť jednoriadkovými skriptami. Samozrejme, riadok môže mať dva kilometre, ako napr. v ukážke, ktorá vypíše počty procesov, ktoré majú spustené jednotliví používatelia a zároveň ich zapíše do súboru.

ps -Af | cut -f1 -d" " | sort | uniq -c | sort -k1n | tee processes.txt

Takéto vykonávanie (zadanie príkazu a potvrdenie Enterom) prebieha v interaktívnom móde shellu.

Ak sa však takáto kolóna príkazov používa opakovane, je omnoho lepšie vytvoriť shellový skript, čiže súbor s programom, ktorý sa následne pošle shellu na vykonávanie.

Vytvorenie shellového skriptu

Vytvorenie shellového skriptu pozostáva z troch krokov:

  1. založenie súboru
  2. naplnenie obsahom
  3. nastavenie spustiteľnosti.

Prvé dva body vieme urobiť naraz. Zavolajme obľúbený textový editor s parametrom obsahujúcim názov súboruz:

nano pozdrav.sh

Tradícia káže pomenovať skript s príponou .sh (ale nie je to nutné, na rozdiel od Windowsu je prípona len kozmetický prvokk.)

Riadok shebang

Každý shellový skript musí začínať špeciálnym riadkom, zvaným shebang, resp. hashbang. Pomenovanie pochádza z prvých dvoch znakov: mreža (hash) a výkričník (bang). Za týmito dvoma znakmi sa musí nachádzať cesta k programu, pomocou ktorého sa spustí celý skript.

#!/bin/sh

Takýto shebang hovorí, že skript sa spustí pomocou programu /bin/sh, na ktorý býva namapovaný obvykle klasický Bourneho shell (alebo iný shell s ním kompatibilný).

Za týmto riadkom pokračujú príkazy pre shell podobným spôsobom, ako keby sme ich uvádzali v interaktívnom móde, Ukážme si jednoduchý skript:

#!/bin/sh
echo "Ahoj svet"

Uložme tento skript a skúsme ho spustiť.

Nastavenie práva na spustenie

Predtým však potrebujeme nastaviť právo na spustenie. V Linuxe sa program dá priamo vykonať len vtedy, ak má nastavený atribút executable (spustiteľný). Zmeniť ho môžeme nasledovne:

chmod +x pozdrav.sh

Parameter +x chápeme nasledovne: plus hovorí, že sa má zapnúť hodnota atribútu a x je skrátený zápis pre spustiteľnosť.

Spustenie skriptu

Následne môžeme skript spustiť:

./pozdrav.sh

Všimnime si nutnosť uviesť pred názov relatívnu cestu (bodka zodpovedá aktuálnemu adresáru). Je to nezvyk oproti MS-DOSu, či Windowsu, ale má to svoje bezpečnostné dôvody.

Automatizácia vytvárania skriptu

Vytvorenie skriptu môžeme urobiť aj trojkombináciou príkazov:

touch skript.sh
chmod +x skript.sh
nano skript.sh

Alternatívne to môžeme urobiť na jeden riadok:

touch skript.sh; chmod +x skript.sh; nano skript.sh

Od momentu, keď sa naučíme používať premené, to vieme skrátiť na:

S=skript.sh; touch $S; chmod +x $S; nano $S

Skript pre vytváranie skriptov

Ak chceme byť mimoriadne efektívni, môžeme si založiť skript na vytváranie skriptov:

#!/bin/sh
[ "$1" ] || { echo Uvedte meno noveho skriptu; exit 1; }
touch "$1"
chmod +x "$1"
nano "$1"

To však značne predbiehame — v tejto ukážke využívame premenné, skladanie procesov a overovanie booleovských podmienok.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *