Systemy operacyjne materiaªy ¢wiczeniowe
Studia dzienne PJWSTK
WICZENIA III
Wyra»enia regularne
• wyra»enie regularne ci¡g znaków zwykªych (litery, cyfry, znaki) wraz z znakami specjalnymi
• podstawowe znaki specjalne:
◦ . dopasowanie dodolnego znaku zwykªego, np.
a.a = {aaa, aba, ..., aAa, aBa, ..., a0a, a1a, ...}
◦ $ dopasuj popdrzaj¡ce operator wyra»enie regularne do ko«ca wiersza, np.
a$ = {a, aa, ba, ..., aaa, aba, ..., aaaa, aaba, ...}
◦ ^ dopasuj wyst¦puj¡ce po operatorze wyra»enie regularne do pocz¡tku wiersza, np.
^a = {a, aa, ab, ..., aaa, aab, ..., aaaa, aaab, ...}
◦ * dopasuj zero albo wi¦cej wyst¡pie« znaku poprzedzaj¡cego operator, np.
a* = {a, aa, aaa, aaaa, aaaaa, ...}
◦ \ pomini¦cie specjalnego znaczenia znaku wyst¦puj¡cego po operatorze, np.
\.. = {.a, .b, ..., .A, .B, ..., .0, .1, ...}
◦ [] dopasuj dowolny znak z zestawu mi¦dzy nawiasem [ oraz nawiasem ], np.
[abc123] = {a, b, c, 1, 2, 3}
◦ [^] dopasuj dowolny znak nie nale»¡cy do zestawu mi¦dzy nawiasem [ oraz nawiasem ], np.
[^abc123] = {d, e, ..., z, A, B, ..., Z, 3, 4, ..., 9, ...}
• polecenia u»ywaj¡ce wyra»e« regularnych grep, awk, ed, emacs, ...
Skrypty
• uruchamianie skryptu:
◦ bash <nazwa_skryptu> uruchomienie jawne
◦ chmod u+x <nazwa_skryptu> zmiana uprawnie«
./<nazwa_skryptu> uruchomienie niejawne
◦ bash -x <nazwa_skryptu> wypisanie wykonywanych polece«
• echo polecenie drukowania znaków na standardowym wyj±ciu, np.
echo URUCHAMIAM SKRYPT...;
ls -al;
echo KONCZE SKRYPT...;
• wyliczanie warto±ci wyra»e«
◦ polecenie expr, np.
expr 2 + 2
◦ polecenie $[], np.
echo $[ 2 + 2 ]
◦ polecenie $(()), np.
echo $(( 2 + 2 ))
1
c
° Paweª Rembelski
Systemy operacyjne materiaªy ¢wiczeniowe
Studia dzienne PJWSTK
• testowanie warunków
◦ polecenie expr, np.
expr 2 = 2
Uwaga! W przypadku testowania warunków, polecenie expr jest maªo efektywne.
◦ polecenie test, np.
test 2 -eq 2
Uwaga! Wynik zwracany przez kod wyj±cia polecenia.
◦ polecenie [], np.
[ 2 -eq 2 ]
Uwaga! Wynik zwracany przez kod wyj±cia polecenia.
• instrukcja warunkowa
if <test warunku>; then
<ci¡g instrukcji>;
fi
albo
if <test warunku>; then
<ci¡g instrukcji>;
else
<ci¡g instrukcji>;
fi
np.
echo URUCHAMIAM SKRYPT...;
if [ `pwd | wc -c` -ge 10 ]; then
echo KONCZE SKRYPT (1)...;
else
echo KONCZE SKRYPT (2)...;
fi
Zadania
1. Napisz skrypt, który zliczy wszystkie rozsze»enia plików nieukrytych znajduj¡cych si¦ w aktualnym katalogu (zakªadamy, »e pierwszy znak . rozpoczyna rozsze»enie pliku).
2. Napisz skrypt, który wypisze liczb¦ wszystkich niewidocznych plików i katalogów (zaczynaj¡cych si¦ znakiem .) znajduj¡cych si¦ w aktualnym katalogu.
3. Napisz skrypt, który wypisze liczb¦ wszystkich plików z rozsze»eniem txt w poddrzewie aktualnego katalogu (ª¡cznie z plikami w katalogu korzeniu).
4. Napisz skrypt, który wypisze pierwsze trzy litery nazw plików posortowanych wzgl¦dem minut czasu ich utworzenia.
5. Napisz skrypt, który wypisze posortowane minuty czasów utworzenia 75% (w zaokr¡gleniu do doªu) najwi¦kszych plików w bie»¡cym katalogu.
6. Napisz skrypt, który wypisze nazwy plików znajduj¡cych si¦ w aktualnym katalogu zaczynaj¡ce si¦
od dowolnej litery od c do z a nast¦pnie dowolnej liczby liter a (tak»e zerowej).
7. Napisz skrypt, który wypisze pierwsze trzy liter nazw plików znajduj¡cych si¦ w aktualnym katalogu o nieparzystych numarach miejsc wyznaczonych przez sortowanie leksykograczne.
2
c
° Paweª Rembelski
Systemy operacyjne materiaªy ¢wiczeniowe
Studia dzienne PJWSTK
8. Napisz skrypt, który wypisze 0 je»eli w aktualnym katalogu suma znaków tworz¡cych nazwy wszystkich plików (wraz z ich rozsze»eniami) jest nieparzysta, wypisze 1 w p.p.
9. Napisz skrypt, który wypisze liczb¦ wszystkich plików w poddrzewie aktualnego katalogu (ª¡cznie z plikami w katalogu korzeniu), je»eli liczba plików wyst¦puj¡cych bezpo±rednio w aktualnym katalogu równa jest liczbie jego bezpo±rednich podkatalogów.
10. Napisz skrypt, który je»eli aktualny katalog zawiera bezpo±rednio co najmniej jeden plik, to wypisze liczb¦ wszystkich podkatalogów w poddrzewie aktualnego katalogu.
3
c
° Paweª Rembelski