Search
Nastudujte použití regulárních výrazů a nástroje pro zpracování textu (alespoň zběžně grep, sed a tr):
Vytvořte skript v jazyce BASH, podle následujících požadavků:
.sh
skript.sh [OPTIONS] [FILE…]
FILE
-h vypíše stručnou nápovědu a ukončí skript. Kdykoliv je zadán, ostatní následující přepínače jsou ignorovány.
-h
-i <prefix> provede změnu názvů souborů v direktivě #include ve všech souborech FILE tak, že <prefix> přidá na začátek názvu souboru. Uvažujte obě varianty direktivy #include – jak pro soubory z aktuálního adresáře (“foo.h”) tak pro systémové knihovny (<foo.h>). Například pro -i lib/, bude #include “foo.h” změněno na #include “lib/foo.h”.
-i <prefix>
#include
<prefix>
“foo.h”
<foo.h>
-i lib/
#include “foo.h”
#include “lib/foo.h”
-r změní konvenci názvů funkcí použitých v souborech FILE (definice, deklarace a jejich volání). Pokud je název funkce tvořen slovy oddělenými jedním podtržítkem, odstraní podtržítka a pokud je následující znak písmeno změní ho z malého na velké. Jako slovo je považována kombinace malých písmen a číslic o jednom či více znacích. Například toto_je_funkce_2_priklad() se změní na totoJeFunkce2Priklad(). Nebude se měnit: _func(), _func_xy(), sin_Cos(), remove_allX() a internal__func(). Předpokládejte, že mezi názvem funkce a levou závorkou není žádný komentář ani konec řádku.
-r
toto_je_funkce_2_priklad()
totoJeFunkce2Priklad()
_func()
_func_xy()
sin_Cos()
remove_allX()
internal__func()
(nepovinné, 1 bod) -f <regex> v kombinaci s -r omezí refaktoring jen na funkce, jejichž jméno odpovídá regulárnímu výrazu <regex>. (priklad: uloha2.sh -r -f '^my' *.c změní pouze názvy funkcí začínajících “my”)
-f <regex>
<regex>
uloha2.sh -r -f '^my' *.c
při zadání přepínačů -i i -r skript vykoná obě funkce, bez těchto přepínačů skript soubor nezmění
-i
při zadání jiného přepínače skript vypíše nápovědu a skončí s návratovou hodnotou 1
sed 's/./\U&/'
tr '[:lower:]' '[:upper:]'
echo >&2 …
set -x
Regulární výrazy
Předpokládáme, že máte základní znalosti jazyka C a víte, jak funguje překlad ze zdrojových kódů jazyka C do binární spustitelné aplikace (v obecném případě, kdy je zdrojových souborů více).
Dále byste měli mít alespoň minimální povědomí o použití překladače gcc a jeho základních parametrech (gcc)
Nastudujte si použití nástroje make pro překlad programu v jazyku C/C++: make
Dále je pro absolvování cvičení nutné mít přehled o systémových voláních fork, pipe, dup, open, kill, wait a exec, tzn. měli byste vědět jak vzniká nový proces a jak lze přesměrovat standardní vstup a výstup. Potřebné informace se dozvíte na některé z předchozích přednášek.