SO_Lab_05_NST - Politechnika Lubelska
Transkrypt
SO_Lab_05_NST - 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. 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 b) Wybierz z pliku „wyrazenia” linie zawierające słowo „rysia”. 2. rower ma rysia ma rysia sierotka c) Wybierz z pliku „wyrazenia” linie zawierające ciąg znaków „ow”. 1. owoc 2. rower ma rysia 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, 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 e) Wybierz z pliku „wyrazenia” linie kończące się literą „a”. 2. rower ma rysia 5. plyta arkana ma rysia sierotka f) 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. arkana ananas aarc ma rysia sierotka g) Wybierz z pliku „wyrazenia" linie kończące się literą „c”, „m” lub „s”. 1. owoc 3. dom ananas aarc h) Wybierz z pliku „wyrazenia" linie nie kończące się literą „a”. 1. owoc 3. dom 4. auto ananas aarc i) 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. j) 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 © Kamil Żyła, Instytut Informatyki, Politechnika Lubelska 2 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) 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 © Kamil Żyła, Instytut Informatyki, Politechnika Lubelska 3 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”. 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 \; © Kamil Żyła, Instytut Informatyki, Politechnika Lubelska 4 {} – 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. 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”. Inspiracją dla dzisiejszych zajęć, był artykuł: http://jakilinux.org/konsola/wyszukiwanie-wyrazenia-regularne/ http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html http://www.linux.net.pl/~wkotwica/doc/find/find_3.html © Kamil Żyła, Instytut Informatyki, Politechnika Lubelska 5