Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 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
Př. Linux, skript, BASH,cyklus, přepínač, příkaz, znak, soubor, adresář
Druh učebního materiálu Prezentace s prvky interaktivity Druh interaktivity Cílová skupina
Kombinované Žáci 3. ročníku
Stupeň a typ vzdělávání
Odborné vzdělávání
Typická věková skupina
16 - 19 let
Celková velikost
Velikost materiálu v kB :
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL
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:
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 3. Postupná konstrukce skriptu Cíl práce skriptu: Výchozí stav (různé názvy)
Cíl (jednotný název)
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 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
Dává informaci interpetu, pro jaký shell je skript napsán – pro BASH
echo "Zadej nové jméno souboru" read new echo "Zadej příponu" read pr2 prip=0
- 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
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 4. Pokračování skriptu 3. Pokračování v cyklu rn=$(echo $name $new"_"$prip"."$pr2)
Do proměnné rn si skript připraví nové jméno souboru. Např: picture_01.jpg
mv `echo $rn`
Přejmenuje soubor podle připraveného názvu v proměnné $rn
done
Po provedení operace se souborem se cyklus vrací na začátek a zpracuje další soubor.
4. Ukončení skriptu exit
Po zpracování všech souborů se skript ukončí příkazem exit.
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 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.
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 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
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL 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:
Střední odborná škola a Střední odborné učiliště, Hořovice DIGITÁLNÍ UČEBNÍ MATERIÁL
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