UNIX SHELL: Pár tipov, ako môžete zvýšiť výkon UNIX skriptov

Sed a AWK čítajú predvolene celé súbory

Predstavte si, že máte niekoľko gigabajtový vstupný súbor subor.txt, v ktorom chcete vypísať prvé 4 riadky. V dôsledku toho, že sed číta štandardne celé súbory, dostaneme veľmi zlú výkonnosť skriptu:

$ sed -n '1,4p' subor.txt

Namiesto toho by sme mali ukončiť prevádzanie programu sed hneď po prečítaní prvých dvoch riadkov. Uvádzam riešenie aj pre sed aj pre awk:

$ sed '4q' subor.txt
$ awk 'NR==5{exit;}1' subor.txt

 

Preferujte interné príkazy

UNIX SHELL je skriptovací jazyk. Je to ale interpretovaný jazyk, preto preferujte vstavané príkazy. Interné príkazy (napr. echo) sú také príkazy, ktoré SHELL spúšťa bez vytváranie podprocesu, pričom pri spúšťaní externých príkazov (napr. expr) sa vytvára podporces SHELLu.

 

Lepšia práca zo súbormi

UNIX shell skvele pracuje zo súbormi. Netreba to však zneužívať tým, že budeme zbytočne postupne pripisovať údaje do veľkého súboru. Napr. cyklus

while [podmienka]
do
echo x >> subor.txt
done

sa dá prepísať na

while [podmienka]
do
echo x
done > subor.txt

čím ušetríte značné množstvo prostriedkov. Namiesto toho, aby bol výpis realizovaný n-krát, bude realizovaný iba raz na konci cyklu while.

 

Používajte iba nutné príkazy v cykloch

To znamená, že všetky príkazy, ktoré môžu ísť mimo cyklu, nebudú v cykle nikde použité. Ako príklad si predstavte, že kontrolujete dátum. Výpočet dátumu by ste mali realizovať ešte pred behom skriptu a nemali by ste ho počítať v behu skriptu.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite so náš ebook teraz výnimočne zdarma!!!

Marián Knězek

 

Súvisiace články: