Kód DUM : VY_32_INOVACE_LIN.1.03 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 03 BASH rozbory a psaní skriptů DUM naučí psát elementární BASH skripty, ukáže zásady psaní cyklů a přepínačů Ing. Vladimír KEBERT, CSc Čeština RVP 18-20-M/01 Informační technologie, předmět: Operační systémy, 3 ročník Speciální vzdělávací potřeby Žádné Klíčová slova Druh učebního materiálu Druh interaktivity Cílová skupina Stupeň a typ vzdělávání Typická věková skupina Př. Linux, skript, BASH,cyklus, přepínač, příkaz, znak, soubor, adresář Prezentace s prvky interaktivity Kombinované Žáci 3. ročníku Odborné vzdělávání 16-19 let Celková velikost Velikost materiálu v kb :
1. BASH společná konstrukce skriptu Úkol: Sestavte skript, který přejmenuje zadaným prefixem, vzestupným číslem od 1 a zadanou příponou všechny soubory v daném adresáři. - skript se bude spouštět z aktivního adresáře s množstvím souborů k přejmenování - skript v cyklu vezme první soubor, přejmenuje jej a pokračuje na druhý... atd. - skript se chrání před přejmenováním sebe sama - během práce skript vypisuje pořadové číslo zpracovaného souboru - po přejmenování všech souborů ve složce se sám ukončí 2. Příprava ke konstrukci skriptu - v ~ si vytvořte adresář (např. rename ) a v něm vytvořte prázdný soubor: - s názvem ren_all.sh a dáme mu příznak spustitelný (+x) [analytic@analytic rename]$ touch ren_all.sh [analytic@analytic rename]$ chmod a+x ren_all.sh - libovolným editorem (např. mcedit, nano, krusader) editujte soubor:
3. Postupná konstrukce skriptu Cíl práce skriptu: Výchozí stav (různé názvy) Cíl (jednotný název)
4. Psaní a ladění rozbor řádek! Nejprve pracujeme společně, po dokončení budete řešit modifikace sami 1. Úvodní sekvence skriptu #!bin/bash echo "Zadej nové jméno souboru" read new echo "Zadej příponu" read pr2 prip=0 Dává informaci interpetu, pro jaký shell je skript napsán pro BASH - Skript vyzve uživatele k zadání prefixu jména a uloží do proměnné new, stejně tak názvu přípony do proměnné pr2 - Proměnnou pro pořadí vynuluje prip=0 2. Cyklus for name in `ls *.*` ; do prip=$(($prip+1)) echo $prip if [ "$name" == "ren_all.sh" ]; then continue; fi Cyklus- každý průchod: 1.Vezmi z výpisu adresáře jméno souboru pro každý nastavený poziční parametr (tedy zpracuje každou položku postupně) Hodnotu přípony jména zvětším o 1 a vypiš toto pořadí průchodu 2. Testuji, zda nechci přejmenovat sám sebe, pokud ano, pokračuji na další iteraci cyklu
4. Pokračování skriptu 3. Pokračování v cyklu rn=$(echo $name $new"_"$prip"."$pr2) mv `echo $rn` done 4. Ukončení skriptu exit Do proměnné rn si skript připraví nové jméno souboru. Např: picture_01.jpg Přejmenuje soubor podle připraveného názvu v proměnné $rn Po provedení operace se souborem se cyklus vrací na začátek a zpracuje další soubor. Po zpracování všech souborů se skript ukončí příkazem exit.
4. Psaní a ladění prostředí - Chování skriptu během psaní neustále kontrolujeme Při ladění využíváme # Komentáře k psaní poznámek proč tam co píšeme, za měsíc bychom to zaručeně zapomněli Během chodu skriptu pomocí echo - kontrolujeme chování a správnost ukládání dat do proměnných - správně používáme uvozovky, závorky a apostrofy mv `echo $rn` Obsah v apostrofech se vykoná a doplní příkaz. Např.: mv IMG_005.JPG picture_01.jpg "$name" dvojité uvozovky umožní vypsat obsah proměnné picture '$name' jednoduché uvozovky by vypsaly jen string $name nevypsal by se obsah proměnné. Chrání obsah před vykonáním.
5. Hotový skript spuštění a výsledek - skript spustíme z aktuálního adresáře $sh rename_all.sh Skript: - se nakopíruje do aktuálního adresáře - spustí se příkazem sh - skript provede naprogramovanou operaci - vypíše pořadí zpracovaných souborů - ukončí se - souborovým manažerem zkontrolujeme, jak skript pracoval
6. Praktické náměty k využití skriptu - Tímto mechanismem lze zpracovat všechny soubory v adresáři - lze např upravit tak, že změní velikost všech obrázků v adresáři (tato úprava je v příloze DUMu - lze upravit tak abychom s jeho pomocí jednoduše získali vedle originálních obrázků i jejich stejnojmenné náhledy Umístěné v podadresáři pro pro webové album Úkol: - předpokládáme adresář s originály fotek *.jpg a chceme zhotovit webové album - upravte skript tak, aby v aktuálním adresáři vytvořil podadresář, do něj nakopíroval originální soubory obrázků jpg a přejmenoval je identickým jménem jako v počátečním adresáři. - výchozí a cílový stav Vašeho řešení by měl vypadat takto:
Přehled použité literatury a děl: Pokud není uvedeno jinak, autorem použitých mediálních příloh (obrázků, textů, interaktivních materiálů) a BASH skriptů je autor tohoto digitálního učebního materiálu. Seznam použitých zdrojů: 1. Kolektiv: Wiki - dokumentace projektu Fedora CZ. Dostupné na Internetu: http://wiki.fedora.cz/doku.php?id=navody:prirucka:obsah 2. Fuchs,J.: BASH-I až VI.Seriál abclinuxu.cz, 6 dílů. Dostupné na Internetu: http://www.abclinuxu.cz/clanky/navody/bash-i, abclinuxu.cz 2003 3.Kolektiv,: bash. Wikikniha. Dostupné na Internetu: http://cs.wikibooks.org/wiki/bash, Wikiknihy, 2012 4. Hatina,P.: Linux v příkazech - práce se soubory a adresáři, Dostupné na Internetu: http://www.linuxsoft.cz/article.php?id_article=260 Linuxsoft.cz. 2004