konspekt1 - asso-zs1
Transkrypt
konspekt1 - asso-zs1
2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI PODSTAWOWE POLECENIA I FILTRY W SYSTEMIE OPERACYJNYM UNIX/LINUX 1 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przegląd istotnych cech powłoki (ang. shell) • Proste i złoŜone polecenia ( ; $ $ $ $ • ls cp cp ps & | –l /bin old new && rm old old new || rm old | grep sshd || ) rm jeŜeli cp rm jeŜeli nie cp przekierowanie wyjścia ps na wejście grep Procesy drugoplanowe (ang. background), sterowanie wraca do powłoki, bez oczekiwania na zakończenie procesu, zwracany jest kod zakończenia 0 $ /usr/local/bin/netscape & $ cmd1 & cmd2 & cmd3 $ cmd1 ; cmd2 ; cmd3 • && Przekierowywanie wejść/wyjść ( < $ ls -l > my_files $ cat < input.data $ date >> logs równoległe wykonanie trzech poleceń sekwencyjne wykonanie trzech poleceń > >> ) zamiast do stdout (1) dane do my_files zamiast z stdin (0) dane z input.data zamiast do stdout (1) dołącza dane do logs 2 / 81 1 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przegląd istotnych cech powłoki (ang. shell) • „Dzikie karty” $ ls file* • Zmienne powłoki i środowiska $ PATH=$PATH:. • Zastosowanie znaku tyldy $ cd ~kornj • Zasady przywoływania $ file="foo" $ cat "my file" my file my file $ cat "my $file" my foo $ cat 'my $file' my $file $ cat my file 3 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Cechy interakcyjności • • • • • • • Pamiętana jest historia poleceń Edytowanie linii poleceń Dopełnianie nazwy pliku (przycisk tab) Dopełnianie polecenia Wiązanie kluczy Korekta pisowni Kontrolowanie zadań 4 / 81 2 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Skrypty na poziomie powłoki • Skrypt powłoki jest plikiem tekstu regularnego, który zawiera polecenia powłoki lub UNIX • Przed wykonaniem skryptu naleŜy nadać mu prawa wykonania • Skrypty są bardzo uŜyteczne podczas automatyzacji powtarzających się zadań, zwłaszcza czynności administratora oraz do przechowywania poleceń, które maja być wykonane w przyszłości 5 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Języki skryptowe a język C • Korzyści ze stosowania skryptów powłokowych – – – – Łatwa współpraca z innymi programami Prosta praca z plikami Prosta praca z napisami Brak konieczności kompilacji • Braki skryptów powłokowych – Wolniejsze niŜ program napisany w C – Niezbyt dobrze przystosowane do potrzeb projektowania algorytmów i struktur danych 6 / 81 3 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Podstawowe narzędzia do operowania na plikach i katalogach • pwd • • • • • • • cat more, less ls rm mv cp touch • ed, vi, emacs, nano podaje nazwę aktualnego katalogu łączy pliki pokazują zawartość pliku listuje zawartość katalogu usuwa plik zmienia nazwę pliku kopiuje plik tworzy pusty plik lub aktualizuje datę jego modyfikacji edytory tekstu 7 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Podstawowe narzędzia do operowania na plikach i katalogach • • • • • • • ln tworzy dowiązanie do pliku mkdir i rmdir tworzy i usuwa katalog mount, umount zarządzają punktami montowania lpr wydruk zawartości pliku wc podlicza słowa, znaki w pliku diff porównuje zawartość dwóch plików file identyfikuje typ pliku 8 / 81 4 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenia operowania atrybutami pliku • chmod • chown • chgrp zmiana praw dostępu do pliku zmiana właściciela pliku zmiana grupy związanej z plikiem • Tylko właściciel lub super uŜytkownik mogą zmieniać atrybuty pliku • Po utworzeniu pliku domyślne prawa przypisywane plikowi są modyfikowane przez wartość przypisana za pomocą polecenia umask 9 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Prawa dostępu - - - - - - - - r w x r w x r w x user group others --------- 000 rwxr-x--- 750 user: read, write, execute group: read, execute rw----rw- 606 user: read, write others: read, write 10 / 81 5 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie chmod Tryb dostępu symbolicznego [ugoa…][+–=][rwxs] przykład: chmod a+r file Tryb dostępu oktalnego (suid, sgid | user | group | others) oktalnie read write execute 0 1 2 3 4 5 6 7 no no no no yes yes yes yes no no yes yes no no yes yes no yes no yes no yes no yes przykład: chmod 400 file 11 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenia zarządzania procesami • ps • kill • wait • nohup • sleep • nice monitoruje stan procesów wysyła podany sygnał do określonego procesu (domyślnie TERM) proces rodzicielski czeka na zakończenia wykonywania się procesu potomnego czyni polecenie odpornym na sygnały hangup i terminate przejdź w stan uśpienia na okres czasu podany w sekundach uruchom procesy ze zmodyfikowanym priorytetem 12 / 81 6 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Wprowadzenie do filtrów • Klasa narzędzi systemu Unix nazywana filtrami. – Narzędzia, które czytają ze standardowego wejścia, przekształcają (obrabiają) plik i wynik zapisują na standardowe wyjście • Stosowanie filtrów moŜe rozumiane jako programowanie zorientowane na dane. – KaŜdy krok obliczeń filtra przekształca strumień (ang. stream) danych. 13 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykłady filtrów • sort – wejście: linie danych z pliku – wyjście: posortowane linie z pliku • grep – wejście: linie danych z pliku – wyjście: linie, które odpowiadają zdefiniowanemu wzorcowi • awk – filtr programowalny (interpretowalny język wyszukiwania i przetwarzania wzorców) 14 / 81 7 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Programy w systemie UNIX • Źródła wejść: – Argumenty programu [informacja strująca] – Zmienne środowiskowe [informacje o stanie] – Standardowe wejście [dane] • Elementy wyjścia: – Zwracany kod statusu [informacje sterujące] – Standardowe wyjście [dane] – Standardowe wyście diagnostyczne [komunikaty o błędach] 15 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Potoki • Wyjście jednego programu staje się wejściem następnego – Wykorzystywana jest koncepcja potoków systemu UNIX • Przykład: $ who | wc -l – Oblicza liczbę zalogowanych uŜytkowników • Potoki mogą być długie i złoŜone 16 / 81 8 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI cat: najprostszy filtr • Polecenie cat kopiuje bez zmian swoje wejście na wyjście (filtr toŜsamościowy). Gdy na wejście podana zostanie lista plików, wtedy filtr łączy je i przekierowuje na standardowe wyjście stdout • • Niektóre opcje: -n numeruje linie wyjściowe (począwszy od 1) -v wyświetla znaki kontrolne w postaci widocznej (np. ^C) cat file* ls | cat -n 17 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI W czym tkwi róŜnica? • Oba przedstawione poniŜej polecenia przesyłają dane do polecenia (command) z pliku zamiast z klawiatury (standardowego wejścia): $ cat file | command lub $ command < file 18 / 81 9 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Dodatkowy proces $ cat file | command cat command $ command < file command 19 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie head • Pokazuje kilka pierwszych linii ze wskazanego pliku • Składnia: head [-n] [filename...] -n – liczba wyświetlanych danych, domyślnie jest ich 10 filename... – lista nazw wyświetlanych plików • W przypadku podania więcej niŜ jednej nazwy pliku, początek kaŜdego wyświetlanego pliku poprzedzony jest napisem – ==>filename<== 20 / 81 10 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie tail • Pokazuje końcowa część pliku • Składnia: tail +|-numer [lbc] [f] [filename] lub: tail +|-numer [l] [rf] [filename] +numer – kopiowanie rozpoczyna się w odległości numer jednostek danych od początku pliku; jeśli numer jest niezdefiniowany, to domyślnie jest równy 10 -numer – kopiowanych jest numer ostatnich jednostek danych z pliku l,b,c – jednostki numer wyraŜone są w liniach/blokach/znakach r – drukuje odwrotnym porządku (tylko linie) f – jeśli wejściem nie jest potok, to polecenie nie kończy się po napotkaniu końca pliku, ale czeka w pętli. Jest to przydatne w przypadku konieczności monitorowania pliku, który jest zapisywany przez inny proces. 21 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykłady poleceń head i tail head /etc/passwd head *.c tail +20 /etc/passwd ls -lt | tail -3 head –100 /etc/passwd | tail -5 tail –f /usr/local/httpd/access_log 22 / 81 11 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie tee Polecenie Unix Standardowe wyjście Lista plików • Kopiuje standardowe wejście do standardowego wyjścia i do jednego lub więcej plików – Przechwytuje natychmiast wyniki filtrowania danych w potoku 23 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie tee (cd.) • Składnia: tee [ -ai ] file-list -a – dopisuje do wyjściowego pliku (nie nadpisuje); domyślnie funkcjonuje nadpisywanie (zastępowanie) danych w pliku. -i - ignoruje przerwania file-list – jeden lub więcej plików przechwytujących wyjście • Przykłady ls | head –10 | tee first_10 | tail –5 who | tee user_list | wc 24 / 81 12 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Pliki tekstowe Unixa: ograniczniki danych Znak Tab John Anne Andrew Tim Arun Sowmya Znak | 99 75 50 95 33 76 COMP1011|2252424|Abbot, Andrew John |3727|1|M COMP2011|2211222|Abdurjh, Saeed |3640|2|M COMP1011|2250631|Accent, Aac-Ek-Murhg |3640|1|M COMP1021|2250127|Addison, Blair |3971|1|F COMP4012|2190705|Allen, David Peter |3645|4|M COMP4910|2190705|Allen, David Pater |3645|4|M Znak dwukropka root:ZHolHAHZw8As2:0:0:root:/root:/bin/ksh jas:nJz3ru5a/44Ko:100:100:John Shepherd:/home/jas:/bin/ksh cs1021:iZ3sO90O5eZY6:101:101:COMP1021:/home/cs1021:/bin/bash cs2041:rX9KwSSPqkLyA:102:102:COMP2041:/home/cs2041:/bin/csh cs3311:mLRiCIvmtI9O2:103:103:COMP3311:/home/cs3311:/bin/sh 25 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie cut: wybór kolumn • Polecenie cut moŜe drukować wybrana część linii wejściowych. – moŜna wybrać kolumny (domyślnie oddzielone znakami tabulacji) – moŜna wybrać zakres pozycji listowanych znaków • Niektóre opcje: -f listOfCols : drukuje tylko wybrane kolumny (oddzielone znakiem Tab lub innym określonym opcją -d) -c listOfPos : drukuje tylko znaki z określonych pozycji -d c : definiuje znak c jako separator kolumn • Listy podawane są w postaci zakresów (np. 1-5) lub znaków oddzielonych przecinkami (np. 2,4,5). 26 / 81 13 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykłady uŜycia cut cut -f 1 < data cut -f 1-3 < data cut -f 1,4 < data cut -f 4- < data cut -d'|' -f 1-3 < data cut -c 1-4 < data nie ma sposobu odwołania się do ostatniej kolumny bez obliczenia liczby kolumn 27 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie paste: łączenie kolumn • Polecenie paste wyświetla na wyjściu „równolegle” zawartość kilku plików tekstowych. • Jeśli wejściem sa pliki a, b, c, to – pierwsza linia wyjściowa składa się z pierwszych linii plików a, b, c – druga linia wyjściowa składa się z drugich linii plików a, b, c, – itd. • Linie z kaŜdego pliku sa oddzielane od siebie znakiem Tab. • Jeśli pliki sa róŜnej długości, na wyjściu wyświetlane są wszystkie linie z najdłuŜszego pliku z pustymi ciągami w miejsce brakujących linii plików krótszych. 1 2 1 2 3 4 5 6 3 4 5 6 28 / 81 14 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykład uŜycia polecenia paste cut -f 1 < data > data1 cut -f 2 < data > data2 cut -f 3 < data > data3 paste data1 data3 data2 > newdata 29 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie sort: sortowanie linii pliku • Polecenie sort kopiuje dane z wejścia na wyjście, dbając aby wyjście linie zostały uporządkowane zgodnie z Ŝądaniem. – Domyślnie sortowanie jest realizowane na podstawie porównania kodów ASCII całej linii. • Inne cechy polecenia sort: – rozróŜnia dane tekstowe, występujące w kolumnach (potrafi sortować według innych niŜ tylko pierwsza kolumna) – rozróŜnia liczby i właściwie je sortuje – moŜe sortować pliki pobierane z dysku jak równieŜ potrafi działać jako filtr danych wejściowych. – jest w stanie sortować bardzo duŜe pliki 30 / 81 15 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie sort: opcje • Składnia: sort [-dftnr] [-o filename] [filename(s)] -d porządek alfabetyczny (słownikowy); wpływ na porządek sortowania mają jedynie litery, cyfry i spacje -f ignoruje wielkość liter (tekst sortowany jest wg małych liter) -t określa ograniczniki kolumn -n porządek numeryczny, sortowanie zgodnie z wartościami arytmetycznymi, nie zaś wg pierwszej cyfry -r sortowanie w odwrotnym porządku -o filename – zapisuje wyjście do pliku o nazwie filename; nazwa pliku moŜe być nazwą pliku wejściowego • ... i wiele innych opcji. 31 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie sort: pozycje pól sortowania • Ogranicznik : -td • Stary sposób: +field1[.char1][options] [-field2[.char2][options] +2.1 –3 +0 –2 +3n Z wyłączeniem field2 Startuje od 0 (inaczej niŜ w przypadku cut, które staruje od 1) • Nowy sposób (POSIX): -k field1[.char1][options][,field2[.char2][options]] -k2.1 –k0,1 –k3n Włącznie z field2 Startuje od 1 32 / 81 16 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykłady uŜycia polecenia sort sort +2nr < data sort –k2nr data sort -t: +4 /etc/passwd sort -o mydata mydata 33 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie uniq: pomija powtarzające się elementy • Usuwa duplikaty wierszy z danych wejściowych • Składnia: uniq [ -cdu] [input-file] [ output-file] -c zawiesza działanie opcji -u i -d oraz generuje raport wyjściowy listując kaŜdy wiersz wraz z liczbą jego powtórzeń -d listuje jedynie powtarzające się wiersze -u listuje tylko te wiersze, które nie powtarzają się – Domyślnymi opcjami są przełączniki -d i -u 34 / 81 17 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie wc: wynik podsumowania • Narzędzie zliczania słów, wc, zlicza liczbę wierszy, znaków lub słów • Opcje: -l -w -c zlicza wiersze zlicza słowa zlicza znaki • Domyślnie: zlicza linie, słowa i znaki 35 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykład wc i uniq who | sort | uniq –d wc my_essay who | wc sort file | uniq | wc –l sort file | uniq –d | wc –l sort file | uniq –u | wc -l 36 / 81 18 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie tr: przekształcanie znaków • Kopiuje dane ze standardowego wejścia na standardowe wyjście z jednoczesnym zastępowaniem lub usuwaniem wybranych znaków • Składnia: tr [ -cds ] [ string1 ] [ string2 ] -d -c -s usuwa z wejścia wszystkie znaki zawarte w string1 uzupełnia znaki w string1 w odniesieniu do całego zbioru znaków ASCII kompresja wszystkich napisów powtarzanych znaków wyjściowych, występujących w string2 w pojedynczy znak. 37 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI tr (cd.) • tr czyta dane ze standardowego wejścia. – KaŜdy znak nie pasujący do znaków w string1 jest przesyłany bez zmian na standardowe wyjście – KaŜdy znak pasujący do znaków w string1 jest zamieniany na odpowiadający mu znak ze string2 przesyłany na standardowe wyjście • Przykłady: $ $ $ $ tr tr tr tr s z so zx a-z A-Z –d a-c zastępuje wszystkie wystąpienia s na z zastępuje wszystkie wystąpienia s na z oraz o na x zastępuje wszystkie małe litery wielkimi usuwa wszystkie znaki a-c 38 / 81 19 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI UŜycie tr • zmień ogranicznik $ tr ‘|’ ‘:’ • przepisz liczby $ tr ,. ., • importuj plik DOS \ Windows $ tr –d ’\r’ < dos_file • znajdź znaki ASCII w pliku binarnym $ tr –cd ’\n[a-zA-Z0-9 ]’ < binary_file 39 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Co to są wyraŜenia regularne? • WyraŜenie regularne (regex) opisuje zbiór moŜliwych napisów wejściowych. • WyraŜenia regularne są typowe dla systemu Unix, np. w: – vi, ed, sed i emacs – awk, tcl, perl i Python – grep, egrep, fgrep • WyraŜenia regularne wywodzą się z podstawowej koncepcji informatyki nazywanej gramatykami regularnymi, uŜywanymi w teorii automatów skończonych. 40 / 81 20 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI WyraŜenia regularne • Najprostszymi wyraŜeniami regularnymi są ciągi literałów dopasowywane do innych. • Mówi się, Ŝe ciąg znaków jest dopasowany do wyraŜenia regularnego, jeśli zawiera właściwy podciąg. 41 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykład wyraŜenia regularnego wyraŜenie regularne c k s UNIX Tools rocks. pasuje UNIX Tools sucks. pasuje UNIX Tools might suck. nie pasuje 42 / 81 21 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI WyraŜenia regularne WyraŜenia regularne mogą być dopasowane do łańcucha znaków (napisu) w więcej niŜ jednym miejscu. a p p l e wyraŜenie regularne Scrapple from the apple. dopasowanie 1 dopasowanie 2 43 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI WyraŜenia regularne WyraŜenie regularne w postaci . (kropka) pasuje do dowolnego znaku. wyraŜenie regularne o . For me to poop on. dopasowanie 1 dopasowanie 2 44 / 81 22 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Klasy znaków Znak klasy [] (nawias kwadratowy) jest uŜywany do dopasowania dowolnego wyspecyfikowanego zbioru znaków. wyraŜenie regularne b [eor] a t beat a brat on a boat dopasowanie 1 dopasowanie 2 dopasowanie 3 45 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Zanegowana klasa znaków Klasy znaków moŜna wykluczyć z procesu dopasowania za pomocą wyraŜenia o składni [^]. wyraŜenie regularne b [^eo] a t beat a brat on a boat pasuje 46 / 81 23 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Więcej o klasach znaków [aeiou] dopasowywuje do dowolnego znaku a, e, i, o lub u [kK]orn oznacza dopasowanie do korn lub Korn Klasy znaków mogą takŜe specyfikować zakresy znaków: – [1-9] oznacz to samo co zapis [123456789] – [abcde] jest równowaŜne [a-e] – MoŜna łączyć wiele zakresów [abcde123456789] jest rónowaŜne [a-e1-9] – ZauwaŜmy, Ŝe znak – ma specjalne znaczenie w obrębie klasy znaków tylko wtedy, gdy uŜyty jest do zdefiniowania zakresu, [-123] oznaczałby dopasowanie do znaków -, 1, 2 lub 3 47 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Nazwana klasa znaków • Do powszechnie stosowanych klas znaków moŜna odwoływać się poprzez nazwę (alpha, lower, upper, alnum, digit, punct, cntl) • Składnia [:name:] – [a-zA-Z] – [a-z0-9] – [45a-z] [[:alpha:]] [[:alnum:]] [45[:lower:]] • Jest to waŜne w przypadku konieczności zapewnienia przenaszalności pomiędzy róŜnymi językami narodowymi. 48 / 81 24 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Podstawowe znaki specjalne (tzw. kotwice, ang. anchors) • Znaki specjalne są uŜywane do dopasowania początku lub końca linii (lub jednego i drugiego). • ^ oznacza dopasowanie początku linii • $ oznacza dopasowanie końca linii 49 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykład ^ b [eor] a t wyraŜenie regularne beat a brat on a boat pasuje wyraŜenie regularne b [eor] a t $ beat a brat on a boat pasuje ^word$ ^$ 50 / 81 25 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Powtórzenia Znak specjalny * oznacza zero lub więcej wystąpień pojedynczego wyraŜenie regularnego poprzedzającego znak *. 51 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykład y a * y wyraŜenie regularne I got mail, yaaaaaaaaaay! pasuje wyraŜenie regularne o a * o For me to poop on. pasuje .* 52 / 81 26 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Zakresy powtórzeń • Zakresy moŜna definiować takŜe w postaci: – {n,m} – notacja określa zakres powtórzeń bezpośrednio poprzedzających regex – {n} oznacza dokładnie n wystąpień – {n,} oznacza przynajmnie n wystąpień – {n,m} oznacza przynajmniej n wystąpień, ale nie więcej niŜ m wystąpień • Przykład: – .{0,} ⇒ .* – a{2,} ⇒ aaa* 53 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI PodwyraŜenia • Jeśli chcemy zgrupować część wyraŜenia tak, aby * odnosiło się nie tylko do poprzednich znaków, to naleŜy uŜyć notacji ( ). • PodwyraŜenia traktowane są podobnie jak pojedynczy znak – a* oznacza dopasowanie 0 lub więcej wystąpień a – abc* odpowiada wzorcom ab, abc, abcc, abccc, … – (abc)* odpowiada wzorcom abc, abcabc, abcabcabc, … – (abc){2,3} odpowiada wzorcowi abcabc lub abcabcabc 54 / 81 27 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI grep • nazwa grep pochodzi od polecenia edytora ed do przeszukiwania “global regular expression print” albo g/re/p • polecenie było na tyle przydatne, Ŝe zaimplementowano je jako samodzielne narzędzie • istnieją warianty polecenia, m.in.: egrep i fgrep • polecenie grep jest np. przydatne gdy chcemy znaleźć plik zawierający określoną frazę, nie pamiętamy jednak jego nazwy 55 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenia z rodziny grep • grep – uŜywa wyraŜeń regularnych do dopasowania wzorców (ang. pattern matching) • fgrep – (file grep) nie uŜywa wyraŜeń regularnych, dopasowuje jedynie stałe łańcuchy znaków, moŜe jednak pobrać taki łańcuch z pliku • egrep – (extended grep) uŜywa bardziej rozbudowanego zestawu wyraŜeń regularnych, ale nie umoŜliwia stosowania odwołań wstecznych (ang. backreferencing), najszybsze polecenie z rodziny grep • agrep – (approximate grep) nie ujęte w normach 56 / 81 28 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Składnia wyraŜeń regularnych dla poleceń rodziny grep • polecenia grep i egrep wykorzystują ideę wyraŜeń regularnych • grep i egrep mają róŜną składnię wyraŜeń regularnych: – grep: – egrep: BRE ERE • Przykładowe róŜnice w składni: – grep: – egrep: \( , ( , \) , ) , \{ , { , \} } 57 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Zabezpieczenie zestawu znaków wyraŜeń regularnych dla grep PoniewaŜ wiele spośród znaków uŜywanych w wyraŜeniach regularnych ma równieŜ specjalne znaczenie dla powłoki, wskazane jest więc umieszczanie wyraŜeń regularnych w apostrofach – zabezpiecza to znaki specjalne przed interpretowaniem ich przez powłokę – wygodniej jest przyjąć, Ŝe taka ochrona zestawu znaków w wyraŜeniu regularnym jest zawsze niezbędna, niŜ analizować kaŜdy przypadek 58 / 81 29 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI UŜycie znaków specjalnych jako zwykłych symboli dla grep i egrep • w niektórych przypadkach moŜemy chcieć uŜyć znaków specjalnych w ich podstawowym znaczeniu, jako zwykłych symboli • w tym celu poprzedzamy znak specjalny symbolem \ (backslash) • np. jeŜeli szukamy łańcucha a*b* – uŜycie wyraŜenia 'a*b*' pozwoli wyszukać łańcuch zawierający zero lub więcej liter a, po których występuje zero lub więcej liter b - nie tego oczekiwaliśmy! – poprawnie skonstruowane wyraŜenie regularne 'a\*b\*' – w tym przypadku gwiazdki nie są traktowane jako symbole specjalne 59 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI egrep: symbol alternatywy • wyraŜenia regularne pozwalają na uŜycie znaku alternatywy | w celu dopasowania jednego lub więcej podwyraŜeń, np.: – do(K|T)en pasują ‘Ken’ albo ‘Ten’ – do ^(From|Subject): pasują typowe linie From i Subject z nagłówka typowej wiadomości email (dopasowanie do łańcucha znaków, w którym początek linii rozpoczyna się znakami ‘From’ lub ‘Subject’, po których następuje ‘:’) • do ograniczenia zakresu działania alternatywy uŜywane są podwyraŜenia, np: – do At(ten|nine)tion pasują “Attention” albo “Atninetion” – do Atten|ninetion pasują “Atten” albo “ninetion” 60 / 81 30 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI egrep: powtórzenia • symbol * (gwiazdka) oznacza zero lub więcej wystąpień poprzedzającego go znaku (bądź podwyraŜenia) • symbol + (plus) oznacza jedno lub więcej wystąpień poprzedzającego go znaku (bądź podwyraŜenia) ekwiwalentem symbolu + jest zapis {1,} do abc+d pasują ‘abcd’, ‘abccd’, albo ‘abccccccd’, ale nie pasuje ‘abd’ do abc?d pasaują ‘abd’ albo ‘abcd’, ale nie pasuje ‘abccd’ do abc+d pasują ‘abcd’, ‘abccd’, ‘abccccccd’ albo ‘abd’ 61 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI egrep: powtórzenia (cd.) • symbol ? (znak zapytania) oznacza opcjonalne wystąpienie znaku znajdującego się bezpośrednio przed znakiem zapytania do July? pasują ‘Jul’ albo ‘July’ ekwiwalentem dla ? jest {0,1} ekwiwalentem dla July? moŜe być (Jul|July) • Symbole *, ? i + mogą być uŜywane w stosunku do pojedynczych znaków jak i całych podwyraŜeń, np.: – do(a*c)+ pasują ‘c’, ‘ac’, ‘aac’ albo ‘aacaacac’, ale nie pasują ‘a’ lub pusta linia 62 / 81 31 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI grep: odwołania wsteczne • Sometimes it is handy to be able to refer to a match that was made earlier in a regex • This is done using backreferences – \n is the backreference specifier, where n is a number • For example, to find if the first word of a line is the same as the last: – ^\([[:alpha:]]\{1,\}\).*\1$ – The \([[:alpha:]]\{1,\}\) matches 1 or more letters 63 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przykłady uŜycia wyraŜeń regularnych dla egrep • nazwy zmiennych w C – [a-zA-Z_][a-zA-Z_0-9]* • kwoty w dolarach (opcjonalnie z centami) – \$[0-9]+(\.[0-9][0-9])? • godzina – (1[012]|[1-9]):[0-5][0-9] (am|pm) • nagłówi HTML <h1> <H1> <h2> … – <[hH][1-4]> 64 / 81 32 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Składnia poleceń rodziny grep grep [-hilnv] [-e expression] [filename] egrep [-hilnv] [-e expression] [-f filename] [expression] [filename] fgrep [-hilnxv] [-e string] [-f filename] [string] [filename] -h -i -l -n -v -x -f filename nie wyświetla nazw plików ignoruje wielkości liter we wzorcach i na wejściu wypisuje jedynie nazwy plików zawierających dopasowania poprzedza kaŜdą linię wyjścia jej numerem w pliku wejściowym odwraca sens dopasowania (wybór linii niepasujących) dopasowanie całych linii (opcja tylko dla fgrep) pobiera wzorzec z pliku filename 65 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Składnia poleceń rodziny grep (cd.) Regular Expression Matches x xyz \m ^ $ . [xy^$x] [^xy^$z] [a-z] [^a-z] r* r1r2 grep, fgrep, and egrep Ordinary characters match themselves (NEWLINES and metacharacters excluded) Ordinary strings match themselves grep and egrep Matches literal character m Start of line End of line Any single character Any of x, y, ^, $, or z Any one character other than x, y, ^, $, or z Any single character in given range Any single character not in range zero or more occurrences of regex r Matches r1 followed by r2 66 / 81 33 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Składnia poleceń rodziny grep (cd.) Regular Expression \(r\) \n \{n,m\} r+ r? r1|r2 (r1|r2)r3 (r1|r2)* {n,m} Matches grep only Tagged regular expression, matches r Set to what matched the nth tagged expression (n = 1-9) Repetition egrep only One or more occurrences of r Zero or one occurrences of r Either r1 or r2 Either r1r3 or r2r3 Zero or more occurrences of r1|r2, e.g., r1, r1r1, r2r1, r1r1r2r1,…) Repetition 67 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI UŜycie poleceń rodziny grep grep ‘men’ GrepMe grep ‘fo*’ GrepMe egrep ‘fo+’ GrepMe egrep -n ‘[Tt]he’ GrepMe fgrep ‘The’ GrepMe egrep ‘NC+[0-9]*A?’ GrepMe fgrep -f expfile GrepMe • Odszukaj w plikach o rozszerzeniu .c linie zawierające liczbę ze znakiem: $ egrep ’[-+][0-9]+\.?[0-9]*’ *.c bsearch. c: return -1; compile. c: strchr("+1-2*3", t-> op)[1] - ’0’, dst, convert. c: Print integers in a given base 2-16 (default 10) convert. c: sscanf( argv[ i+1], "% d", &base); strcmp. c: return -1; strcmp. c: return +1; 68 / 81 34 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI UŜycie poleceń rodziny grep (cd.) • /usr/dict/words zawiera ok. 25,000 słów w j. angielskim. Jakie słowa zawierają dwa znaki ‘hh’ obok siebie: $ egrep hh /usr/dict/words beachhead highhanded withheld withhold • Proste sprawdzenie pisowni (niepewna alternatywa): $ egrep "n(ie|ei)ther" /usr/dict/words neither • W jakich słowach znajdują się trzy znaki ‘c’ rozdzielone pojedynczymi znakami: $ egrep u.u.u /usr/dict/words cumulus • W ilu słowach znajdują się trzy znaki ‘a’ rozdzielone pojedynczymi znakami: $ egrep a.a.a /usr/dict/words | wc –l 50 69 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI grep: inne uwagi • uŜycie /dev/null jako dodatkowej nazwy pliku powoduje wyświetlenie nazwy pliku, w którym zostało dokonane dopasowanie, np.: $ grep test bigfile This is a test. $ grep test /dev/null bigfile bigfile:This is a test. • Wykorzystanie kodu powrotu z polecenia grep $ grep fred filename > /dev/null && rm filename /dev/null – „czarna dziura” - wirtualne urządzenie usuwające wszystkie dane przekierowane do niego i nie generujące Ŝadnych danych dla procesów czytających z niego 70 / 81 35 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Maskowanie i wzorce (ang. wildcards & patterns) powłoki • Powłoki operują na pewnych (często modyfikowanych) podzbiorach wyraŜeń regularnych. Przykładowo powłoka ksh rozszerza zakres wzorców. • Zazwyczaj inna składnia niŜ przyjęta w omawianych wyraŜeniach regularnych, np.: * w powłoce .* w wyraŜeniach regularnych ? w powłoce . w wyraŜeniach regularnych [] ma takie samo znaczenie w powłoce i w wyraŜeniach regularnych, ale juŜ negacja będzie wyraŜona inaczej: wyraŜenie regularne: [^abc] powłoka: [!abc] 71 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Przechodzenie drzewa • jak wybrać zbiór plików, w stosunku do których mają być zastosowane filtry? • pierwsza moŜliwość: maski – grep word * – grep word * */* */*/* • ale co np. z plikami: – we wszystkich podkatalogach danego katalogu? – utworzonymi po 1 stycznia 2001 roku? – plikami większymi niŜ 10K? 72 / 81 36 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie find • find [path...] [expression] • polecenie szuka plików w hierarchii katalogowej katalogu (lub wielu katalogów) path • w skład expression wchodzą: – – – – opcje testy akcje operatory 73 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie find - opcje -depth - przetwarza zawartość kaŜdego katalogu przed samym katalogiem jako takim -maxdepth głębokość - schodzi maksymalnie głębokość (nieujemna liczba całkowita) poziomów katalogów od argumentów wiersza poleceń. `-maxdepth 0' oznacza, by testy i akcje stosować tylko do argumentów wiersza poleceń -follow - rozwikłuje dowiązania symboliczne -xdev - nie zagłębia się w katalogi na innych systemach plików ... 74 / 81 37 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie find - testy Wartości numeryczne mogą ybć podawane jako +n (większy od n), -n (mniejszy od n) lub n (równy n). -amin n - dostęp do pliku nastąpił ostatnio n minut temu -cmin n - status pliku został zmieniony n minut temu -mmin n - dane pliku były ostatnio modyfikowane n minut temu -size n - plik zajmuje n jednostek miejsca (jednostki to domyślnie 512-bajtowe bloki) -inum n - plik ma numer iwęzła n -name wzorzec - podstawa nazwy pliku (z usuniętą ścieŜką i poprzedzającymi katalogami) odpowiada wzorcowi powłoki wzorzec -perm prawa - bity praw pliku są dokładnie równe prawom -perm -prawa - wszystkie bity prawa są ustawione dla pliku -perm +prawa - któryś z bitów praw jest ustawiony dla pliku -type x - plik jest typu x (x=‘f’ zwykły plik, x=‘d’ katalog, x=‘l’ dowiązanie, itd.) -user userid | username - właścicielem pliku jest username (lub numerycznie userid) -group groupid | groupname - plik naleŜy do grupy groupname (lub numerycznie groupid) 75 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie find - akcje • -print - prawdziwe; wypisuje pełną nazwę pliku na standardowe wyjście, za nazwą daje nową linię (akcja domyślna) • -exec polecenie ; - wykonuje polecenie; prawdziwe jeśli zwrócony został status 0; wszelkie następne argumenty find są brane za argumenty polecenia, aŜ nie zostanie napotkany argument, składający się z ‘;’ • -ok polecenie ; - podobne do -exec, lecz pyta wpierw uŜytkownika (na standardowym wejściu); jeśli odpowiedź nie rozpoczyna się od `y' lub `Y', nie uruchamia polecenia i zwraca fałsz ... 76 / 81 38 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Polecenie find - operatory Wymienione w malejącym priorytecie: ( wyraŜ ) - wymusza pierwszeństwo. ! wyraŜ - prawdziwe jeśli wyraŜ jest fałszywe wyraŜ1 wyraŜ2 - and (jawny); wyraŜ2 nie jest analizowany jeśli wyraŜ1 jest fałszywe wyraŜ1 -and wyraŜ2 - to samo, co wyraŜ1 wyraŜ2 wyraŜ1 -or wyraŜ2 - or; wyraŜ2 nie jest analizowane jeśli wyraŜ1 jest prawdziwe wyraŜ1 , wyraŜ2 - lista; zarówno wyraŜ1 jak i wyraŜ2 zawsze są analizowane. Wartość wyraŜ1 jest niszczona; wartość listy jest wartością wyraŜ2 77 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI UŜycie find • Znajdź w katalogu domowym wszystkie pliki na f – find ~ -name ‘f*’ -print • Znajdź w katalogu domowym wszystkie pliki o wilekści 10K – find ~ -size 10k -print • Usuń pliki o nazwie core – find / -name core –exec rm {} \; 78 / 81 39 2011-11-28 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Porównanie dwóch plików: diff polecenie diff porównuje dwa pliki i wyświetla opis róŜnic, uŜycie: diff [options] file1 file2 -q - poinformowanie jedynie o tym, czy pliki się róŜnią -i - ignorowanie zmian w wielkości liter -w - ignorowanie wszystkich odstępów przy porównywaniu plików --binary - wymuszenie odczytu i zapisu danych w trybie binarnym -e - generowanie skryptu ed transformacji file1 do file2 apples oranges walnuts apples oranges grapes $ diff test1 test2 3c3 < walnuts --> grapes 79 / 81 SYSTEMY OPERACYJNE KOMPUTERÓW UNIX – PODSTAWOWE POLECENIA POWŁOKI Porównanie dwóch plików: cmp i comm • cmp - porównuje dwa pliki lub zakresy bajtów – narzędzie cmp porównuje dwa dowolnego typu pliki i wypisuje wynik na standardowym wyjściu. Domyślnie, cmp milczy gdy pliki są takie same. Jeśli się róŜnią, zgłaszany jest numer bajtu i linii, gdzie wystąpiła pierwsza róŜnica. • comm - porównaj dwa posortowane pliki linia po linii – bez opcji comm wypisuje wynik w trzech kolumnach. Kolumna pierwsza zawiera linie unikatowe dla plik1, kolumna druga zawiera linie unikatowe dla plik2, a kolumna trzecia zawiera linie wspólne obu plikom; – oba pliki muszą być posortowane zanim będzie moŜna uŜyć comm, przy czym kończące znaki nowej linii są znaczące. 80 / 81 40