C2110 Operační systém UNIX a základy programování -1- C2110 Operační systém UNIX a základy programování 10. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém UNIX a základy programování -2- Obsah  Spuštění příkazů III proměnná PATH  Hybridní skripty přesměrování v rámci skriptu  Nové příkazy type, hash, tr, memcoder, mplayer C2110 Operační systém UNIX a základy programování -3- Bash C2110 Operační systém UNIX a základy programování -4Spouštění příkazů a aplikací, III 1. Cesta k příkazu se nejdříve hledá v tabulce s již použitými příkazy: $ hash hits command 1 /bin/rm 3 /bin/ls 2. Pokud není příkaz nalezen, hledá se v adresářích uvedených v systémové proměnné PATH $ echo $PATH .../usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 3. Cestu k příkazu, pokud existuje, lze zjistit příkazem type $ type ls /bin/ls pořadí prohledávání Tabulku lze smazat příkazem: $ hash -r Adresáře se oddělují znakem : (dvojtečka) Aby mohl shell zadaný příkaz spustit, potřebuje znát úplnou cestu k souboru, který obsahuje binární program nebo skript. C2110 Operační systém UNIX a základy programování -5Úprava proměnné PATH Manuální změna proměnné PATH $ export PATH=/moje/cesta/k/mym/prikazum:$PATH oddělující znak Cesta k adresáři obsahující příkazy, u kterých chci, aby byly přístupné bez uvádění cesty. Cesta se vždy uvádí absolutně! (uvádění relativních cest je bezpečnostním rizikem) Původní hodnota proměnné PATH (nutné pro nalezení systémových příkazů) Automatizovaná změna proměnné PATH Automatizovanou změnu proměnné PATH (a případně jiných systémových proměnných) provádí příkaz module. $ module add vmd C2110 Operační systém UNIX a základy programování -6Příkaz tr Příkaz tr slouží k transformaci nebo mazání znaků ze standardního vstupu. Výsledek je zasílán do standardního výstupu. Příklady: $ cat soubor.txt | tr --delete "qwe" $ cat soubor.txt | tr --delete "[:space:]" $ echo $PATH | tr ":" "\n" z obsahu souboru soubor.txt odstraní znaky "q", "w" a "e" z obsahu souboru soubor.txt odstraní všechny bílé znaky v textu zaslaného příkazem echo budou nahrazeny znaky ":" znakem nového řádku "\n" C2110 Operační systém UNIX a základy programování -7- Cvičení 1. Vypište hodnotu proměnné PATH. 2. Vypište adresáře obsažené v proměnné PATH, každý na jeden řádek. 3. V kterém adresáři se vyskytuje program kwrite? 4. Jaké je obsah tabulky použitých příkazů? 5. Jakým způsobem změní hodnotu proměnné PATH příkaz module add vmd? 6. V jakém adresáři se vyskytuje příkaz vmd? C2110 Operační systém UNIX a základy programování -8- MPlayer http://www.mplayerhq.hu C2110 Operační systém UNIX a základy programování -9- mplayer mplayer slouží k přehrávání videa. Stručný popis ovládání lze získat spuštěním příkazu bez žádného argumentu. Příklad: $ mplayer movie.avi přehraje video movie.avi Zajímavé volby: -loop N přehraje video N-krát -fs video přehraje v celoobrazovkovém režimu C2110 Operační systém UNIX a základy programování -10- mencoder mencoder slouží ke kódování videa. Lze jej využít pro konverzi jednoho formátu do druhého, změně kodeku, nebo sestavení videa ze série obrázků. Sestavení videa z obrázků: $ mencoder "mf://*.png" –mf fps=25 -ovc lavc -o output.avi Vstupní data. Použije všechny obrázky s příponou png. Obrázky musí mít vhodné jméno, které, pokud je použito pro setřídění, poskytne správnou sekvenci. Výstupní encoder. Název vytvořeného videa. Přehled: http://mariovalle.name/mencoder/mencoder.html Počet snímků za sekundu (FPS – frames per second). C2110 Operační systém UNIX a základy programování -11- Alternativy FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library. GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. http://gstreamer.freedesktop.org/ http://ffmpeg.org/ C2110 Operační systém UNIX a základy programování -12- Cvičení 1. V adresáři /home/kulhanek/Data/Video jsou dva soubory s příponou avi. Oba soubory si překpírujte do adresáře moje_video, který vytvoříte ve vašem domovském adresáři. 2. Obě videa přehrajte v programu mplayer. Naučte se základní ovládání programu: pozastavení videa, přesouvání ve videu, přepnutí do celoobrazovkého režimu. 3. V adresáři /home/kulhanek/Data/MovieImages jsou obrázky ve formátu png. Vytvořte si adresář /scratch/vas_login/mimages , do kterého obrázky překopírujte. 4. Jaké rozměry (šířku, výšku a bitovou hloubku) má obrázek e_0010.png ? 5. Z obrázků sestavte dvě videa o FPS=10 a FPS=50. 6. Vytvořená videa přehrajte. C2110 Operační systém UNIX a základy programování -13Hybridní skripty C2110 Operační systém UNIX a základy programování -14Přesměrování v rámci skriptu Přesměrování standardního vstupu programu my_command ze souboru skriptu. ....... ./my_command << EOF prvni radka textu druha radka textu treti radka textu EOF ...... značka určující konec vstupu (volí uživatel) konec vstupu, značku nesmí obklopovat mezery text, který tvorí načítaný vstup 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. C2110 Operační systém UNIX a základy programování -15- Ukázky #!/bin/bash gnuplot << EOF plot sin(x) EOF #!/bin/bash for((I=1;$I<=10;I++)); do NAME=`printf "%02d.txt" $I` cat << EOF > $NAME Toto je soubor cislo: $I EOF done vyznačený text je poslán do standardního vstupu příkazu cat před odesláním textu jsou expandovány proměnné a příkazy uvozené `prikaz` příkaz cat jej pak uloží do souboru $NAME Uvedeným způsobem lze programově vytvářet skripty pro gnuplot. C2110 Operační systém UNIX a základy programování -16- Cvičení 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 jako první cifru v názvu použijte znak 0. Každý soubor bude obsahovat následující text (X je číslo souboru): 2. Napište skript(y), který vytvoří sérii obrázků zobrazující vlnění (funkce sin, nebo cos v 2D nebo 3D, dle vašeho uvážení). Z obrázků sestavte video pomocí příkazu mencoder. Video přehrajte pomocí příkazu mplayer. Automaticky vytvoreny textovy soubor Cislo souboru je: X