PSK3-10

Název školy: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3
Autor: Ing. Marek Nožka
Anotace: Ovládání příkazového interpretu -- samostatná práce
Vzdělávací oblast: Informační a komunikační technologie
Předmět: Počítačové sítě a komunikační technika (PSK)
Tematická oblast: Operační systém Linux/Unix
Výsledky vzdělávání: Žák samostatně vytvoří jednoduchý skript pro příkazové prostředí
Klíčová slova: Linux, Unix, shell, bash, skript
Druh učebního materiálu: Online návod pro samostatné cvičení
Typ vzdělávání: Střední vzdělávání, 4. ročník, technické lyceum
Ověřeno: VOŠ a SPŠE Olomouc; Třída: 4L
Zdroj: Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele

Shell -- samostatná práce

Shell

Soubory

Procesy

Skript I

Vytvořte skript, který vás upozorní na změny v rozvrhu. Změny v rozvrhu se nachází na http://www.spseol.cz/data/rozvrhy/suplobec.htm. Dále budete potřebovat:

Řešení

   1 #!/bin/bash
   2 
   3 TRIDA=4L
   4 
   5 # rolování
   6 mv suplovani suplovani-old
   7 
   8 wget -O - http://www.spseol.cz/data/rozvrhy/suplobec.htm | 
   9     cstocs cp1250 ascii |  # zbavím se diakritiky
  10     html2text  |           # vyrendruji HTML
  11     egrep -i "$TRIDA|[0-9]+.[0-9]+.[0-9]+"  |  # zobrazím jen řádek s datem a třídou
  12     tee suplovani     # zapíšu na výstup a navíc do souboru
  13 
  14 
  15 if (! cmp suplovani suplovani-old &>/dev/null;)&&(egrep -i $TRIDA suplovani &>/dev/null ;); then
  16     # pošlu si výpis na mail 
  17     # ale jen za předpokladu, že od minulého spuštění se něco změnilo 
  18     # a zároveň
  19     # je moje třída obsažena ve výpisu
  20     mail -s suplovani nozka@spseol.cz <suplovani  
  21 fi
  22 
  23 
  24 # Tento skript naplánuje spuštění sebe sama za 20 minut
  25 at now + 20 minutes   <<EOF
  26 $0 &>/dev/null
  27 EOF
  28 
  29 

`--> stáhnout

Skript II

Vytvořte skript, který přejmenuje soubory tak, aby jejich jméno obsahovalo datum poslední změny souboru:

soubor.txt --> 2012_09_28-soubor.txt

Budeme potřebovat

Řešení

   1 #!/bin/bash
   2 
   3 for soubor in "$@"; do
   4     # jestliže soubor existuje
   5     if [ -f $soubor ]; then
   6         datum=$(ls -l --time-style="+%F" $soubor | cut -d ' ' -f 6 )
   7         jmeno=$(basename $soubor)
   8         adresar=$(dirname $soubor)
   9         mv -v $soubor $adresar/${datum}_${jmeno}
  10     fi
  11 done

`--> stáhnout