%%%%%%%%%%INCLUDE ./default.mgp %deffont "standard" xfont "arial-medium-r" "iso8859-2" %deffont "lucidux" xfont "lucidux mono-bold-r" "iso8859-2" %deffont "typewriter" xfont "courier-medium-r" "iso8859-2" %deffont "thick" xfont "arial-medium-r" "iso8859-2" %deffont "rouge" xfont "moulin rouge-medium-r" "iso8859-2" %deffont "fixed" xfont "courier-bold-r" "iso8859-2" %% %default 1 pcache 1 1 1 50, bgrad 0 0 256 0 5 "blue" "black", leftfill %default 2 font "standard", size 10, vgap 50, prefix " " %default 3 size 4, bar "gray70", vgap 10 %default 4 font "standard", size 7, vgap 30, fore "white", prefix " " %% %tab 1 prefix " ", icon delta3 "yellow" 30 %tab 2 prefix " " %tab 3 size 6, prefix " ", icon delta3 "gray70" 30 %tab 4 size 3, vgap 50, prefix " ", icon delta3 "white" 40 %%%%%%%%%%INCLUDE-END ./default.mgp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault %pcache 1 1 1 50 %bgrad 0 0 256 0 5 "blue" "black" %fore "red", size 12, font "standard", fore "white", vgap 20 %center, fore "yellow", font "rouge", size 20 shell %font "standard" %size 4, fore "white" bash, awk, ... Ing. Ján ONDREJ (SAL) %size 3 ondrejj@salstar.sk http://www.salstar.sk/ http://www.salstar.sk/doc/shell %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Čo je shell? interpreter príkazov číta príkazy zo štandardného vstupu %pause Čo je štandardný vstup/výstup? štandardný vstup - obyčajne klávesnica štandardný výstup - obyčanje terminál (obrazovka) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Jednoduchý príkaz %font "fixed" %size 5 bash# date %filter "date" %endfilter bash# _ %pause %font "standard" %size 7 Parametre príkazového riadku: %font "fixed" %size 5 bash# ls / bin dev home root tmp var boot etc lib proc sbin usr bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Expanzia príkazov Zadáme príkaz: %font "fixed" %size 5 bash# ls /* %font "standard" %size 7 Vykoná sa: %font "fixed" %size 5 ls /bin /dev /home /root ... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Rúry previazanie štandardného výstupu prvého príkazu so \ štandardným vstupom druhého príkazu %font "fixed" %size 5 cat /etc/passwd | less %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Presmerovanie presmerovanie výstupu príkaz > súbor presmerovanie výstupu s pridaním príkaz >> súbor presmerovanie vstupu príkaz < súbor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Kombinácia rúry a presmerovania %font "fixed" %size 5 %prefix " " cat /etc/passwd | grep "Peter" > /tmp/petrovia %pause grep "Peter" /etc/passwd > /tmp/petrovia %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Premenné Nastavenie premennej: A=5 Použitie premennej: $A Špeciálne premenné: %size 5 $0, $1, $2, ... - jednotlivé parametre skriptu $@, $* - všetky parametre $1 ... %pause %size 5 %font "fixed" %bar "gray70" bash# echo $HOME /root bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Podmienené vykonávanie vykonanie v prípade úspechu príkaz1 && príkaz2 vykonanie v prípade neúspechu príkaz1 || príkaz2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Písanie programov (skriptov) Súbor: "skript" %bar "gray70" %size 5 %font "fixed" #!/bin/sh %pause echo "Názov skriptu: $0" %pause %bar "gray70" bash# chmod +x skript bash# ./skript Názov skriptu: ./skript bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Podmienka %font "fixed" %size 5 if príkaz_podmienky; then príkaz; [ elif príkaz; then príkaz; ] ... [ else príkaz; ] fi %pause %font "standard" %size 7 Príkaz 'test': %font "fixed" %size 5 test podmienka [ podmienka ] %pause %font "standard" %size 7 Podmienka: %font "fixed" %size 5 reťazec = reťazec číslo { -lt | -le | -eq | -ge | -gt | -ne } číslo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Príklad podmienky %font "fixed" %size 5 #!/bin/sh if [ "$1" = "-x" ]; then echo JEDNA else echo DVA fi %pause %bar "gray70" %mark bash# ./l -x JEDNA bash# _ %pause %again %prefix " " bash# ./l DVA bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Cyklus: %font "fixed" %size 5 %prefix " " for meno in zoznam; do príkaz; done %font "standard" %size 7 premenná $meno bude obsahovať slová zo zoznamu zoznam môže obsahovat '*' %font "fixed" %size 5 while príkaz_podmienky; do príkaz; done %font "standard" %size 7 príkaz podmienky ako pre 'if' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Príklad cyklu %font "fixed" %size 5 #!/bin/sh for i in 1 2 3 4 5; do echo $i done %pause %bar "gray70" bash# ./cyklus 1 2 3 4 5 bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Príkaz grep vyhľadávanie reťazcov v textových súboroch Zápis: grep regulárny_výraz súbory... %pause %bar "gray70" %font "fixed" %size 5 bash# grep "^root:" /etc/passwd %filter "grep ^root: /etc/passwd" %endfilter bash# _ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Regulárne výrazy %prefix " " %font "fixed" %size 5 . akýkoľvek znak * 0-n opakovaní predch. znaku ? 0-1 opakovaní predch. znaku + 1-n opakovaní predch. znaku ^ začiatok riadku $ koniec riadku [...] zoznam znakov [^...] zoznam znakov, ktoré neobsahuje %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Dalšie príkazy: expr - vyhodnotenie výrazu %font "fixed" %size 5 expr 2 + $i %pause %font "standard" %size 7 cut - výber niektorého z parametrov %font "fixed" %size 5 cut -d: -f1 %pause %font "standard" %size 7 tr - zámena a mazanie znakov %font "fixed" %size 5 tr A-Z a-z %pause %font "standard" %size 7 head, tail - výber niekoľkých riadkov zo začiatku/konca %font "fixed" %size 5 head -3 /etc/issue %pause %font "standard" %size 7 wc - spočítanie riadkov, znakov, ... %font "fixed" %size 5 wc -l /etc/passwd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page awk syntax podobná jazyku C jednoduché spracovanie vstupu ľahko formátovateľný výstup %pause Zápis: %font "fixed" %size 5 awk /vzor/ { príkazy } porovná všetky vzory pre každý riadok vstupu vykoná príkazy, pri ktorých vyhovuje vzor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Príklad skriptu s awk: %font "fixed" %size 5 #!/bin/sh ... cat $@ | awk -F: ' /^1:/ { print $2 } /^2:/ { print $3 }' ... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Príkaz printf printf(formát, parametre, ...) vypísanie textu Parametre: formát %d - desiatkové číslo %s - reťazec hodnoty, ... %pause %bar "gray70" %font "fixed" %size 5 printf("Vysledok: %d", vysledok) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Cyklus for for(inicializácia;podmienka;inkrementácia) príkaz; %pause %bar "gray70" %font "fixed" %size 5 for(i=0;i<10;i++) printf("%d ",i) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Podmienka if (podmienka) { príkazy } else { príkazy } %pause %bar "gray70" %font "fixed" %size 5 if (a==1) { print "A je jedna" } else { print "A nieje jedna" } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %size 7 Ďalšie možnosti %font "rouge", size 50 %prefix "" %center XXX %size 7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Otázky? %font "rouge", size 70 %prefix "" %center ? %size 7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Ďakujem za pozornosť. %font "rouge", size 50 %prefix "" %center :-)