C2110 Operační systém UNIX a základy programování 11. lekce bash (dokončení) Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno Operační systém UNIX a základy programování 11. lekce Bash > Přesměrování vstupu ze skriptu Dperační systém UNIX a základy programování 11. lekce Přesměrování vstupu ze skriptu Přesměrování standardního vstupu programu my_command ze souboru skriptu, značka určující konec vstupu (volí uživatel) ./my command « EOF prvni radka textu druha radka textu treti radka textu EOF text, který tvoří načítaný vstup konec vstupu, značku nesmí obklopovat mezery Tento způsob přesměrování je obzvláště výhodné používat ve skriptech, nicméně funguje i v příkazové řádce. Výhodou je expanze proměnných v načítaném textu. Dperační systém UNIX a základy programování 11. lekce Ukázky #!/bin/bash for((1=1;$I<=10;!++)); do NAME=xprintf "%02d.txt" $IX Toto je soubor cislo: $1 EOF done Výsledek příkazů uvozených zpětnými uvozovkami "je uložen do proměnné NAME. Vyznačený text je poslán do standardního vstupu příkazu cat, proměnné jsou expandovány před odesláním vstupu, příka cat jej pak uloží do souboru $NAME. #!/bin/bash gnuplot « EOF plot sin(x) EOF Uvedeným způsobem lze programově vytvářet skripty pro gnuplot. Dperační systém UNIX a základy programování 11. lekce Cvičení I 1. Vytvořte skript, který vytvoří deset souborů. Jméno souboru bude ve formátu XX.txt, kde XX je číslo souboru. Pokud je číslo souboru menší než deset, tak pro první cifru v názvu použijte znak 0. Každý soubor bude obsahovat následující text (X je číslo souboru): Automaticky vytvořeny textový soubor Cislo souboru je: X 2. Vytvořte skript, který pro každý soubor *.cpp v libovolném adresáři v cestě /home/kulhanek/Documents/C2110/Lesson03 vypíše počet řádků. Použijte kombinaci příkazů find a while read. 3. Stejné zadaní jako ve cvičení 2. Použijte pouze příkaz find. 4. Vytvořte skript, který vytvoří 360 obrázků o rozměrech 800x600 zobrazující průběh funkce sin(x+offset), pro x v intervalu 0 - 2 ti, kde konstanta offset se bude měnit mezi obrázky postupně od 1 do 360°. Dperační systém UNIX a základy programování 11. lekce -5- Cvičení II 1. Napište skript(y), který vypíše řadu čísel 3n pro n od 1 do N do souboru data.txt. (10 bodů). Číslo N uživatel zadá jako první argument skriptu (5 bodů). Ošetření vstupu (5 bodů). Průběh číselné řady uložené v souboru data.txt zobrazte v gnuplotu, zobrazení proveďte neinteraktivně (10 bodů). Ukázka zadání úkolu ke zkoušce. Dperační systém UNIX a základy programování 11. lekce -6- Cvičení i. Soubor rst.out (wolf.ncbr.munixz:/home/kulhanek/Documents/C2110/Lesson09/rst.out) obsahuje výsledky z molekulové dynamiky. Úkolem je ze souboru vyextrahovat závislost teploty simulovaného systému na čase a tyto data uložit do souboru temp.out, který bude obsahovat právě dva sloupce. První sloupec bude čas a druhý sloupec bude teplota. Vyextrahované data zobrazte ve formě grafu uloženého do souboru teplota.png. NSTEP = Etot BOND 1-4 NB EELEC EAMBER 500 942 51 17 -494 cas TIME (PS) = 6248 EKtot 3204 ANGLE 7099 1-4 EEL 7423 EGB 0.500 TEMP(k) 151 292 981 -164 0990 3619 4071 7991 (non-restraint) 791.3436 teplota 288.02 EPtot DIHED VDWAALS RESTRAINT PRESS 0.0 791.5258 176.5980 -68.3301 0.1822 POZOR: Skript nesmí obsahovat příkazy grep, awk a ani jejich varianty. Při řešení použijte příkaz read a while. Dperační systém UNIX a základy programování 11. lekce Cvičení IV 1. Upravte předchozí řešení tak, aby ve výsledném grafu byla zobrazena časová závislost celkové energie (Etot). Tato energie je v kcal/mol. Dperační systém UNIX a základy programování 11. lekce