C2110 Operační systém UNIX základy programování 9. lekce Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno I f°C'a MINISTERSTVO ŠKOLSTVÍ. op Vzdělávání %^mJ^-S^ ■ TOndVCR EVROPSKÁ UNIE MLÁDEŽE A TĚLOVÝCHOVY pro konkurenceschopnost MAíA^ INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ CZ.1.07/2.2.00/15.0233 )erační systém UNIX a základy programování 9. lekce Obsah >Bash * cyklus pomoci while > Gnuplot * přehled jazyka, příkaz plot, terminály, příkaz splot )erační systém UNIX a základy programování 9. lekce Bash > cyklus pomocí while lerační systém UNIX a základy programování 9. lekce Cyklus pomocí while Cyklus (smyčka) je řídicí struktura, která opakovaně provádí posloupnost příkazů. Opakování i ukončení cyklu je řízeno podmínkou. cyklus probíhá dokud prikazl vrací v návratové hodnotě 0 Cyklus pomocí for versus while 1=1 $1 <= 10 I++ etho $1 * pokud je podmínka splněna, vykonají se příkazy v bloku do/done provede se před spuštěním cyklu (inicializace počítadla) test $1 echo $1 I=%expr $1 + 1* aktualizace počítadla po vykonání příkazů lerační systém UNIX a základy programování 9. lekce read A Presmerovania roury roura soubor.txt • Výstup všech příkazů v cyklu je přesměrován do presmerovaní lerační systém UNIX a základy programování 9. lekce Domácí úkol I Vysvětlete rozdílné chování následujících skriptů. Soubor data.txt obsahuje pět řádků. vypíše číslo 0 vypíše číslo 5 perační systém UNIX a základy programování 9. lekce Domácí úkol II Soubor rst.out (wolf.ncbr.muni.cz:/home/kulhanek/Data/rst.out) obsahuje výsledky z molekulové dynamiky. Úkolem je ze souboru vyextrahovat závislost teploty simulovaného systému na čase. NSTEP = Etot BOND 1-4 NB EELEC EAMBER 500 cas 942.6248 51.3204 17.7099 ■494 .7423 TIME(PS) = EKtot ANGLE 1-4 EEL E GB 0.500 TEMP(K) 151.0990 292.3619 981. 4071 -164.7991 288.02 EPtot DIHED VDWAALS RESTRAINT teplota PRESS 0.0 791.5258 176.5980 -68.3301 0 .1822 [ non-restraint) 791.3436 POZOR: Skript nesmí obsahovat příkazy grep, awk a ani jejich varianty. Při řešení použijte příkaz read a while. 9. lekce -8- Gnuplot > (Ne)lnteraktivní spouštění > Příkaz plot > Terminály > Ukázky http://www.gnuplot.info/ (dokumentace, tutoriály, zdrojové kódy) PM3 DMP + H2C free enemy [kcal/mol] Í 3 rH i ID V) 2.5 □ 1.5 -2-1012 DD 14-16/16-7 [A] 100 1 80 60 40 20 lerační systém UNIX a základy programování 9. lekce Ukázky minimum QM / ABF / Rewald = 8 ä -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 DD (Ä) )erační systém UNIX a základy programování 9. lekce Ukázky )erační systém UNIX a základy programování 9. lekce Interaktivní spouštění Gnuplot slouží k vykreslování 2D a 3D grafů umožňující práci v interaktivním tak skriptovacím režimu. GNUPLOT Version 4.4 patchlevel 3 last modified March 2011 System: Linux 3.2.0-31-generic Copyright (C) 1986-1993, 1998, 2004, 2007-2010 Thomas Williams, Colin Kelley and many others gnuplot home: http://www.gnuplot.info faq, bugs, etc: type "help seeking-assistance" immediate help: type "help" plot window: hit 'h' příkazová řádka shellu Bash Interaktvní mód [kulhanek@wolf ~]$ gnuplot Terminal type set to 1wxt gnuplot> _ příkazová řádka gnuplotu )erační systém UNIX a základy programování 9. lekce Neinteraktivní spouštění Spouštíme interpreter jazyka a jako argument uvádíme jméno skriptu. $ gnuplot muj_skript_v_gnuplotu Skripty nemusí mít nastaven příznak x (executable). Spouštíme přímo skript (shell automaticky spustí interpreter). $ chmod muj_skript_v_gnuplotu $./muj_skript_v_gnuplotu Skripty musí mít nastaven příznak (executable) interpreter (součást skriptu). #!/usr/bin/gnuplo plot sin(x) pause -1 lerační systém UNIX a základy programování 9. lekce Příkaz - plot > plot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ... Zobrazí XY graf funkce nebo datové řady obsažené v soubo Příklady: lines, points, linespoints, dots barva čáry > plot sin(x) > plot cos(5.7*x+3.4) with points linecolor rgb "red" \ linewidth 2 title "cos" název souboru s daty tloušťka čáry ^ *\ legenda \ > plot "input.txt" using 1:2 with lines druhý sloupec tvoří y-ové hodnoty první sloupec tvoří x-ové hodnoty > plot sin(x), cos(x) zobrazí funkci sin a cos do jednoho grafu )erační systém UNIX a základy programování 9. lekce Cvičení 1. Znázorněte průběh funkce y=x2 2. Průběh funkce z prvního cvičení zobrazte modrou barvou 3. Zobrazte průběh teploty v čase obsažený v souboru /home/kulhanek/Data/temp.txt Čas je uveden v prvním sloupci, teplota je uvedena v druhém sloupci. 4. Zobrazte do jednoho grafu funkci sin(x) pomocí červené čáry a funkci cos(x) pomocí oranžové čáry a bodů. Úlohy řešte v interaktivním režimu. )erační systém UNIX a základy programování 9. lekce Další příkazy > set ti tle "popis" # záhlaví grafu > set xrange [min_value :max_value] # nastaví rozsah x-ové osy > set xlabel "popis" # nastaví popis x-ové osy > set yrange [min_value :max_value] # nastaví rozsah y-ové osy > set ylabel "popis" # nastaví popis y-ové osy > set nokey # nezobrazí legendu k datovým řadám > pause -1 # čeká na zmáčknutí klávesy )erační systém UNIX a základy programování 9. lekce Cvičení 1. Napište skript, který znázorní průběh funkce y=x2 v rozsahu 0-10 pro x-ovou hodnotu. Skript spusťte nepřímo pomocí interpretru gnuplot. 2. Napište skript, který zobrazí průběh teploty v čase obsažený v souboru /home/kulhanek/Data/temp.txt. V grafu popište osy včetně určení jednotek. Čas je uveden v picosekundách, teplota v kelvinech. )erační systém UNIX a základy programování 9. lekce Terminály Terminál určuje kam bude graf vykreslen. > set term xll # výstup je vykreslen do okna > set term wxt # výstup je vykreslen do okna (lepší vlastnosti) > set term png size 800,600 # výstup je vykreslen jako obrázek ve formátu png > set output "output.png" # výstup bude uložen do souboru output.png > test # vytiskne stránku demonstrující vlastnosti terminálu (ne všechny terminály mají stejné možnosti výstupu) 9. lekce -18- Ukázky výstupu z různých terminá wxt 'gj Gnuplot (window id : 0) 3a 3»®@ splot funkce/soubor [nastaveni_zobrazeni] [, fce/soubor ...] Zobrazí XYZ graf funkce nebo datové řady obsažené v souboru. Směr pohledu se nastavuje příkazem set viewa,b, kde a a b jsou směrové úhly. Pohled shora lze nastavit pomocí set view map Při zobrazování funkcí lze hustotu vzorkování pro x-ový a y-ový směr zadat příkazem set isosamples a,b, kde a a b udává počet vzorků v daném směru. Pro zvýraznění plochy pomocí funkční hodnoty lze použít pm3d zobrazení, např. > splot x*x+y*y with pm3d 9. lekce -21- Cvičení 1. Zobrazte funkci x2+y2 2. Nastavte pohled shora (set view) 3. Zrušte pohled shora (unset view) 4. Zvyšte hustotu bodů pro zobrazení funkce (set isosamples). Použijte hodnoty 10,20 ; 20,10 a 20,20 5. Použijte zobrazení pm3d 6. Nastavte pohled shora (set view) Úlohy řešte v interaktivním režimu. )erační systém UNIX a základy programování 9. lekce