Představte si, že máte několik gigabajtových vstupní soubor subor.txt, ve kterém chcete vypsat první 4 řádky. V důsledku toho, že sed čte standardně celé soubory, dostaneme velmi špatnou výkonnost skriptu:
$ sed -n '1,4p' subor.txt
Namísto toho bychom měli ukončit provádění programu sed hned po přečtení prvních dvou řádků. Uvádím řešení i pro sed i pro awk:
$ sed '4q' subor.txt
$ awk 'NR==5{exit;}1' subor.txt
UNIX SHELL je skriptovací jazyk. Je to ale interpretovaný jazyk, proto preferujte vestavěné příkazy. Interní příkazy (např. echo) jsou takové příkazy, které SHELL spouští bez vytváření podprocesu, přičemž při spouštění externích příkazů (např. expr) se vytváří podpůrce SHELLu.
UNIX shell skvěle pracuje se soubory. Netřeba toho však zneužívat tím, že budeme zbytečně postupně připisovat údaje do velkého souboru. Např. cyklus
while [podmienka]
do
echo x >> subor.txt
done
lze přepsat na
while [podmienka]
do
echo x
done > subor.txt
čímž ušetříte značné množství prostředků. Namísto toho, aby byl výpis realizován n-krát, bude realizován pouze jednou na konci cyklu while.
To znamená, že všechny příkazy, které mohou jít mimo cyklu, nebudou v cyklu nikde použity. Jako příklad si představte, že kontrolujete datum. Výpočet data byste měli realizovat ještě před během skriptu a neměli byste jej počítat v běhu skriptu.