Laboratorium 5 - Politechnika Lubelska

Transkrypt

Laboratorium 5 - Politechnika Lubelska
1. Wyrażenia regularne
Symbole w wyrażeniach regularnych1:
Aby wyświetlić linie zawierające słowo ‘Mouse’ z informacji dziennika zdarzeń jądra
systemu, można użyć poniższego polecenia. dmesg wyświetla dziennik; | przekierowuje
rezultat pierwszego polecenia (dmesg) do drugiego polecenia (grep Mouse), które w tym
przypadku wyszukuje wystąpienia frazy ‘Mouse’ w rezultacie pierwszego polecenia.
dmesg | grep Mouse
a) Napisz do czego służy polecenie grep.
b) Napisz do czego służą następujące przełączniki polecenia grep: -c, -n, -w, -x.
Załóż w katalogu „roboczy” plik tekstowy o nazwie „wyrazenia” i o następującej zawartości
(ważne jest, aby plik miał poniższą strukturę z dokładnością do spacji):
1. owoc
2. rower ma rysia
3. dom
4. auto
5. plyta
arkana
ananas
aarc
ma rysia sierotka
c) Wybierz z pliku „wyrazenia” linie zawierające słowo „rysia”.
2. rower ma rysia
ma rysia sierotka
1
Tabela pochodzi ze strony http://jakilinux.org/konsola/wyszukiwanie-wyrazenia-regularne/
© Kamil Żyła, Instytut Informatyki, Politechnika Lubelska
1
d) Wybierz z pliku „wyrazenia” linie zawierające ciąg znaków „ow”.
1. owoc
2. rower ma rysia
e) Wybierz z pliku „wyrazenia” linie, które zaczynają się od liczb z przedziału od 1 do 6,
zawierają dwa dowolne znaki, literę „a”, a za nią dowolny ciąg znaków.
4. auto
f) Wybierz z pliku „wyrazenia” linie kończące się literą „a”.
2. rower ma rysia
5. plyta
arkana
ma rysia sierotka
g) Wybierz z pliku „wyrazenia” linie zawierające dowolny ciąg znaków zaczynający się i
kończący się literą „a”. Przekonaj się, że wyrażenie regularne „a*a” da rezultaty
niezgodne z poleceniem.
2. rower ma rysia
arkana
ananas
aarc
ma rysia sierotka
h) Wybierz z pliku „wyrazenia" linie kończące się literą „c”, „m” lub „s”.
1. owoc
3. dom
ananas
aarc
i) Wybierz z pliku „wyrazenia" linie nie kończące się literą „a”.
1. owoc
3. dom
4. auto
ananas
aarc
j) Wybierz z pliku „wyrazenia” linie kończące się literą „a” i jednocześnie zawierające
co najmniej dwie litery „a”.
arkana
ma rysia sierotka
Aby przy użyciu jednego polecenia grep wyświetlić (suma zbiorów)
- linie z pliku ‘wyrazenia’, które zaczynają się od liczb z przedziału od 1 do 6, zawierają
dwa dowolne znaki, literę ‘a’, a za nią dowolny ciąg znaków
- oraz linie zawierające dowolny ciąg znaków zaczynający się i kończący się literą ‘a’,
można użyć poniższego polecenia:
grep ‘\(^[1-6]..a\)\|\(a.*a\)’ wyrażenia.txt
W wyrażeniu powyżej użyto znaków, które bash traktuje jako znaki specjalne. Aby to ominąć,
postawiono przed nimi znak \, a całość zamknięto w cudzysłów, aby uniknąć interpretowania
przez bash tego wyrażenia (zrobi to grep). Nawiasy grupują 2 wyrażenia, | oznacza sumę
zbiorów.
k) Wybierz z pliku „wyrazenia” linie zaczynające się od cyfry 1 lub 4.
© Kamil Żyła, Instytut Informatyki, Politechnika Lubelska
2
1. owoc
4. auto
l) Wybierz z pliku „wyrazenia” linie (suma zbiorów) kończące się na literę ‘a’ oraz
zaczynające się od 1 lub 2.
1. owoc
2. rower ma rysia
5. plyta
arkana
ma rysia sierotka
Bardzo krótkie wyrażenie regularne opisujące poprawny adres e-mail zgodnie ze
standardem RFC 2822:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[az0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z09])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][09]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Znajdź błąd :)
http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
2. Wyszukiwanie plików
find – przeszukuje drzewo katalogów w poszukiwaniu plików lub katalogów o podanej nazwie
lub jej części, lub o podanych kryteriach.
Składnia polecenia:
find katalogi_startowe kryterium_wyszukiwania operacje_na_elementach
Opcje:
1. – name nazwa – wyszukuje pliki i katalogi o podanej nazwie lub jej części (zaczyna
od bieżącego katalogu w dół drzewa)
2. – type typ – wyszukuje elementy o określonym typie
b – urządzenie blokowe
c – urządzenie znakowe
d – katalog
f – zwykły plik
l – dowiązanie symboliczne
s - gniazdo
3. – size wartosc – zwraca pliki o zadanym rozmiarze ( + -> większe niż wartosc;
- -> mniejsze niż wartosc)
© Kamil Żyła, Instytut Informatyki, Politechnika Lubelska
3
c – bajty
k – kilobajty
M – megabajty
G - gigabajty
4. – atime n – ostatni dostęp miał miejsce n dni temu
5. – mtime n – plik został zmodyfikowany n dni temu
6. – newer plik – wyszukiwany plik został zmodyfikowany wcześniej niż podany plik
7. – links n – plik zawiera dokładnie n twardych dowiązań
8. – perm p – plik ma uprawnienia, gdzie p, to liczbowy tryb dostępu
9. – user użytkownik – właścicielem jest użytkownik
10. – group grupa – właścicielem pliku jest grupa
11. – empty – puste pliki
12. – maxdepth – ile poziomów wgłąb przeszukać
Operacje liczbowe można poprzedzać znakami + i -, wtedy to znaczy więcej i mniej niż
podana wartość.
Operacje na danych:
1. – print – domyślna operacja, wypisuje nazwy z adresami
2. – ls – wypisuje nazwy tak, jak –lids
3. – exec – wykonanie dowolnego polecenia na znalezionych plikach
4. – prune – find nie wchodzi do wskazanych katalogów
5. – ok – działa jak exec, ale przed każdą operacją użytkownik jest proszony o
potwierdzenie działania
Przykład na prune dla jednego i wielu katalogów:
Z. ~
| - joe
| - joe.txt
| - proba
|
| - jan
|
| - roman
| - proba1
| - jan
1) Szukać plików zaczynających się na ‘j’, nie przeszukiwać katalogu ‘proba’
find . –path ‘*/proba’ –prune –o –name ‘j*’ –print
2) Szukać plików zaczynających się na ‘j’, nie przeszukiwać katalogu ‘proba’ i ‘proba1’
find . –path ‘*/proba’ –prune –o –path ‘*/proba1’ –prune –o
–name ‘j*’ -print
a) W katalogu domowym utwórz pusty plik wykonywalny o nazwie „testxt”.
b) Wyszukaj przy pomocy find wszystkie katalogi w katalogu domowym. Nie
przeszukuj podkatalogów katalogu domowego!
c) Wyszukaj w katalogu domowym, przy pomocy find, katalog o nazwie „Pulpit”.
d) W katalogu „/var/log” wyszukaj pliki z rozszerzeniem „.log”, które mają więcej niż
2kB i zapisz ich listę do pliku „2kb.txt”.
© Kamil Żyła, Instytut Informatyki, Politechnika Lubelska
4
e) Wyszukaj w katalogu domowym, przy pomocy find, puste pliki należące do
użytkownika „student”.
f) Wyszukaj w katalogu domowym, przy pomocy find, pliki o nazwach
rozpoczynających się od znaku „2” lub „t”.
g) Wyszukaj w katalogu domowym, przy pomocy find, pliki o nazwach 6-znakowych.
Wyłącz z wyszukiwania katalog „Pulpit”.
W katalogu ‘/var’, przy pomocy find, znajdź pliki, których wielkość zawiera się w
przedziale [2;5] kB i skopiuj je do katalogu ‘test-kosz’.
find /var –type f –size +2k –size –5k –exec cp {} ~/test-kosz \;
{} – cały zbiór wyników
\; - zakończenie polecenia do wykonania na wyniku wyszukiwania, pozwala na umieszczenie
kolejnego bloku –exec
h) Wyszukaj w katalogu domowym, przy pomocy find, wszystkie pliki o
uprawnieniach 644.
i) Wyszukaj w katalogu domowym, przy pomocy find, wszystkie pliki wykonywalne.
Policz odnalezione pliki.
j) Wykonaj polecenie ls –l na plikach z rozszerzeniem „.log” wyszukanych przez
find w katalogu „/var/log”. Rezultat polecenia przekieruj do pliku
„~/roboczy/logfiles”.
k) Wyszukaj w katalogu domowym, przy pomocy find, pliki nowsze niż plik o nazwie
„testxt”.
l) Opisz działanie polecenia:
find /var -type d 1>> ./output 2>./errors
m) Opisz działanie polecenia:
find /var -type d &> ./together
Inspiracją dla dzisiejszych zajęć, był artykuł:
http://jakilinux.org/konsola/wyszukiwanie-wyrazenia-regularne/
Przydatne linki:
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
http://www.thomas-krenn.com/pl/wiki/Przekierowanie_sdtout_i_stderr_w_bashu
http://www.linux.net.pl/~wkotwica/doc/find/find_3.html
© Kamil Żyła, Instytut Informatyki, Politechnika Lubelska
5

Podobne dokumenty