Wprowadzenie do systemu UNIX dr in Mariusz Kope

  • Slides: 166
Download presentation
Wprowadzenie do systemu UNIX dr inż. Mariusz Kopeć pok. tel. 216, D-10 617 4528

Wprowadzenie do systemu UNIX dr inż. Mariusz Kopeć pok. tel. 216, D-10 617 4528 mariusz@novell. ftj. agh. edu. pl (C) Mariusz Kopeć, WFi. TJ AGH, 2008 1

Program wykładów 1. 2. 3. 4. 5. 6. 7. 8. 9. Podstawowe wiadomości o

Program wykładów 1. 2. 3. 4. 5. 6. 7. 8. 9. Podstawowe wiadomości o Uniksie Rozpoczynamy pracę z systemem Gdzie szukać pomocy? Poznajemy podstawowe polecenia systemu Podstawy pracy w powłoce bash Poznajemy filtry Tworzymy własne skrypty Przetwarzamy pliki Programy komunikacyjne i narzędzia sieciowe (C) Mariusz Kopeć, WFi. TJ AGH, 2008 2

Początki UNIXa n 1965 MULTICS (MIT+ AT&T Bell Labs + GE) MULTiplexed Information and

Początki UNIXa n 1965 MULTICS (MIT+ AT&T Bell Labs + GE) MULTiplexed Information and Computing Service n 1969 AT&T Bell Labs wycofuje się z projektu; Ken Thompson i Dennis Ritchie (Bell Labs) pracując na własną rękę, tworzą w oparciu o idee MULTICSa nowy system UNICS, (UNiplexed Information and Computing Service), który implementują na PDP-7 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 3

Początki UNIXa, cd n 1971 AT&T UNIX First Edition (11/3/1971) pierwsza oficjalna wersja systemu,

Początki UNIXa, cd n 1971 AT&T UNIX First Edition (11/3/1971) pierwsza oficjalna wersja systemu, zawierająca procesor tekstu, zaimplementowana na PDP-11 n 1973 3 -th Edition UNIX (3/73) pojawiły się potoki (pipes) i filtry oraz kompilator języka C. Jądro systemu napisane w asemblerze. n 1973 4 -th Edition UNIX (11/73) jądro systemu napisane w C. n 1975 6 -th Edition UNIX (V 6 UNIX) pierwsza wersja systemu powszechnie dostępna poza Bell Labs. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 4

BSD UNIX n Na skutek problemów prawnych AT&T nie mogło zarabiać na n 1977

BSD UNIX n Na skutek problemów prawnych AT&T nie mogło zarabiać na n 1977 Bill Joy z Uniwersytetu Kalifornijskiego n 1980 W następstwie otrzymania kontraktu DARPA (Defense sprzedaży UNIXa – postanowiło więc udostępnić go uniwersytetom, gdzie system był dalej rozwijany. w Berkeley wydaje pierwszą wersję Berkeley Software Distribution, znaną jako 1 BSD. Advanced Research Projects Agency) Bill Joy tworzy w Berkeley kolejną dystrybucję: 4. 1 BSD. n n n 1984 Powstaje 4. 2 BSD zawierająca TCP/IP. Rok wcześniej Bill Joy odchodzi, by stworzyć Sun Microsystems. 1986 Powstaje poprawiona wersja 4. 3 BSD. 1994 Powstaje ostatnia wersja z Berkeley: 4. 4 BSD. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 5

AT&T UNIX n 1982 UNIX System Group (AT&T) wypuszcza System III UNIX. n 1983

AT&T UNIX n 1982 UNIX System Group (AT&T) wypuszcza System III UNIX. n 1983 UNIX System Development Labs (AT&T) wypuszcza System V UNIX Release 1 (SVR 1). n 1984 Powstaje System V UNIX Release 2 (SVR 2). n 1985 Pojawia się SVR 3 zawierająca m. in. NFS (Network File System). n 1992 UNIX System Labs (AT&T) wypuszcza SVR 4. 2. n 1993 Novell kupuje USL od (AT&T) i wypuszcza SVR 4. 2 MP. n 1995 SCO (Santa Cruz Operation) kupuje Uniksa od Novella. n 2001 Caldera (dystrybutor Linuxa) kupuje Uniksa od SCO. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 6

Inne wersje UNIXa (wybrane) Komercyjne n n n Xenix – Microsoft HP-UX – HP

Inne wersje UNIXa (wybrane) Komercyjne n n n Xenix – Microsoft HP-UX – HP IRIX – SGI Sun. OS – Sun Unicos – CRAY Unix. Ware - SCO n n n Ultrix – DEC AIX – IBM Mac OS X – Apple Solaris – Sun Open. Server – SCO. . . Free 386/BSD – Bill Jolitz n Free. BSD – Jordan Hubbard n Minix – Andy Tannenbaum n GNU – Richard Stallman n (C) Mariusz Kopeć, WFi. TJ AGH, 2008 Net. BSD n Open. BSD – Theo de Raadt n Linux – Linus Torvalds n 7

Linux n Kernel n n n Narzędzia (utilities) n n n Linus Torvalds, Univ.

Linux n Kernel n n n Narzędzia (utilities) n n n Linus Torvalds, Univ. Helsinki, 1991 właściwy LINUX to kernel Głównie z Free Software Foundation GNU/Linux (GNU’s Not UNIX) Dystrybucje n n n kernel + narzędzia + programy pomocnicze i instalacyjne Red Hat – najpopularniejszy pakiet dystrybucyjny Caldera Open. Linux – również w pakietach komercyjnych Debian – projekt całkowicie niekomercyjny Su. SE – dystrybucja w języku niemieckim Mandrake – zbliżona do Red Hat; łatwa instalacja i konfiguracja (C) Mariusz Kopeć, WFi. TJ AGH, 2008 8

System operacyjny UNIX n System operacyjny – zespół programów pośredniczących pomiędzy użytkownikiem komputera a

System operacyjny UNIX n System operacyjny – zespół programów pośredniczących pomiędzy użytkownikiem komputera a warstwą sprzętową (hardware), organizujący całość pracy komputera, a w szczególności: n n zarządzanie zasobami sprzętowymi; obsługę urządzeń wejścia-wyjścia; zarządzanie systemem plików; obsługę kont użytkowników i kontrolę dostępu. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 9

Warstwy systemu UNIX Użytkownik Interfejs użytkownika Powłoki, polecenia, aplikacje Interfejs bibliotek Biblioteki systemowe (open,

Warstwy systemu UNIX Użytkownik Interfejs użytkownika Powłoki, polecenia, aplikacje Interfejs bibliotek Biblioteki systemowe (open, read, write, . . . ) (programy, kompilatory, interpretery, . . . ) Interfejs wywołań systemowych Jądro systemu (kernel) (zarządzanie procesami, pamięcią, zasobami, . . . ) Interfejs warstwy sprzętowej Warstwa sprzętowa (hardware) (CPU, pamięć, dyski, terminale, sterowniki, . . . ) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 10

Zaczynamy pracę n Rodzaje i uprawnienia użytkowników n n n Identyfikacja użytkownika n n

Zaczynamy pracę n Rodzaje i uprawnienia użytkowników n n n Identyfikacja użytkownika n n superusername password Zmieniamy hasło n polecenie passwd n zasady doboru hasła (długość, zestaw znaków) Kończymy pracę n n exit logout (C) Mariusz Kopeć, WFi. TJ AGH, 2008 11

Nazwy i polecenia n Nazwa n n n case sensitive długość – zależna od

Nazwy i polecenia n Nazwa n n n case sensitive długość – zależna od implementacji (max. 255) zestaw znaków n n n znaki alfanumeryczne [A-Z], [a-z], [0 -9] inne znaki: . =@#%^_+-: , znaki specjalne: `!$&*(){}[]; ”|’<>? /spacja wprowadzanie znaku specjalnego, np. : Mój Plik Polecenie n nazwa-polecenia opcje parametry n n n opcje najczęściej poprzedza „-” parametry oddzielane spacjami przykład: ls -l (C) Mariusz Kopeć, WFi. TJ AGH, 2008 12

Rozwijanie nazw n Rozwijanie nazw plików przez system: n znak * zastępuje dowolną grupę

Rozwijanie nazw n Rozwijanie nazw plików przez system: n znak * zastępuje dowolną grupę znaków, np. : n n n znak ? zastępuje jeden dowolny znak, np. : n n plik? . dat plik 1. dat plik 2. dat nawias kwadratowy [] określa grupę znaków z której może być wybrany jeden znak, np. : n n n * plik 1. dat plik 2. dat test. out wyniki. dat wyniki. txt wyjątek: „. ” na początku [pt]*. * plik 1. dat plik 2. dat test. out [p-t]*. * plik 1. dat plik 2. dat test. out klamra {} podaje pasującą grupę znaków, np. : n w*. {dat, txt} wyniki. dat wyniki. txt (C) Mariusz Kopeć, WFi. TJ AGH, 2008 13

Pomoc on-line n man n whatis (man –f) n n n whatis –h whatis

Pomoc on-line n man n whatis (man –f) n n n whatis –h whatis passwd apropos (man –k) n n n man passwd man 5 passwd apropos –h apropos passwd info n n info –-usage info passwd (C) Mariusz Kopeć, WFi. TJ AGH, 2008 14

Zmiany danych użytkownika n Zmiana hasła n n Zmiana danych osobistych użytkownika n n

Zmiany danych użytkownika n Zmiana hasła n n Zmiana danych osobistych użytkownika n n passwd chfn Zmiana defaultowej powłoki (shell) użytkownika n chsh (C) Mariusz Kopeć, WFi. TJ AGH, 2008 15

Przydatne informacje n Informacje o systemie n n Kim jesteśmy w sieci? n n

Przydatne informacje n Informacje o systemie n n Kim jesteśmy w sieci? n n n hostname dnsdomainname Kim jesteśmy w systemie? n n n uname -a whoami who am i (who mom likes) Kto pracuje w systemie? n n who w (C) Mariusz Kopeć, WFi. TJ AGH, 2008 16

System plików n wszystko jest plikiem: n n pliki zwykłe katalogi (zawierają inne pliki)

System plików n wszystko jest plikiem: n n pliki zwykłe katalogi (zawierają inne pliki) pliki urządzeń struktura drzewa n n n wszystko zaczyna się od „/” (root – katalog główny) podkatalogi zawierają się w katalogach lub podkatalogach kolejne poziomy katalogów oddzielamy przez „/”, a nie przez „” jak w Windows lub DOS katalog bieżący oznaczamy „. ” katalog „rodzicielski” (parent directory) oznaczamy „. . ” każdy plik posiada pełną ścieżkę dostępu, np. : /home/jan/program 1. c (C) Mariusz Kopeć, WFi. TJ AGH, 2008 17

System plików - przykład / usr etc bin local home jan dane lib ewa

System plików - przykład / usr etc bin local home jan dane lib ewa dev adam program 1. c (C) Mariusz Kopeć, WFi. TJ AGH, 2008 18

Operacje na katalogach n pwd wypisanie katalogu bieżącego > pwd /home/stud/kowalski n ls wypisanie

Operacje na katalogach n pwd wypisanie katalogu bieżącego > pwd /home/stud/kowalski n ls wypisanie zawartości katalogu > ls (tu to samo co ls /home/stud/kowalski) plik 1. dat prog. e testy > ls -a. . . plik 1. dat > ls –a * plik 1. dat testy: . . . (C) Mariusz Kopeć, WFi. TJ AGH, 2008 prog. e testy Zauważ: 1. * nie rozwija nazw. i. . 2. testy to katalog; listowana jest jego zawartość 19

Operacje na katalogach, cd > ls –d * plik 1. dat prog. e testy

Operacje na katalogach, cd > ls –d * plik 1. dat prog. e testy > ls -l -rw-r--r-- 1 kowalski stud 10 Oct 10 2002 plik 1. dat -rwxr-xr-x 1 kowalski stud 445 Jul 21 2001 prog. e drwxr-xr-x 2 kowalski stud 4096 Jul 21 2001 testy n mkdir utworzenie nowego katalogu > mkdir zajecia 1; ls –d * plik 1. dat prog. e testy zajecia 1 > mkdir /home/stud/kowalski/zajecia 1 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 20

Operacje na katalogach, cd n cd zmiana katalogu bieżącego > cd /usr/local; pwd /usr/local

Operacje na katalogach, cd n cd zmiana katalogu bieżącego > cd /usr/local; pwd /usr/local > cd. . ; pwd /usr > cd; pwd /home/stud/kowalski > cd -; pwd /usr > cd ~/zajecia 1; pwd /home/stud/kowalski/zajecia 1 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 21

Operacje na katalogach, cd n rmdir usunięcie katalogu (pustego) > cd > rmdir zajecia

Operacje na katalogach, cd n rmdir usunięcie katalogu (pustego) > cd > rmdir zajecia 1; ls plik 1. dat prog. e testy > mkdir zajecia 1/zadanie 1; ls zajecia 1 zadanie 1 > rmdir zajecia 1 rmdir: `zajecia 1’: Directory not empty n Katalog nie jest pusty – trzeba inaczej: > rm –r zajecia 1; ls plik 1. dat prog. e testy (C) Mariusz Kopeć, WFi. TJ AGH, 2008 Ostrożnie! 22

Prawa dostępu do pliku read wartość = 4 (r write wartość = 2 (w

Prawa dostępu do pliku read wartość = 4 (r write wartość = 2 (w albo -) execute wartość = 1 (x albo -) -rwxr--r-u g albo -) 1 user group. . . prog 1. e o others group user typ (C) Mariusz Kopeć, WFi. TJ AGH, 2008 - zwykły plik d katalog. . . mod tego pliku = 744 execute: zwykły plik – program, script katalog – wykonanie cd 23

Zmiana praw dostępu n Zmiana modu n chmod [-R] [kto]op[zezw][, . . . ]

Zmiana praw dostępu n Zmiana modu n chmod [-R] [kto]op[zezw][, . . . ] plik n n n u g o a n n – user – group – other – all (a=ugo) - operacja: op n n - grupa znaków ugoa: kto + - dodaj zezwolenie - - odbierz zezwolenie = - zastąp zezwolenie zezw - typ zezwolenia: n n n r – czytanie w – pisanie x – wykonanie (cd do katalogu) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 24

Zmiana praw dostępu, cd n Przykłady: n n chmod a+x plik 1. e chmod

Zmiana praw dostępu, cd n Przykłady: n n chmod a+x plik 1. e chmod o-w plik 1. e chmod u=rw, go=r plik 1. e chmod [-R] kod_oktalny plik n kod_oktalny – suma kodów oktalnych w grupach: n n user group others - r=400 r=040 r=004 w=200 w=020 w=002 x=100 x=010 x=001 Przykłady: n n chmod 644 plik 1. e chmod 777 plik 1. e (C) Mariusz Kopeć, WFi. TJ AGH, 2008 25

Zmiana praw dostępu, cd n Zmiana właściciela n chown [-R] user[: group] plik n

Zmiana praw dostępu, cd n Zmiana właściciela n chown [-R] user[: group] plik n n user – właściciel pliku group - właściciel grupowy opcja –R - zmiany rekurencyjne w podkatalogach Przykład: n n Ostrożnie! chown jan: stud plik 1. e Zmiana właściciela grupowego n chgrp [-R] group plik n n n group - właściciel grupowy opcja –R - zmiany rekurencyjne w podkatalogach Przykład: n chgrp stud plik 1. e (C) Mariusz Kopeć, WFi. TJ AGH, 2008 26

Operacje na plikach n Utworzenie pliku n touch > touch plik 2. dat; ls

Operacje na plikach n Utworzenie pliku n touch > touch plik 2. dat; ls –l plik 2. dat -rwxr-xr-x 1 kowalski stud 0. . . plik 2. dat n cat > plik 2. dat Linia 1 wprowadzonego tekstu<Enter> Linia 2 wprowadzonego tekstu<Enter> Ctrl-D > ls –l plik 2. dat -rwxr-xr-x 1 kowalski stud 56. . . plik 2. dat n dowolny edytor, np. vi > vi plik 2. dat (C) Mariusz Kopeć, WFi. TJ AGH, 2008 27

Operacje na plikach, cd n n rm - usuwa jeden lub wiele plików (katalogów)

Operacje na plikach, cd n n rm - usuwa jeden lub wiele plików (katalogów) > rm plik usuwa plik > rm –r katalog usuwa rekurencyjnie katalog > rm –i * usuwa po potwierdzeniu cp - kopiuje pliki (katalogi) > cp plik 1 plik 2 kopiuje plik 1 do plik 2 > cp –R katalog 1 katalog 2 kopiuje rekurencyjnie katalog 1 do katalog 2 n mv – przenosi lub przemianowuje pliki (katalogi) > mv plik 1 plik 2 przemianowuje plik 1 na plik 2 > mv plik 1 katalog 1 przenosi plik 1 do katalogu 1 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 28

Operacje na plikach, cd n Wypisanie zawartości pliku n cat – wypisanie zawartości jednego

Operacje na plikach, cd n Wypisanie zawartości pliku n cat – wypisanie zawartości jednego lub kilku plików > cat plik 2. dat Linia 1 wprowadzonego tekstu Linia 2 wprowadzonego tekstu n more – wypisanie zawartości pliku strona po stronie > more plik 3. dat n less – wypisanie zawartości pliku strona po stronie > less plik 3. dat n tac – wypisanie zawartości pliku od końca > tac plik 2. dat Linia 2 wprowadzonego tekstu Linia 1 wprowadzonego tekstu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 29

Operacje na plikach, cd n Wypisanie fragmentu pliku n head – wypisanie początkowych linii

Operacje na plikach, cd n Wypisanie fragmentu pliku n head – wypisanie początkowych linii pliku (plików) n n n pierwsze 10 linii pliku pierwsze n linii każdego pliku tail – wypisanie końcowych linii pliku (plików) n n head plik 1 head –n plik 1 plik 2 tail plik 1 tail –n plik 1 tail +n plik 1 ostatnie 10 linii pliku ostatnie n linii pliku 10 linii poczynając od n-tej linii Wypisanie zawartości pliku w kolumnach n column – tworzenie tabeli n n column –t plik 1 column –t –s: plik 1 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 separatorem jest „biały znak” separatorem jest : 30

Operacje na plikach, cd n Dzielenie plików n n cut – wycina kolumny lub

Operacje na plikach, cd n Dzielenie plików n n cut – wycina kolumny lub pola z pliku n cut –c 10 -15 plik 1 wypisuje 10. -15. znak z linii pliku n cut –f 3 –d wypisuje 3. pole z linii pliku plik 1 csplit – dzieli plik na części n csplit plik 1 10 30 tworzy trzy pliki: xx 00, xx 01, xx 02 zawierające linie: 1 do 9, 10 do 29, od 30 n csplit plik 1 /wz 1/ /wz 2/ tworzy trzy pliki: xx 00 – od pierwszej linii, xx 01 – od linii zawierającej wzorzec wz 1 xx 02 – od linii zawierającej wzorzec wz 2 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 31

Operacje na plikach, cd n Łączenie plików n cat – łączy kilka plików w

Operacje na plikach, cd n Łączenie plików n cat – łączy kilka plików w jeden (konkatenacja) n n łączy kolejno p 1, p 2, p 3 cat p 1 p 2 p 3 paste – łączy równolegle linie plików n paste plik 1 plik 2 wypisuje w jednej linii odpowiednie linie plików plik 1 i plik 2 n join – łączy równolegle linie plików z polem łączącym n Przykład: plik 1: rok 1 anna plik 2: rok 1 jan rok 2 ewa rok 3 tom > join plik 1 plik 2 rok 1 anna jan (C) Mariusz Kopeć, WFi. TJ AGH, 2008 32

Operacje na plikach, cd n Sortowanie plików i ich przetwarzanie n sort – sortuje

Operacje na plikach, cd n Sortowanie plików i ich przetwarzanie n sort – sortuje jeden lub kilka plików (konkatenacja) n sort plik 1 sortuje plik 1 n sort –k 2 p 1 p 2 dołącza p 2 do p 1 a następnie sortuje wg pola 2 n n uniq – usuwa powtarzające się linie n uniq plik 1 n uniq –t: -W 2 plik 1 bada tylko 2 pierwsze pola „: ” jest separatorem pól comm – wypisuje takie same linie z dwóch plików n comm plik 1 plik 2 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 33

Operacje na plikach, cd n Porównywanie plików n cmp – porównuje dwa pliki lub

Operacje na plikach, cd n Porównywanie plików n cmp – porównuje dwa pliki lub ciągi bajtów n n n cmp plik 1 plik 2 pokazuje pierwszą różnicę sdiff – wypisuje różnice między plikami n sdiff -s p 1 p 2 wypisuje różniące się linie n sdiff –i -s p 1 p 2 ignoruje wielkość liter diff 3 – wypisuje różnice między trzema plikami n diff 3 p 1 p 2 p 3 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 wypisuje różniące się linie 34

Ustalanie charakteru pliku n file – określenie charakteru pliku: n n n > file

Ustalanie charakteru pliku n file – określenie charakteru pliku: n n n > file ls. txt: ASCII English text, . . . > file /bin/ls: ELF 32 -bit LSB executable, . . . stat – wypisanie statusu pliku: n > stat ls. txt File: „ls. txt” Size: 7132 Device: 851 h/2129 h Access: (0744/-rw-r—r-) Uid: (751/. ) Gid: (700/. ) Access: Tue Nov 4 14: 02: 00 2003 Modify: Mon Oct 27 11: 48: 40 2003 Change: Mon Oct 27 11: 50: 45 2003 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 35

Filtry n Przetwarzają w określony sposób pliki wejściowe, np: n n n n wyszukują

Filtry n Przetwarzają w określony sposób pliki wejściowe, np: n n n n wyszukują wzorce sortują wycinają fragmenty linii edytują zliczają znaki, słowa, linie Działają zazwyczaj w trybie potokowym Potoki (pipes) – przesyłają wyjście jednego polecenia bezpośrednio na wejście następnego: n polecenie 1 | polecenie 2 [ | polecenie 3. . . ] > ls -l | sort > cat ls. txt | head –n 20 | wc (C) Mariusz Kopeć, WFi. TJ AGH, 2008 36

Filtry: wc (word count) n Wypisuje liczbę linii, słów, znaków w pliku n n

Filtry: wc (word count) n Wypisuje liczbę linii, słów, znaków w pliku n n wc [opcje] [plik] [. . . ] n wc ls. txt wypisuje liczbę linii, słów i znaków w ls. txt n wc -l ls. txt wypisuje tylko liczbę linii w pliku ls. txt n wc -w ls. txt wypisuje tylko liczbę słów w pliku ls. txt n wc -c ls. txt wypisuje tylko liczbę znaków w pliku ls. txt n wc -l *. txt wypisuje liczbę linii w każdym z plików o zakończeniu „. txt” oraz ich sumę wc jako filtr n > ls –l /usr/games | wc –l 50 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 37

Filtry: grep n Wyszukuje linie zawierające wzorzec n grep [opcje] wzór [plik. . .

Filtry: grep n Wyszukuje linie zawierające wzorzec n grep [opcje] wzór [plik. . . ] n grep ‘wz’ * wypisuje linie zawierające łańcuch ‘wz’, poprzedzone nazwą pliku n grep –v ‘wz’ * wypisuje linie zawierające łańcucha ‘wz’, poprzedzone nazwą pliku n grep –c ‘wz’ * wypisuje tylko nazwy plików i liczby linii zawierających łańcuch ‘wz’ n grep –inr ‘wz’ * wypisuje nazwy plików i numery linii zawierających ‘wz’ ignorując różnice wielkości liter. Badane są pliki w katalogu bieżącym i rekurencyjnie w podkatalogach. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 38

Filtry: grep – wzorce n wzorzec – wyrażenie regularne: n dowolny znak . n

Filtry: grep – wzorce n wzorzec – wyrażenie regularne: n dowolny znak . n n następny znak nie jest traktowany jako specjalny n n zero lub więcej powtórzeń poprzedniego znaku ‘plik. *a’ plik. 12 a, plika 123 a, plik 1 a, . . . [. . . ] n n ‘plik. ’ plik. 12, plik. , ale nie plik 1 * n n ‘plik. a’ plik 1 a, plikaa 12, ale nie plika [Pp]lik Plik, plik, . . . [^. . . ] n dowolny znak (jeden) z podanej listy dowolny znak nie występujący na liście [^Pp]lik klik, ale nie plik (C) Mariusz Kopeć, WFi. TJ AGH, 2008 39

Filtry: grep – wzorce, cd n początek linii ^ n n $ koniec linii

Filtry: grep – wzorce, cd n początek linii ^ n n $ koniec linii n n n ‘plik$’ nowyplik, ale nie plik 1 b łańcuch na krawędzi słowa n ‘bplik’ plik. 12 a, plika 123 a, ale nie replika n ‘plikb’ nowyplik (. . . ) n n ‘^plik’ plik 1 a, plikaa 12, ale nie replika (plik) plik jest pierwszym podwyrażeniem n n określenie podwyrażenia odwołanie do n-tego podwyrażenia (plik). *1 plik. *plik (C) Mariusz Kopeć, WFi. TJ AGH, 2008 40

Filtry: grep n Przykłady zaawansowanego użycia wzorców: n > grep –v ’^$’ ls. txt

Filtry: grep n Przykłady zaawansowanego użycia wzorców: n > grep –v ’^$’ ls. txt n n > grep ’(time). *1’ ls. txt n n Wypisuje wszystkie linie, w których „time” występuje więcej niż jeden raz > grep ’btimeb’ ls. txt n n Wypisuje wszystkie niepuste linie Wypisuje wszystkie linie, w których „time” występuje jako samodzielne słowo > file /etc | grep ’English text. *with’ n Wypisuje z katalogu /etc nazwy plików zawierających tekst angielski z dodatkowymi atrybutami (C) Mariusz Kopeć, WFi. TJ AGH, 2008 41

Filtry: sed – edytor strumieni n Wykonuje ciąg poleceń edycyjnych na pliku n sed

Filtry: sed – edytor strumieni n Wykonuje ciąg poleceń edycyjnych na pliku n sed [-e skrypt] [. . . ] [-f plikskryptu] [. . . ] plik n n n skrypt – ciąg poleceń; może być kilka skryptów plikskryptu – plik zawierający skrypt; może być ich kilka Wybrane przykłady: n > sed ’ 11, 174 d’ ls. txt Kasuje z pliku ls. txt linie 11 -174 n > sed –n ’ 1, /Sort/p’ ls. txt Wypisuje z ls. txt tylko linie od 1 do zawierającej „Sort” n > sed –n ’/file/p’ ls. txt Wypisuje z ls. txt tylko linie zawierające „file” (C) Mariusz Kopeć, WFi. TJ AGH, 2008 42

Filtry: sed – przykłady n > sed –n ’s/character/file/p’ ls. txt Zamienia w ls.

Filtry: sed – przykłady n > sed –n ’s/character/file/p’ ls. txt Zamienia w ls. txt „character” na „file” i wypisuje tylko linie w których dokonano zmian n > sed –n –e’s/character/file/g’ ? –e’s/file/FILE/p’ ls. txt Zamienia w ls. txt „character” na „file” a następnie „file” na „FILE” i wypisuje linie w których dokonano drugiej zmiany n > sed –n ’/mod/s/time/TIME/p’ ls. txt Zamienia „time” na „TIME” tylko w liniach zawierających „mod”, po czym wypisuje linie w których dokonano zmian n > ls – 1 /usr/games | sed –n ’/^[crw]. *s$/p’ Wypisuje z katalogu /usr/games nazwy plików zaczynające się na „c” lub „r” lub „w”, a kończące się na „s”. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 43

Filtry: tr – zamienia znaki n Usuwa lub zamienia określone znaki innymi n tr

Filtry: tr – zamienia znaki n Usuwa lub zamienia określone znaki innymi n tr [opcje] zestaw 1 [zestaw 2] n n n zestaw 1 – znaki do usunięcia lub zastąpienia zestaw 2 – znaki zastępujące odpowiednio znaki z zestawu 1 Wybrane przykłady: n tr –d e. Eo. O < ls. txt | head Usuwa z pliku ls. txt znaki „e”, „E”, „o” i „O” n tr ”[A-Z]” ”[a-z]” < ls. txt | head Wypisuje plik ls. txt zamieniając duże litery na małe n ls –l /usr | tr –s ”[: space: ]” Wypisuje zawartość katalogu /usr zastępując ciąg spacji jedną spacją n echo J mpwf Vojy | tr B-z A-y (C) Mariusz Kopeć, WFi. TJ AGH, 2008 ? 44

Filtry: awk (gawk) Polecenie to zostanie omówione dokładniej w dalszej części wykładów n Przetwarza

Filtry: awk (gawk) Polecenie to zostanie omówione dokładniej w dalszej części wykładów n Przetwarza w określony sposób plik wejściowy n gawk ’wzór {akcja}’ [plik] [. . . ] n Wybrane przykłady: n > gawk ’/Andrzej/’ /etc/passwd Wypisuje z pliku /etc/passwd linie zawierające łańcuch „Andrzej” n > cat /etc/passwd | gawk ’/^[m-s]. */csh$/’ Wypisuje z pliku /etc/passwd linie użytkowników zaczynających się na litery od „m” do „s”, używających csh jako login shell (ale nie tcsh) n > cat /etc/passwd | gawk –F: ? ’length($1)<7 {print $1, ”t”, $5}’ Wypisuje z pliku /etc/passwd pierwsze i piąte pole każdej linii, przyjmując za separator pól znak „: ”. Pomiędzy polami wpisywany jest znak tabulacji. Wypisywanie następuje jeżeli pierwsze pole liczy mniej niż 7 znaków. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 45

Filtry: tee n Kopiuje wejście na wyjście i dodatkowo do pliku n tee [-a]

Filtry: tee n Kopiuje wejście na wyjście i dodatkowo do pliku n tee [-a] plik [. . . ] n n -a – dołącz do istniejącego pliku Wybrane przykłady: n cat ls. txt | tee kopia 1 kopia 2 | less Wypisuje na ekranie plik ls. txt (strona po stronie) i tworzy dwie kopie: kopia 1 i kopia 2 n ls –l /usr/games | tee usr. games | wc Wypisuje ilość plików w katalogu /usr/games, którego zawartość zachowana zostaje w pliku usr. games n who | sort | tee users Wypisuje posortowaną listę zalogowanych użytkowników i zachowuje ją w pliku users (C) Mariusz Kopeć, WFi. TJ AGH, 2008 46

Filtry: przykłady n who | tr –s ”[: space: ]” | cut –f 5

Filtry: przykłady n who | tr –s ”[: space: ]” | cut –f 5 –d’ ’ | sort Ciągi spacji na wyjściu komendy zamieniane są na jedną spację, następnie wycinane jest piąte pole z linii, przyjmując, że spacja jest separatorem. Posortowane wyjście wypisywane jest na ekran. n ls –la /etc | grep ’^d’ | wc -l Wypisywana jest liczba podkatalogów w katalogu /etc. (Gdzie można sprawdzić czy jest poprawna? ) n cat /etc/passwd | column –s: -t | sort | less Lista zarejestrowanych w systemie użytkowników wypisywana jest strona po stronie w formie posortowanej tabeli. n sort ls. txt | uniq | tee linie | wc -l Z posortowanego pliku ls. txt usuwane są powtarzające się kolejne linie, a wynik zapisywany jest w pliku „linie”. Na ekran wyświetlana jest ilość linii. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 47

Kompresja plików n gzip – kompresja/dekompresja zawartości plików n gzip [opcje] [plik] [. .

Kompresja plików n gzip – kompresja/dekompresja zawartości plików n gzip [opcje] [plik] [. . . ] n Wybrane przykłady: n gzip ls. txt Kompresuje plik ls. txt, na którego miejsce tworzony jest ls. txt. gz. n gzip –d ls. txt ( gunzip ls. txt) Dekompresuje plik ls. txt. gz, przywracając ls. txt. n gzip –r * Kompresuje wszystkie pliki w bieżącym katalogu i w podkatalogach n gzip –dr * ( gunzip –r *) Dekompresuje wszystkie pliki w bieżącym katalogu i w podkatalogach. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 48

Archiwizacja plików n tar – archiwizuje i odtwarza pliki n tar [opcje] [plik] [.

Archiwizacja plików n tar – archiwizuje i odtwarza pliki n tar [opcje] [plik] [. . . ] n n n n -c -r -x -f nazwa -t -v -z lub -j tworzy nowe archiwum dodaje pliki do istniejącego archiwum wyciąga pliki z archiwum podaje nazwę archiwum listuje zawartość archiwum informuje o wykonywanych operacjach kompresja/dekompresja programem gzip lub bzip 2 Wybrane przykłady: n tar –cvf mojkatalog. tar * Tworzy archiwum mojkatalog. tar z bieżącego katalogu. n tar –tvf mojkatalog. tar Listuje zawartość archiwum mojkatalog. tar. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 49

Wyszukiwanie plików n find – wyszukuje pliki i (opcjonalnie) wykonuje na nich polecenia n

Wyszukiwanie plików n find – wyszukuje pliki i (opcjonalnie) wykonuje na nich polecenia n find [lista katalogów] [wyrażenie] n lista katalogów: - lista nazw katalogów, które mają być przeszukiwane; - nazwy oddzielone spacjami; - jeżeli jej nie ma, przyjmowany jest katalog bieżący. n wyrażenie: - określa kryterium poszukiwań; - składa się z wyrażeń pierwotnych zwracających wartość ”prawda” lub ”fałsz”; - wyrażenie pierwotne mogą być grupowane lub łączone za pomocą operatorów logicznych; - jeżeli dla danego pliku wyrażenie jest fałszem, operacja jest przerywana i następuje przejście do kolejnego pliku. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 50

Wyszukiwanie plików, cd n podstawowe wyrażenia pierwotne: n -name plik prawda, jeżeli plik odpowiada

Wyszukiwanie plików, cd n podstawowe wyrażenia pierwotne: n -name plik prawda, jeżeli plik odpowiada nazwie bieżącej n -user użytkownik prawda, jeżeli plik należy do użytkownika użytkownik n -newer splik prawda, jeżeli plik jest nowszy niż splik n -type c prawda, jeżeli plik jest typu c (b, c, d, p, f, l, s) n -print prawda; wypisuje nazwę pliku n -exec polecenie prawda jeżeli polecenie zwraca kod wyjścia 0; polecenie kończy się znakiem ; nazwa pliku jest reprezentowana przez {} (C) Mariusz Kopeć, WFi. TJ AGH, 2008 51

Wyszukiwanie plików, cd n n operatory: n (. . . ) grupowanie n !.

Wyszukiwanie plików, cd n n operatory: n (. . . ) grupowanie n !. . . negacja n -a (lub nic) koniunkcja n -o alternatywa przykłady: n find. –name ’*. cpp’ -print n find. –atime +20 –exec rm {} ; n n find. ( -name ’*. [cf]’ –o –name ’*. old’ ) –atime – 5 -print –exec cat {} ; find. –name ’*. cpp’ –size 512 c rm {} ; (C) Mariusz Kopeć, WFi. TJ AGH, 2008 52

Wyszukiwanie plików, cd n slocate – wyszukuje pliki w bazie danych systemu n slocate

Wyszukiwanie plików, cd n slocate – wyszukuje pliki w bazie danych systemu n slocate [opcje] wzorzec_nazwy n najważniejsze opcje: -i -e n ignoruj różnice w wielkości liter; wypisuj tylko istniejące pliki (co spowalnia działanie); wzorzec_nazwy: - określa wzorzec nazwy wyszukiwanych plików; - uwaga: metaznaki ’*’, ’? ’, ’[’ i ’]’ nie traktują w sposób specjalny znaków ’. ’ i ’/’; - jeżeli wzorzec nazwy jest wyrażeniem prostym bez metaznaków, to zwracane nie są nazwy plików zgodne z podanym wyrażeniem, ale zawierające podane wyrażenie; n przykład: slocate plik (C) Mariusz Kopeć, WFi. TJ AGH, 2008 53

Wyszukiwanie plików, cd n whereis – wyszukuje pliki binarne, źródłowe albo pliki manuala poleceń

Wyszukiwanie plików, cd n whereis – wyszukuje pliki binarne, źródłowe albo pliki manuala poleceń n whereis [opcje] nazwa n najważniejsze opcje: -b -m -s -u n wypisuje tylko pliki binarne; tylko pliki manuala; tylko pliki źródłowe; pliki nie należące do powyższych kategorii przykłady: n whereis ls n whereis –m l* n whereis –m –u l* (C) Mariusz Kopeć, WFi. TJ AGH, 2008 54

Lokalizacja pliku polecenia n which – n podaje pełną nazwę pliku, który zostanie wywołany

Lokalizacja pliku polecenia n which – n podaje pełną nazwę pliku, który zostanie wywołany w przypadku wykonywania polecenia o podanej nazwie which [-a] nazwa n opcja -a: wypisuje wszystkie nazwy plików o podanej nazwie, które mogą zostać wykonane; n przykłady: n which test n which –a te* n which –a Moj. Prog (C) Mariusz Kopeć, WFi. TJ AGH, 2008 55

Powłoki (shells) n n Podstawowe zadania powłoki: n interfejs między użytkownikiem a jądrem n

Powłoki (shells) n n Podstawowe zadania powłoki: n interfejs między użytkownikiem a jądrem n interpreter poleceń n język programowania Najważniejsze rodzaje powłok: n n sh (Bourne shell) bash csh tcsh (Bourne again shell) (C shell improved) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 56

Powłoki n Co robi powłoka: n wczytuje wejście (z pliku lub terminala) n dzieli

Powłoki n Co robi powłoka: n wczytuje wejście (z pliku lub terminala) n dzieli wejście na słowa i operatory (tokeny) n przetwarza tokeny na polecenia n zamienia pewne tokeny (np. *) na odpowiednie listy (np. plików) n dokonuje odpowiednich przekierowań strumieni i usuwa odpowiednie operatory i argumenty z listy wykonuje polecenie n czeka na zakończenie polecenia (opcjonalnie) n (C) Mariusz Kopeć, WFi. TJ AGH, 2008 57

bash – znaki specjalne n Niektóre znaki specjalne powłoki: n metaznaki n | potok

bash – znaki specjalne n Niektóre znaki specjalne powłoki: n metaznaki n | potok (pipe) n <, > przekierowanie strumieni n (, ) definiowanie podpowłoki n ; koniec polecenia n & wykonanie polecenia w tle n blank spacja lub tabulator metaznaki nie muszą być otoczone przez blank (C) Mariusz Kopeć, WFi. TJ AGH, 2008 58

bash – znaki specjalne n n inne znaki specjalne: n # komentarz (działa do

bash – znaki specjalne n n inne znaki specjalne: n # komentarz (działa do końca linii) n Enter kontynuacja w następnej linii anulowanie specjalnego znaczenia znaków: n następny znak (poza znaczenia, np: > mkdir Moje wyniki n ’’ anuluje specjalne znaczenie znaków n ”” anuluje specjalne znaczenie znaków z wyjątkiem znaków ’$’, ’’, ’`’ (C) Mariusz Kopeć, WFi. TJ AGH, 2008 Enter) nie ma specjalnego 59

bash - rozwinięcia n rozwinięcie nawiasów klamrowych {}: n n {a, b} podstawiana jest

bash - rozwinięcia n rozwinięcie nawiasów klamrowych {}: n n {a, b} podstawiana jest lista a b : > echo {a, b} aa ab ba bb rozwinięcie tyldy ~: n n n ~ $HOME (katalog domowy użytkownika) > echo ~ /home/prac/mariusz ~aga katalog domowy użytkownika aga > echo ~aga /home/stud/aga ~nic (C) Mariusz Kopeć, WFi. TJ AGH, 2008 jeżeli wynikowy katalog nie istnieje to rozwinięcie nie jest przeprowadzane 60

bash - rozwinięcia n rozwinięcie parametrów: n n n ustalam przykładowo wartość parametru par:

bash - rozwinięcia n rozwinięcie parametrów: n n n ustalam przykładowo wartość parametru par: > par=projekt ${par} projekt > echo ${par} projekt (= $par) ${par: -słowo} jeżeli parametr par jest ustawiony to podstawiana jest jego wartość : > echo ${par: -~} projekt jeżeli nie, podstawiana jest wartość słowa, a parametr nie jest ustawiany: > echo ${rap: -~} /home/prac/mariusz (C) Mariusz Kopeć, WFi. TJ AGH, 2008 61

n ${par: =słowo} jeżeli parametr par nie jest ustawiony to podstawiana jest do niego

n ${par: =słowo} jeżeli parametr par nie jest ustawiony to podstawiana jest do niego wartość słowa: > echo $rap > echo ${rap: =~} /home/prac/mariusz > echo $rap /home/prac/mariusz n ${par: +słowo} jeżeli parametr par nie jest ustawiony to rozwinięcie jest puste; jeśli jest ustawiony, rozwinięcie jest rozwinięciem słowa: > echo ${par: +~} /home/prac/mariusz > echo $par projekt (C) Mariusz Kopeć, WFi. TJ AGH, 2008 62

bash - podstawienia n podstawienie poleceń: n $(polecenie) podstawiany jest wynik polecenia albo n

bash - podstawienia n podstawienie poleceń: n $(polecenie) podstawiany jest wynik polecenia albo n `polecenie` podstawiany jest wynik polecenia > echo ’Dlugosc pliku: ’ > `cat ls. txt | wc –l` > ’linii’ Dlugosc pliku: 198 linii (C) Mariusz Kopeć, WFi. TJ AGH, 2008 63

bash - podstawienia n n podstawienie nazw plików: n * ciąg znaków (w tym

bash - podstawienia n n podstawienie nazw plików: n * ciąg znaków (w tym pusty) nie zaczynający się od ’. ’ n ? jeden dowolny znak (ale nie ’. ’ na początku) n [. . . ] jeden z wymienionych znaków n [. -. ] jeden znak z zakresu n [!. . . ] jeden znak z wyłączeniem wymienionych jak to działa? n n wynikiem podstawienia jest lista nazw plików z bieżącego katalogu, pasujących do podanego wzorca jeżeli lista taka jest pusta, podstawienie jest dokonywane (wynikiem jest sam wzorzec) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 64

bash - rozwinięcia n rozwinięcie arytmetyczne: n n jak to działa? n n n

bash - rozwinięcia n rozwinięcie arytmetyczne: n n jak to działa? n n n $(( wyrażenie )) wszystkie elementy wyrażenia podlegają rozwinięciu parametrów i podstawieniu poleceń wynikiem rozwinięcia jest wynik wyrażenia arytmetycznego przykłady: n n n > echo $((2+5)) 7 > echo $((`ls –l | wc –l`+3)) 55 > echo $((`wc –l<ls. txt`>`ls –l|wc –l`)) 1 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 65

bash - rozwinięcia n kolejność działań w rozwinięciu: n id++ id-- post-in/dekrementacja zmiennej n

bash - rozwinięcia n kolejność działań w rozwinięciu: n id++ id-- post-in/dekrementacja zmiennej n ++id --id pre-in/dekrementacja zmiennej n -+ znak – lub + n ! ~ negacja logiczna i binarna n ** potęgowanie n * / % mnożenie, dzielenie, modulo n + - dodawanie i odejmowanie n << >> przesunięcia bitowe n < > <= >= porównania arytmetyczne n == != równość i nierówność (C) Mariusz Kopeć, WFi. TJ AGH, 2008 66

bash - rozwinięcia n kolejność działań, cd: n & bitowe AND n ^ bitowe

bash - rozwinięcia n kolejność działań, cd: n & bitowe AND n ^ bitowe XOR n | bitowe OR n && logiczne AND n || logiczne OR n expr ? expr : expr wyrażenie warunkowe n n = *= /= %= += -= <<= >>= &= ^= |= przypisania expr 1 , expr 2 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 przecinek 67

bash - przekierowania n przekierowanie strumieni: n numery strumieni: n n n 0 –

bash - przekierowania n przekierowanie strumieni: n numery strumieni: n n n 0 – standardowe wejście 1 – standardowe wyjście 2 – wyjście diagnostyczne (error) n przekierowanie wejścia: <word n przekierowanie wyjścia: >word n przekierowanie wyjścia diagn. : 2>word n łączne przekierowanie 1 i 2: >word 2>&1 n Uwaga: >word 2>&1 >word Operatory przekierowania (z zastrzeżeniem powyższej uwagi) mogą pojawić się w dowolnym miejscu linii polecenia, np. : > > ls. txt man ls (C) Mariusz Kopeć, WFi. TJ AGH, 2008 68

bash - przekierowania n „here document”: > polecenie <<ogranicznik >. . > ogranicznik {nie

bash - przekierowania n „here document”: > polecenie <<ogranicznik >. . > ogranicznik {nie „-”} Przykład: > > > 1 cat <<moj_ogr 1 linia tekstu moj_ogr linia tekstu Ogranicznik w linii polecenia nie musi być dosunięty : > > > 1 cat << moj_ogr 1 linia tekstu moj_ogr linia tekstu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 69

bash - przekierowania Znak ’-’ może być ogranicznikiem, jeżeli nie jest dosunięty do operatora

bash - przekierowania Znak ’-’ może być ogranicznikiem, jeżeli nie jest dosunięty do operatora przekierowania: > > > 1 cat << 1 linia tekstu Znak ’-’ dosunięty do operatora daje osobny operator ’<<-’, którego działanie umożliwia wprowadzanie końcowego ogranicznika poprzedzonego znakami tabulacji: > cat <<moj_ogr > 1 linia tekstu > moj_ogr 1 linia tekstu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 70

bash - przekierowania Jeżeli ogranicznik jest ujęty w apostrofy, to wprowadzane linie są rozwijane;

bash - przekierowania Jeżeli ogranicznik jest ujęty w apostrofy, to wprowadzane linie są rozwijane; w przeciwnym razie podlegają one rozwinięciu parametrów, rozwinięciu arytmetycznemu i podstawieniu poleceń: > cat <<’moj_ogr’ > `whoami` > moj_ogr `whoami` ale > cat <<moj_ogr > `whoami` > moj_ogr mariusz Zagadka: co będzie wynikiem następującego polecenia: > <<- - cat - ls. txt > $((2+5)) > 7 zawartość pliku ls. txt (C) Mariusz Kopeć, WFi. TJ AGH, 2008 71

bash - listy n Lista – sekwencja poleceń (potoków) oddzielonych separatorami: ; & &&

bash - listy n Lista – sekwencja poleceń (potoków) oddzielonych separatorami: ; & && || n polecenie 1 & polecenie 2 n n polecenie 1 ; polecenie 2 n n polecenie 1 i polecenie 2 wykonywane są sekwencyjnie polecenie 1 && polecenie 2 n n polecenie 1 wykonywane jest asynchronicznie (w tle) polecenie 2 wykonywane jest tylko wtedy, gdy polecenie 1 zwróci status 0 (zakończy się sukcesem) polecenie 1 || polecenie 2 n polecenie 2 wykonywane jest tylko wtedy, gdy polecenie 1 zwróci status 0 (zakończy się błędem) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 72

bash – grupowanie poleceń n Grupowanie poleceń – lista wykonywana jest jako osobna całość

bash – grupowanie poleceń n Grupowanie poleceń – lista wykonywana jest jako osobna całość przekierowanie strumieni może wówczas dotyczyć całej grupy n (lista) n n tworzona jest podpowłoka w której lista jest wykonywana > (mkdir Test; cd Test) > pwd /home/prac/mariusz { lista; } n lista jest wykonywana w bieżącej powłoce > { mkdir Test; cd Test; } > pwd /home/prac/mariusz/Test (C) Mariusz Kopeć, WFi. TJ AGH, 2008 73

bash - test n Polecenie test Zwraca wynik wyrażenia testującego test [wartość1] operator wartość2

bash - test n Polecenie test Zwraca wynik wyrażenia testującego test [wartość1] operator wartość2 albo n [ [wartość1] operator wartość2] n n porównania liczbowe n n n -gt -lt -eq -ge -le -ne (C) Mariusz Kopeć, WFi. TJ AGH, 2008 większy od mniejszy od równy większy lub równy mniejszy lub równy różny od 74

bash - test n przykład: zwraca 0 gdy wartość zmiennej ”zm” jest równa 1

bash - test n przykład: zwraca 0 gdy wartość zmiennej ”zm” jest równa 1 [ $zm –eq 1 ] n wybrane operacje na plikach: n n n n -e plik -d plik -f plik -r plik -w plik -x plik plik istnieje istnieje i i i jest katalogiem jest plikiem zwykłym można go czytać można do niego pisać można go wykonać przykład: [ –f moj_plik ] (C) Mariusz Kopeć, WFi. TJ AGH, 2008 zwraca 0 gdy ”moj_plik” istnieje i jest plikiem zwykłym 75

bash - test n wybrane operacje na tekstach (stringach): n n n n string

bash - test n wybrane operacje na tekstach (stringach): n n n n string -z string 1=string 2 string 1==string 2 string 1!=string 2 string 1<string 2 string 1>string 2 string ma niezerową długość string ma zerową długość stringi 1 i 2 są równe to samo co powyżej stringi 1 i 2 nie są równe string 1 poprzedza leksykalnie string 2 poprzedza leksykalnie string 1 przykłady: [ $odp = ”tak”] zmienna ”odp” ma wartość ”tak” [ $zmienna ] ”zmienna” ma niezerową długość [ -z $zmienna ] ”zmienna” ma zerową długość (C) Mariusz Kopeć, WFi. TJ AGH, 2008 76

bash - let n Polecenie let Wykonuje operacje na wielkościach arytmetycznych let wyrażenie albo

bash - let n Polecenie let Wykonuje operacje na wielkościach arytmetycznych let wyrażenie albo n ((wyrażenie)) n W wyrażeniach występują wartości lub zmienne numeryczne oraz operatory opisane w rozwinięciu arytmetycznym. n Przykłady: > let n=n+1 > ((m=m+1)) > ((m>n)) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 77

bash - let n Użyte zmienne nienumeryczne inicjowane są wartością 0 n Odnosząc się

bash - let n Użyte zmienne nienumeryczne inicjowane są wartością 0 n Odnosząc się do wartości zmiennej nie musimy poprzedzać jej znakiem ”$” > > > 1 n > > > 1 unset m ((m=m+1)) echo $m W konstrukcji ((. . . )) w wyrażeniach mogą występować spacje: > n m=sto ((m=m+1)) echo $m (( m = m + 1 )) ok W konstrukcji let wyrażenia ze spacjami muszą być ujęte w cudzysłowy: > let m=m+1 ok > let ”m = m + 1” ok > let m = m + 1 błąd (C) Mariusz Kopeć, WFi. TJ AGH, 2008 78

bash - let n W wyrażeniach można używać operatora przecinka: > > > 1

bash - let n W wyrażeniach można używać operatora przecinka: > > > 1 n unset m (( m = m+2, m++, m*=3 )) echo $m Jeżeli ostatnie wyrażenie ma wartość równą 0, to let zwraca 1, a w przeciwnym razie zwraca 0 > > 1 (( m = m+2, m++, m = 0 )) echo $? wypisuje kod powrotu > > 0 (( m=2, m++, m*=2 )) echo $? (C) Mariusz Kopeć, WFi. TJ AGH, 2008 wypisuje kod powrotu 79

bash - pętle n Konstrukcje pętli Uwaga: syntaktyczny ’; ’ może być zastąpiony przez

bash - pętle n Konstrukcje pętli Uwaga: syntaktyczny ’; ’ może być zastąpiony przez znak nowej linii (/ Enter) n until polecenia_testujące; do polecenia_do_wykonania; done polecenia_do_wykonania wykonywane są tak długo, dopóki polecenia_testujące zwracają zerowy kod powrotu n while polecenia_testujące; do polecenia_do_wykonania; done polecenia_do_wykonania wykonywane są tak długo, dopóki polecenia_testujące zwracają niezerowy kod powrotu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 80

bash - pętle n Przykłady pętli until > > > 4 m=5 until [

bash - pętle n Przykłady pętli until > > > 4 m=5 until [ $m –eq 0 ]; do let m=m-1 echo –n ”$m ” done 3 2 1 0 > m=5 > until ((m--=0)); do > echo –n ”$m ” > done 4 3 2 1 0 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 81

bash - pętle n Przykłady pętli while > > > 4 m=5 while [

bash - pętle n Przykłady pętli while > > > 4 m=5 while [ $m –gt 0 ]; do let m=m-1 echo –n ”$m ” done 3 2 1 0 > m=5 > while ((m-->0)); do > echo –n ”$m ” > done 4 3 2 1 0 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 82

bash - pętle n for nazwa [in słowo. . . ]; do polecenia_do_wykonania; done

bash - pętle n for nazwa [in słowo. . . ]; do polecenia_do_wykonania; done słowo jest rozwijane; polecenia_do_wykonania wykonywane są tak długo, dopóki nazwa odpowiada kolejnym elementom rozwinięcia; jeżeli [in słowo. . . ] nie pojawia się, porównuje się nazwę z kolejnymi parametrami pozycyjnymi n for (( wyr 1; wyr 2; wyr 3 )); do polecenia_do_wykonania; done wyrażenia wyr 1, wyr 2, wyr 3 są wyrażeniami arytmetycznymi, a działanie pętli jest takie jak w C (C) Mariusz Kopeć, WFi. TJ AGH, 2008 83

bash - pętle n Przykłady pętli for > for name in *. c; do

bash - pętle n Przykłady pętli for > for name in *. c; do > echo ”Nazwa pliku: $name” > done > for name; do > echo ”Kolejny parametr: $name” > done > for ((n=0; n<5; n++)); do > echo ”N=$n” > done (C) Mariusz Kopeć, WFi. TJ AGH, 2008 84

bash – instrukcje warunkowe n Konstrukcje warunkowe Uwaga: syntaktyczny ’; ’ może być zastąpiony

bash – instrukcje warunkowe n Konstrukcje warunkowe Uwaga: syntaktyczny ’; ’ może być zastąpiony przez znak nowej linii (/ Enter) n if polecenia_testujące; then polecenia_do_wykonania; [elif inne_polecenia_testujące; then inne_polecenia_do_wykonania; ] [else polecenia_alternatywne; ] fi w zależności od wyniku poleceń testujących wykonywane są odpowiednie zestawy poleceń (C) Mariusz Kopeć, WFi. TJ AGH, 2008 85

bash – instrukcje warunkowe n case słowo in [ [(] wzór [| wzór]. .

bash – instrukcje warunkowe n case słowo in [ [(] wzór [| wzór]. . . ) polecenia ; ; . . . esac jeżeli słowo znajduje się na liście wzorów, to wykonywane są polecenia n Przykład case $swiatlo in czerwone ) echo ”STOP” ; ; zielone ) echo ”JAZDA” ; ; default ) echo ”CZEKAJ” ; ; esac (C) Mariusz Kopeć, WFi. TJ AGH, 2008 86

bash – parametry n Parametry i zmienne powłoki n parametry – przechowują wartość (nazwę,

bash – parametry n Parametry i zmienne powłoki n parametry – przechowują wartość (nazwę, liczbę, . . . ) n parametry pozycyjne: np. $1, $9, ${12} n n Przykład: kolejne parametry z linii wywołania polecenia parametry specjalne: n $0 – nazwa powłoki lub wykonywanego skryptu n $* – wszystkie parametry pozycyjne razem n $# – ilość parametrów pozycyjnych > cat mtest echo ’$1=’$1’ $2=’$2’ $0=’$0’ $#=’$#’ $*=’$* >. mtest Moj test $1=Moj $2=test $0=bash $#=2 $*=Moj test (C) Mariusz Kopeć, WFi. TJ AGH, 2008 87

bash - zmienne n – nazwane parametry przypisanie zmiennej wartości: n zmienna 1=wartość podczas

bash - zmienne n – nazwane parametry przypisanie zmiennej wartości: n zmienna 1=wartość podczas przypisania dokonywane są wszystkie konieczne rozwinięcia n do wartości zmiennej odwołujemy się następująco: n $zmienna 1 Przykład 1: Przykład 2: > zmienna 1=~ > echo $zmienna 1 > /home/prac/mariusz > i=5 > j=$i+2 > echo $((j)) 7 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 88

bash – zmienne powłoki n zmienne powłoki (automatycznie ustawiane) n zmienne powłoki sh (są

bash – zmienne powłoki n zmienne powłoki (automatycznie ustawiane) n zmienne powłoki sh (są też w bash): n HOME katalog domowy użytkownika n IFS lista znaków-separatorów pól n PATH lista katalogów, w których powłoka szuka programów do wykonania n PS 1 podstawowy znak zachęty powłoki (default: ’s-v$’) n PS 2 drugi znak zachęty powłoki (default: ’> ’) Jak odczytać ich wartości? Na przykład: (C) Mariusz Kopeć, WFi. TJ AGH, 2008 > echo $PATH 89

bash – zmienne powłoki n zmienne powłoki bash (w sh ich nie było): n

bash – zmienne powłoki n zmienne powłoki bash (w sh ich nie było): n BASH_VERSION numer wersji wykonywanej powłoki bash n HISTSIZE max. liczba pamiętanych poleceń (d: 500) n HOSTNAME nazwa hosta n HOSTTYPE typ maszyny n MACHTYPE typ maszyny n PROMPT_COMMAND polecenie wykonywane przed wypisaniem $PS 1 n PWD bieżący katalog n UID identyfikator użytkownika (C) Mariusz Kopeć, WFi. TJ AGH, 2008 90

bash – wykonywanie poleceń n Jak powłoka znajduje polecenia do wykonania? 1. Jeżeli nazwa

bash – wykonywanie poleceń n Jak powłoka znajduje polecenia do wykonania? 1. Jeżeli nazwa polecenia zawiera ’/’ to polecenie traktowane jest jako program i wykonywane we własnym środowisku. 2. Jeżeli nie, to wykonywana jest funkcja powłoki o tej nazwie (o ile istnieje). Wykonanie następuje w środowisku powłoki. 3. Jeżeli takiej funkcji nie ma, to wykonywane jest polecenie wbudowane powłoki (builtin) o tej nazwie. Wykonanie następuje w środowisku powłoki. 4. Jeżeli takiego polecenia nie ma, to program o podanej nazwie poszukiwany jest w katalogach podanych w PATH. Wykonanie następuje w osobnym środowisku. 5. Jeżeli znaleziony plik nie jest w formacie wykonywalnym, to traktowany jest jako skrypt powłoki. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 91

bash – funkcje powłoki n Funkcje powłoki n grupują polecenia do późniejszego wykonania n

bash – funkcje powłoki n Funkcje powłoki n grupują polecenia do późniejszego wykonania n [function] nazwa () { lista polecen; } n Przykład: > > moja_funkcja () { echo To jest moja funkcja ls ls –l | wc –l; } > moja_funkcja To jest moja funkcja ls. txt plik 1. txt plik 2. txt 3 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 92

bash – polecenia wbudowane n Polecenia wbudowane powłoki sh n . polecenie [argumenty] wykonuje

bash – polecenia wbudowane n Polecenia wbudowane powłoki sh n . polecenie [argumenty] wykonuje polecenie (program) w bieżącym środowisku n cd [nazwa katalogu] zmienia bieżący katalog n pwd [nazwa katalogu] wypisuje nazwę bieżącego katalogu n exit [n] kończy pracę powłoki zwracając kod wyjścia n n export [nazwa[=wartość]] przekazuje wielkość określoną przez nazwę (zmienną, funkcję powłoki) do środowisk procesów potomnych; jeżeli nazwy nie podano wypisuje eksportowane wielkości (C) Mariusz Kopeć, WFi. TJ AGH, 2008 93

bash – polecnia wbudowane n return [n] wyjście z funkcji powłoki z kodem n

bash – polecnia wbudowane n return [n] wyjście z funkcji powłoki z kodem n n shift [n] przesunięcie parametrów pozycyjnych o n pozycji n test wyrażenie lub [ wyrażenie ] zwraca wynik opracowania wyrażenia n set [ -opcje ] [ -o opcje] [ argumenty ] ustawia lub kasuje atrybutu powłoki; set pokazuje zmienne n unset [nazwa] usuwa ustawione wcześniej zmienne lub funkcje powłoki (C) Mariusz Kopeć, WFi. TJ AGH, 2008 94

bash – polecenia wbudowane n Polecenia wbudowane powłoki bash n alias [nazwa[=wartość]] ustawia lub

bash – polecenia wbudowane n Polecenia wbudowane powłoki bash n alias [nazwa[=wartość]] ustawia lub wypisuje aliasy n unalias [nazwa] usuwa aliasy n declare [nazwa[=wartość]] deklaruje zmienne i nadaje im wartość; wypisuje zmienne n echo [argumenty] wypisuje argumenty oddzielając je blankami i kończąc n n enable [-n] [-p] [polecenie wbudowane] uaktywnia/deaktywuje/wypisuje polecenia wbudowane (C) Mariusz Kopeć, WFi. TJ AGH, 2008 95

bash – polecenia wbudowane n let wyrażenie [wyrażenie] wykonuje wyrażenie arytmetyczne n logout [n]

bash – polecenia wbudowane n let wyrażenie [wyrażenie] wykonuje wyrażenie arytmetyczne n logout [n] wyjście z powłoki logowania z kodem powrotu n n printf format [argumenty] wypisuje argumenty zgodnie z formatem n read [opcje] [nazwa. . . ] wczytuje linię ze standardowego wejścia n type [nazwa] wskazuje jak interpretowana będzie nazwa jeśli zostanie podana jako nazwa polecenia (C) Mariusz Kopeć, WFi. TJ AGH, 2008 96

bash – polecenia wbudowane n shopt [opcje] wypisuje albo przełącza atrybuty powłoki n ulimit

bash – polecenia wbudowane n shopt [opcje] wypisuje albo przełącza atrybuty powłoki n ulimit [opcje] [limit] pokazuje albo ustawia limity powłoki n help wyświetla informacje o poleceniach powłoki n pushd katalog przechodzi do katalogu i zapisuje go na stosie n popd zdejmuje nazwę katalogu ze stosu i wykonuje do niego cd n dirs wypisuje stos katalogów (C) Mariusz Kopeć, WFi. TJ AGH, 2008 97

bash – sterowanie procesami n Polecenia sterowania procesami powłoki bash n suspend (ctrl Z)

bash – sterowanie procesami n Polecenia sterowania procesami powłoki bash n suspend (ctrl Z) zatrzymuje wykonanie procesu n jobs wypisuje aktywne procesy n bg nr_procesu np. %1 kontynuacja realizacji zatrzymanego procesu w tle ( jak &) n fg nr_procesu np. %1 kontynuacja realizacji zatrzymanego n kill [-s sygnał] nr_procesu lub pid przesyła sygnał do procesu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 98

bash - przykłady n Przykłady rozwinięcia linii polecenia: > echo ls p*. txt ls

bash - przykłady n Przykłady rozwinięcia linii polecenia: > echo ls p*. txt ls p 1. txt pl 2. txt plik 1. txt plik 2. txt n p*. txt zastępowane jest odpowiednią listą plików > echo ls p{l, lik}*. txt ls pl 1. txt pl 2. txt plik 1. txt plik 2. txt rozwinięcie następuje w dwóch krokach: p{l, lik}*. txt -> pl*. txt plik*. txt ->. . . n > echo cat `whoami` ~ $((2+3)) {a, b}c p? . txt cat mariusz /home/prac/mariusz 5 ac bc p 1. txt p 2. txt n przeprowadzane są wszystkie konieczne rozwinięcia (C) Mariusz Kopeć, WFi. TJ AGH, 2008 99

bash - skrypty n Skrypty n n skrypt – sekwencja poleceń wykonywana przez interpreter

bash - skrypty n Skrypty n n skrypt – sekwencja poleceń wykonywana przez interpreter (powłokę), zapisana jako samodzielny plik. wykonanie skryptu: n bash plik_skryptu skrypt jest wykonywany w nowym otoczeniu n . plik_skryptu skrypt jest wykonywany w bieżącym otoczeniu n . /plik_skryptu skrypt jest wykonywany w nowym otoczeniu. Uwaga: plik_skryptu musi mieć mod pozwalający na wykonanie (C) Mariusz Kopeć, WFi. TJ AGH, 2008 100

bash - skrypty n ustalenie programu wykonującego skrypt w pierwszej linii skryptu podawana jest

bash - skrypty n ustalenie programu wykonującego skrypt w pierwszej linii skryptu podawana jest nazwa programu wraz z pełną ścieżką dostępu: n #!/bin/bash skrypt wykonany będzie przez bash n #!/bin/csh skrypt wykonany będzie przez csh n #!/bin/tcsh skrypt wykonany będzie przez tcsh mogą być też inne programy: skrypt wykonany będzie przez sed n #!/bin/sed -f n #!/usr/bin/perl skrypt wykonany będzie przez perl n #!/usr/bin/less skrypt wykonany będzie przez less (C) Mariusz Kopeć, WFi. TJ AGH, 2008 101

bash - skrypty n Przykłady skryptów n Skrypt z pętlą while, wypisujący ostatni podany

bash - skrypty n Przykłady skryptów n Skrypt z pętlą while, wypisujący ostatni podany parametr: #!/bin/bash parametry=”” while [ $# -gt 1 ]; do parametry=”$parametry $1” shift done ostatni_parametr=$1 shift echo $parametry echo $ostatni_parametr (C) Mariusz Kopeć, WFi. TJ AGH, 2008 102

bash - skrypty n Skrypt z konstrukcją warunkową if #!/bin/bash echo "Pytamy o plik

bash - skrypty n Skrypt z konstrukcją warunkową if #!/bin/bash echo "Pytamy o plik $1" if [ -e $1 ]; then echo "Plik $1 istnieje"; if [ -d $1 ]; then echo "Plik $1 jest katalogiem"; else echo "Plik $1 nie jest katalogiem"; fi else echo "Plik $1 nie istnieje"; fi (C) Mariusz Kopeć, WFi. TJ AGH, 2008 103

bash - skrypty n Skrypt z pętlą for #!/bin/bash echo Rozwiniecie nazw plikow: *

bash - skrypty n Skrypt z pętlą for #!/bin/bash echo Rozwiniecie nazw plikow: * for ff in *; do if file $ff | grep text > /dev/null; then echo "Plik $ff jest plikiem tekstowym" fi done n n Skrypt wypisuje nazwy plików z bieżącego katalogu i informuje czy dany plik jest plikiem tekstowym Skrypt ten jest wywoływany bez parametrów (C) Mariusz Kopeć, WFi. TJ AGH, 2008 104

bash - skrypty n Skrypt z pętlą while i konstrukcją case #!/bin/bash while true;

bash - skrypty n Skrypt z pętlą while i konstrukcją case #!/bin/bash while true; do echo –n ”Wypisac biezacy katalog? (y/n) ” read yn case $yn in y* | Y* ) ls –l. ; break ; ; [n. N]* ) echo ”pomijamy” ; break ; ; q* ) exit ; ; * ) echo ”Niezrozumiala odpowiedz” ; ; esac done (C) Mariusz Kopeć, WFi. TJ AGH, 2008 105

bash - skrypty n Skrypt z obliczeniami arytmetycznymi #!/bin/bash a=0 b=0 c=0 d=0 while

bash - skrypty n Skrypt z obliczeniami arytmetycznymi #!/bin/bash a=0 b=0 c=0 d=0 while [ $a –le 4 ]; do echo $a $b $c $d a=$(($a + 1)) b=$((b + a)) d=$((c += a)) done n n W rozwinięciu arytmetycznym zmienna może być używana bez poprzedzającego znaku $ Wynikiem rozwinięcia arytmetycznego jest wartość w instrukcji przypisania (C) Mariusz Kopeć, WFi. TJ AGH, 2008 106

bash - skrypty n Skrypt zaw_kat wykorzystujący instrukcję pustą #!/bin/bash katalog=”$1” : ${katalog: =$HOME}

bash - skrypty n Skrypt zaw_kat wykorzystujący instrukcję pustą #!/bin/bash katalog=”$1” : ${katalog: =$HOME} echo ”Zawartosc katalogu $katalog: ” ls – 1 ”$katalog” n Przykłady wykonania: > zaw_kat > Zawartosc katalogu /home/prac/mariusz. . . > zaw_kat. > Zawartosc katalogu. . (C) Mariusz Kopeć, WFi. TJ AGH, 2008 107

bash –konfiguracja n Podstawy konfiguracji powłoki n Pliki konfiguracyjne dla login shell n n

bash –konfiguracja n Podstawy konfiguracji powłoki n Pliki konfiguracyjne dla login shell n n n /etc/profile ~/. bash_login ~/. profile ~/. bash_logout Pliki konfiguracyjne dla non-login shell n /etc/bashrc n ~/. bashrc (C) Mariusz Kopeć, WFi. TJ AGH, 2008 108

bash - konfiguracja n Konfiguracja znaku zachęty n PS 1=’[u@h w]$’ n znaczenie: n

bash - konfiguracja n Konfiguracja znaku zachęty n PS 1=’[u@h w]$’ n znaczenie: n n n u h H w s t A $ ! n \ (C) Mariusz Kopeć, WFi. TJ AGH, 2008 nazwa użytkownika nazwa hosta pełna nazwa hosta (z domeną) bieżący katalog nazwa powłoki czas HH: MM: SS czas HH: MM # dla roota, $ dla innych numer polecenia w zapisie historii newline backslash 109

bash – skróty klawiaturowe n Niektóre przydatne kombinacje klawiszy n edycja linii komend n

bash – skróty klawiaturowe n Niektóre przydatne kombinacje klawiszy n edycja linii komend n n n C-a C-e C-l C-_ A-r przesunięcie kursora na początek linii przesunięcie kursora na koniec linii clear screen usuwanie wprowadzonych zmian (kolejne) usunięcie wszystkich zmian poruszanie się po pliku historii n n A-< A-> C-r C-s (C) Mariusz Kopeć, WFi. TJ AGH, 2008 na początek pliku historii na koniec pliku historii szukanie wstecz w pliku historii szukanie do przodu w pliku historii 110

bash – skróty klawiaturowe n uzupełnienia n n n TAB A-? A-/ A-~ A-@

bash – skróty klawiaturowe n uzupełnienia n n n TAB A-? A-/ A-~ A-@ A-! (C) Mariusz Kopeć, WFi. TJ AGH, 2008 uzupełnienia ogółem wypisz możliwe uzupełnienia uzupełnienie nazwy pliku uzupełnienie nazwy użytkownika uzupełnienie nazwy hosta uzupełnienie poleceń 111

bash – historia poleceń n Korzystanie z historii poleceń n operuje na liście historii

bash – historia poleceń n Korzystanie z historii poleceń n operuje na liście historii fc n fc –l listuje ostatnio wykonane polecenia wraz z ich numerami z listy historii n fc –l n 1 n 2 listuje polecenia o numerach od n 1 do n 2 n fc n 1 n 2 wpisuje polecenia o numerach od n 1 do n 2 do edytora; po edycji polecenia są kolejno wykonywane. n fc –s old=new wykonuje poprzednie polecenie po zastąpieniu old przez new (C) Mariusz Kopeć, WFi. TJ AGH, 2008 112

bash – historia poleceń n history operuje na liście i/lub pliku historii n history

bash – historia poleceń n history operuje na liście i/lub pliku historii n history [n] listuje [n] ostatnich pozycji z listy historii wraz z ich numerami; pozycje oznaczone ‘*’ zostały zmodyfikowane n history -c kasuje listę historii n history –d n kasuje pozycję n z listy historii n history -a dołącza nowe pozycje (wprowadzone od początku bieżącej sesji bash) do pliku historii n history -r wczytuje plik historii i dołącza jego zawartość do aktualnej listy historii (C) Mariusz Kopeć, WFi. TJ AGH, 2008 113

bash – historia poleceń n rozwinięcia historii n !n linia n z listy historii

bash – historia poleceń n rozwinięcia historii n !n linia n z listy historii n !-n linia –n pozycji wstecz na liście historii n !! poprzednia linia (to samo co ’!-1’) n !string ostatnia linia zaczynająca się od string n !? string ostatnia linia zawierająca string n ^old^new^ powtarza ostatnie polecenie zastępując old przez new n !n: p wypisuje linię n z listy historii, ale jej nie wykonuje (C) Mariusz Kopeć, WFi. TJ AGH, 2008 114

Zarządzanie procesami n Informacje o procesach n top n pokazuje aktywne procesy z czasie

Zarządzanie procesami n Informacje o procesach n top n pokazuje aktywne procesy z czasie rzeczywistym Sterowanie zachowaniem programu: n h lub ? help n spacja odświeżenie ekranu n f zmiana formatu wyświetlanych wyników n n określenie ilości śledzonych procesów n k przesłanie sygnału do procesu (kill) n q quit (C) Mariusz Kopeć, WFi. TJ AGH, 2008 115

Zarządzanie procesami 14: 22: 12 up 12 days, 4: 55, 23 users, load average:

Zarządzanie procesami 14: 22: 12 up 12 days, 4: 55, 23 users, load average: 1. 31, 1. 21, 1. 18 219 processes: 217 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 0. 4% user, 1. 7% system, 49. 8% nice, 48. 7% idle Mem: 515152 K total, 462184 K used, 52912 K free, 25800 K buffers Swap: 536136 K total, 126633 K used, 463500 K free, 228936 K cache PID USER 29203 mariusz 1 root. . . PRI: RSS: STAT: %CPU: %MEM: PRI 12 8 NI 0 0 SIZE RSS SHARE STAT %CPU %MEM 1076 748 R 1. 7 0. 2 468 424 S 0. 0 TIME COMMAND 0. 45 top 0. 15 init priorytet procesu wykorzystywana pamięć fizyczna status procesu (Running, Sleeping, Zombie, Traced/s. Topped) procentowe wykorzystanie czasu CPU procentowe wykorzystanie pamięci (C) Mariusz Kopeć, WFi. TJ AGH, 2008 116

Zarządzanie procesami n ps pokazuje aktywne procesy n ps –ef wypisuje wszystkie procesy w

Zarządzanie procesami n ps pokazuje aktywne procesy n ps –ef wypisuje wszystkie procesy w formacie pełnym n ps –fu user wypisuje wszystkie procesy użytkownika user n ps a wypisuje wszystkie procesy (w tym innych użytkowników) skojarzone z terminalami n ps –f. Nu user wypisuje wszystkie procesy użytkowników innych niż user (zwykle root) n ps –C nazwa wypisuje wszystkie procesy związane z poleceniem o podanej nazwie (C) Mariusz Kopeć, WFi. TJ AGH, 2008 117

Zarządzanie procesami n pstree pokazuje działające procesy w formie drzewa n pstree –a pokazuje

Zarządzanie procesami n pstree pokazuje działające procesy w formie drzewa n pstree –a pokazuje działające procesy wraz z odpowiednimi argumentami linii poleceń n pstree –h zaznacza rozjaśnieniem bieżący proces oraz jego ’przodków’ n pstree –p wypisuje dodatkowo PID procesów (C) Mariusz Kopeć, WFi. TJ AGH, 2008 118

Zarządzanie procesami n kill przesyła sygnały do procesów n kill –l wypisuje numery i

Zarządzanie procesami n kill przesyła sygnały do procesów n kill –l wypisuje numery i nazwy wszystkich sygnałow n kill –l n wypisuje nazwę sygnału o numerze n n kill pid. . . przesyła sygnał TERM (terminate) do procesów o podanych identyfikatorach pid n kill –n pid przesyła sygnał o numerze n do procesu o podanym identyfikatorze pid Przykład: > kill – 9 1213 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 przesyła sygnał bezwarunkowego zakończenia procesu o pid 1213 119

Zarządzanie procesami n sleep n opóźnia rozpoczęcie następnego procesu o podany interwał czasu sleep

Zarządzanie procesami n sleep n opóźnia rozpoczęcie następnego procesu o podany interwał czasu sleep n[smhd] proces ”nic nie robi” (ale działa) przez n sekund. Dodany modyfikator [smhd] zmienia jednostki czasu: s – sekundy m – minuty h – godziny d - dni Przykład: > sleep 5 s; ls (C) Mariusz Kopeć, WFi. TJ AGH, 2008 polecenie ls zostanie wykonane po 5 sek. 120

Zarządzanie procesami n at wykonuje polecenie wprowadzone ze standardowego wejścia w określonym czasie n

Zarządzanie procesami n at wykonuje polecenie wprowadzone ze standardowego wejścia w określonym czasie n at TIME rozpoczyna wykonanie polecenia o czasie TIME n at –m TIME rozpoczyna wykonanie polecenia o czasie TIME i wysyła mail po zakończeniu działania polecenia Przykłady określenia czasu: HH: MM 10 am Jul 31 1 am tomorrow now + 3 weeks (C) Mariusz Kopeć, WFi. TJ AGH, 2008 121

Zarządzanie procesami n n atq wypisuje zadania użytkownika oczekujące na rozpoczęcie wykonania n atrm

Zarządzanie procesami n n atq wypisuje zadania użytkownika oczekujące na rozpoczęcie wykonania n atrm nr usuwa zadanie o numerze nr z kolejki Przykład: > at –m now + 1 hour <<+ > ls –l > + job 352 at 2004 -01 -22 09: 24 > atq 352 2004 -01 -22 09: 24 a mariusz > atrm 352 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 122

Zarządzanie procesami n batch n n batch -m rozpoczyna wykonanie zadania w tle kiedy

Zarządzanie procesami n batch n n batch -m rozpoczyna wykonanie zadania w tle kiedy obciążenie systemu na to pozwoli wysyła mail po zakończeniu zadania Przykład: > batch <<+ > ls –l > + job 353 at 2004 -01 -22 08: 39 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 123

Zarządzanie procesami n nohup n wykonuje polecenie w sposób ”odporny na zawieszenia” nohup polec

Zarządzanie procesami n nohup n wykonuje polecenie w sposób ”odporny na zawieszenia” nohup polec & wykonuje polecenie polec w tle, nawet jeśli polecenie to przesyła wyniki na wyjście standardowe lub diagnostyczne, które może zostać zamknięte (np. przez wylogowanie użytkownika) Uwaga: Wyjście kierowane jest na plik nohup. out lub $HOME/nohup. out Przykład: > nohup moj_program & (C) Mariusz Kopeć, WFi. TJ AGH, 2008 124

Przestrzeń dyskowa n Informacje o wykorzystaniu przestrzeni dyskowej n du informuje o wykorzystaniu przestrzeni

Przestrzeń dyskowa n Informacje o wykorzystaniu przestrzeni dyskowej n du informuje o wykorzystaniu przestrzeni dyskowej n du podaje dane dla bieżącego katalogu i jego podkatalogów n du -a podaje dane dla wszystkich plików w bieżącym katalogu i jego podkatalogach n du -s podaje tylko sumaryczne dane dla bieżącego katalogu i jego podkatalogów n du -h podaje dane w kilo-, mega- i gigabajtach Przykład: > du –sh 1. 5 M. (C) Mariusz Kopeć, WFi. TJ AGH, 2008 125

Przestrzeń dyskowa n df pokazuje wykorzystanie zamontowanych systemów plików n df -l pokazuje tylko

Przestrzeń dyskowa n df pokazuje wykorzystanie zamontowanych systemów plików n df -l pokazuje tylko lokalne systemy plików n df -T wypisuje dodatkowo typy zamontowanych systemów plików n df –t typ podaje tylko dane dla określonego typu systemu plików n df –x typ podaje dane z wyłączeniem określonego typu systemu plików n df -h podaje dane w kilo-, mega- i gigabajtach (C) Mariusz Kopeć, WFi. TJ AGH, 2008 126

Przestrzeń dyskowa n quota pokazuje wykorzystanie przestrzeni dyskowej oraz przyznane limity n quota wypisuje

Przestrzeń dyskowa n quota pokazuje wykorzystanie przestrzeni dyskowej oraz przyznane limity n quota wypisuje dane dla bieżącego użytkownika n quota –g wypisuje dane dla grup, do których należy bieżący użytkownik Przykład: > quota Disk quotas for user mariusz (uid 751): Filesystem blocks quota limit /dev/sdb 1 8 40960 /dev/sdf 1 39764 40960 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 grace files quota limit 50000 1 0 0 50000 1099 0 0 grace 127

AWK trochę dokładniej n Uruchomienie AWK (GAWK) n gawk ’program’ [plik_wejściowy] [. . .

AWK trochę dokładniej n Uruchomienie AWK (GAWK) n gawk ’program’ [plik_wejściowy] [. . . ] > gawk ’BEGIN {print ”Hello World!”}’ > gawk ’{print}’ <<< ’Hello World!’ > gawk ’//’ <<< ’Hello World!’ > gawk <<< ’Hello World!’ To nie będzie działać! plik. awk: BEGIN {print ”Hello World!”} gawk -f plik_programu [plik_wejściowy] [. . . ] > gawk –f plik. awk n skrypt awk > #!/usr/bin/gawk -f > BEGIN {print ”Hello World!”} n (C) Mariusz Kopeć, WFi. TJ AGH, 2008 128

AWK trochę dokładniej n Program AWK n ciąg poleceń w układzie wzorzec {akcja} n

AWK trochę dokładniej n Program AWK n ciąg poleceń w układzie wzorzec {akcja} n można pominąć wzorzec – akcja wykonywana dla wszystkich linii n można pominąć akcję – akcja domyślna: print n nie można pominąć jednocześnie akcji i wzorca n n n można podawać ciąg poleceń separowanych znakami nowej linii: > gawk ’/time/ {print $1} > /size/ {print $2}’ plik_wejsciowy kontynuacja przez ’’ działa nawet we wzorcach: > gawk ’/Dlugi wzorzec mozna > kontynuowac/ {print $0}’ plik_wejsciowy komentarz ’#’ działa do końca linii (C) Mariusz Kopeć, WFi. TJ AGH, 2008 129

AWK zmienne specjalne n zmienne specjalne: n n n n $0 $n NF NR

AWK zmienne specjalne n zmienne specjalne: n n n n $0 $n NF NR FS RS OFS ORS FILENAME ARGC ARGV ENVIRON wczytany rekord n-te pole rekordu liczba wczytanych pól liczba wczytanych rekordów liczba rekordów wczytanych z bieżącego pliku separator pól separator rekordów wyjściowy separator pól wyjściowy separator rekordów nazwa aktualnie przetwarzanego pliku liczba podanych parametrów pozycyjnych tablica przetrzymująca zmienne środowiskowe (C) Mariusz Kopeć, WFi. TJ AGH, 2008 130

AWK operacje wejścia/wyjścia n operacje wejścia: n n next exit getline zm getline <plik

AWK operacje wejścia/wyjścia n operacje wejścia: n n next exit getline zm getline <plik close(plik) przerywa obróbkę bieżącego rekordu i pobiera następny zatrzymuje przetwarzanie rekordów i przechodzi do END pobiera rekord i wstawia jego zawartość do zmiennej zm pobiera rekord z pliku plik zamyka plik – przy ponownym użyciu rekordy pobierane będą od początku pliku Uwaga: getline zwraca wartość 1 aż do napotkania końca pliku, kiedy zwraca 0 n operacje wyjścia: n n n print ”a” ”b” print ”a”, ”b” print > plik printf(format, arg 1. . . ) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 wypisuje cały rekord na standardowe wyjście wypisuje ”a” i ”b” rozdzielone przez OFS wypisuje rekord do pliku plik wypisuje kolejne argumenty zgodnie z formatem (tak jak w języku C) 131

AWK operacje na tekście n operacje na tekście: n length(str) n index(str 1, str

AWK operacje na tekście n operacje na tekście: n length(str) n index(str 1, str 2) n split(str, tab, zp) n substr(str, poz, dl) zwraca podciąg łańcucha str, zaczynający się na pozycji poz i o długości dl; n match(str, wzór) poszukuje w ciągu str znaków pasujących do wzoru. Jeżeli je znajdzie – zwraca pozycję, jeżeli nie – zwraca 0; n sub(wzór, zast, str) zamienia wzór na zast w ciągu str. Jeżeli str nie podano - przyjmuje $0; Zwraca ilość podstawień; n gsub(wzór, zast, str) n sprintf(format, arg. . . ) działa podobnie jak sub, ale globalnie: zamienia wszystkie wystąpienia, a nie tylko pierwsze; działa podobnie jak printf, ale nie drukuje tylko zwraca utworzony ciąg; (C) Mariusz Kopeć, WFi. TJ AGH, 2008 zwraca liczbę znaków w str. Jeżeli nie podano argumentu, to zwraca liczbę znaków w $0; jeżeli str 1 zawiera str 2 to zwraca pozycję, na której go znaleziono. Jeżeli nie – zwraca 0; kopiuje pola ciągu str oddzielone znakami podziału zp do tablicy tab i zwraca liczbę jej elementów; 132

AWK operacje matematyczne n n operacje na tekście, cd: n toupper(str) zamienia wszystkie litery

AWK operacje matematyczne n n operacje na tekście, cd: n toupper(str) zamienia wszystkie litery w str na duże; n tolower(str) zamienia wszystkie litery w str na małe; operatory matematyczne n n n ++ -^ */% += *= /= %= += -= inkrementacja, dekrementacja; potęgowanie; mnożenie, dzielenie, modulo; dodawanie, odejmowanie; operatory przypisania funkcje matematyczne n n n int(x) sqrt(x) sin(x), cos(x) log(x), exp(x) rand(), srand(liczba) (C) Mariusz Kopeć, WFi. TJ AGH, 2008 zwraca część całkowitą x; zwraca pierwiastek kwadratowy x; funkcje trygonometryczne; logarytm i eksponenta; generatory liczb pseudolosowych; 133

AWK operatory n operatory porównania n n równy, nierówny; większy, większy lub równy; mniejszy,

AWK operatory n operatory porównania n n równy, nierówny; większy, większy lub równy; mniejszy, mniejszy lub równy; operatory logiczne n n == != > >= < <= ! && || negacja, koniunkcja, alternatywa; operatory poszukiwania wzoru n str ~ regex n str !~ regex (C) Mariusz Kopeć, WFi. TJ AGH, 2008 dopasowuje ciąg str do wyrażenia regularnego regex; zwraca prawdę, jeżeli ciąg zawiera się w polu; negacja dopasowania; zwraca prawdę, jeżeli ciąg nie zawiera się w polu; 134

AWK wzory n n wzory specjalne n BEGIN n END wzory zakresów n n

AWK wzory n n wzory specjalne n BEGIN n END wzory zakresów n n wykonuje operacje przed rozpoczęciem przetwarzania danych; wykonuje operacje po zakończeniu przetwarzania danych; war 1, war 2 odnosi się do zakresu linii zaczynającego się od linii spełniającej warunek war 1, a kończącego się na linii spełniającej warunek war 2; zmienne i tablice n zmienne n tablice (C) Mariusz Kopeć, WFi. TJ AGH, 2008 nie są deklarowane; są inicjowane wartością 0 lub ”” w zależności od kontekstu, w którym zostały użyte; tablice asocjacyjne – indeksowane nie są liczbami tylko napisami; 135

AWK wyrażenia regularne n  odbiera specjalne znaczenie następnemu znakowi; n ^ dopasowuje początek

AWK wyrażenia regularne n odbiera specjalne znaczenie następnemu znakowi; n ^ dopasowuje początek stringu (nie koniecznie linii); n $ dopasowuje koniec stringu (nie koniecznie linii); n . dowolny znak, włączając w to ’n’; n [. . . ] lista znaków – dowolny znak z listy; n [^. . . ] lista znaków – dowolny znak spoza listy; n | operator alternatywy; n (. . . ) operator grupowania; n * zero lub więcej wystąpień poprzedniego znaku; n + jedno lub więcej wystąpień poprzedniego znaku; (C) Mariusz Kopeć, WFi. TJ AGH, 2008 136

AWK wyrażenia regularne n wyrażenia regularne, cd n ? zero lub jedno wystąpienie poprzedniego

AWK wyrażenia regularne n wyrażenia regularne, cd n ? zero lub jedno wystąpienie poprzedniego znaku; n {n } powtórzenie poprzedniego wyrażenia n razy; n {n, } powtórzenie co najmniej n razy; n {, n} powtórzenie co najwyżej n razy; n {m , n } powtórzenie od m do n razy; n w litera, cyfra lub ’_’; n W nie w; n < pusty string na początku słowa; n > pusty string na końcu słowa; n B niepusty string na krawędzi słowa; (C) Mariusz Kopeć, WFi. TJ AGH, 2008 137

AWK instrukcje n instrukcja warunkowa if n if (warunek) instrukcja else instrukcja n Przykłady:

AWK instrukcje n instrukcja warunkowa if n if (warunek) instrukcja else instrukcja n Przykłady: if (x % 2 == 0) print ”x jest parzyste” else print ”x jest nieparzyste” if (x % 2 == 0) print ”parzyste”; else print ”nieparzyste” if (x % 2 == 0) { print ”parzyste” print ”OK” } else print ”nieparzyste” (C) Mariusz Kopeć, WFi. TJ AGH, 2008 138

AWK instrukcje n instrukcja while n while (warunek) instrukcje n Przykład: awk ’{ i

AWK instrukcje n instrukcja while n while (warunek) instrukcje n Przykład: awk ’{ i = 1 while (i <= 3) { print $i i++ } }’ plik_wejsciowy Uwaga: przejścia do nowych linii nie są tu konieczne, (z wyjątkiem ciała instrukcji złożonej) ale zalecane (C) Mariusz Kopeć, WFi. TJ AGH, 2008 139

AWK instrukcje n instrukcja do while n do instrukcje while (warunek) n Przykład: awk

AWK instrukcje n instrukcja do while n do instrukcje while (warunek) n Przykład: awk ’{ i = 1 do { print $0 i++ } while (i <= 10) }’ plik_wejsciowy Uwaga: przejścia do nowych linii nie są tu konieczne, (z wyjątkiem ciała instrukcji złożonej) ale zalecane (C) Mariusz Kopeć, WFi. TJ AGH, 2008 140

AWK instrukcje n instrukcja for n for (inicjalizacja; warunek; inkrementacja) n Przykład: gawk ’{

AWK instrukcje n instrukcja for n for (inicjalizacja; warunek; inkrementacja) n Przykład: gawk ’{ for (i = 1; i <= 3; i++) print $i (i <= 10) }’ plik_wejsciowy n for (index in tablica) n index przyjmuje wartości kolejnych indeksów w tablicy n Przykład: gawk ’BEGIN {t[”jeden”]=1; t[”dwa”]=2; t[”trzy”]=3 for (i in t) print i, t[i] }’ (C) Mariusz Kopeć, WFi. TJ AGH, 2008 141

AWK instrukcje n n instrukcja switch (wyrażenie) { case wartość lub regex: instrukcje default:

AWK instrukcje n n instrukcja switch (wyrażenie) { case wartość lub regex: instrukcje default: instrukcje } n Uwagi: n n wyrażenie dopasowywane może być do wartości numerycznej, stringu lub wyrażenia regularnego wykonanie instrukcji jest przerywane dopiero po napotkaniu: - końca instrukcji switch - jednej z instrukcji: break, continue, nextfile, exit (C) Mariusz Kopeć, WFi. TJ AGH, 2008 142

AWK instrukcje n instrukcja switch, cd n Przykład: switch (NR * 2 + 1)

AWK instrukcje n instrukcja switch, cd n Przykład: switch (NR * 2 + 1) { case 3: case ” 11”: print NR – 1 break case /2[[: digit: ]]+/: print NR default: print NR + 1 case – 1: print NR * -1 } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 143

AWK instrukcje n instrukcja break n Przerywa wykonanie najbardziej wewnętrznej pętli Poza pętlami traktowana

AWK instrukcje n instrukcja break n Przerywa wykonanie najbardziej wewnętrznej pętli Poza pętlami traktowana jest jako błąd (POSIX) n Przykład: n { n = $1 for (d=2; d*d<=n; d++) if (n%d == 0) break if (n%d == 0) printf ”Najmniejszym podzieln. %d jest %dn”, n, d else printf ”%d to liczba pierwszan”, n } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 144

AWK instrukcje n instrukcja continue n Przerywa bieżący przebieg pętli i przechodzi do następnego

AWK instrukcje n instrukcja continue n Przerywa bieżący przebieg pętli i przechodzi do następnego Poza pętlami traktowana jest jako błąd (POSIX) n Przykład: n BEGIN { for (x=0; x<=20; x++) { if (x == 5) continue printf ”%d ”, x } print ”” } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 145

AWK instrukcje n instrukcja next n next Przerywa przetwarzanie bieżącego rekordu i przechodzi do

AWK instrukcje n instrukcja next n next Przerywa przetwarzanie bieżącego rekordu i przechodzi do następnego; dalsza część akcji (w przeciwieństwie do skutku funkcji getline) nie jest realizowana Przykład: NF != 4 { err = sprintf(”%s: %d: NF != 4n”, FILENAME, FNR) print err > ”/dev/stderr” next } n Przetwarzanie rekordu zawierającego liczbę pól inną niż 4 zostanie przerwane, a na wyjście diagnostyczne wysłany zostanie komunikat o błędzie (C) Mariusz Kopeć, WFi. TJ AGH, 2008 146

AWK instrukcje n instrukcja nextfile (w gawk) n nextfile Przerywa przetwarzanie bieżącego pliku i

AWK instrukcje n instrukcja nextfile (w gawk) n nextfile Przerywa przetwarzanie bieżącego pliku i przechodzi do następnego podanego w linii polecenia Zmienia wartość zmiennej FILENAME, tak by odpowiadała nazwie kolejnego pliku n Ustawia wartość zmiennej FNR=1 n Przykład: NF != 4 { print ”%s nie ma 4 pol w rekordzie”, FILENAME nextfile } { akcje dla pliku o 4 polach w rekordzie } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 147

AWK instrukcje n instrukcja exit n n n exit [kod powrotu] Przerywa przetwarzanie: -

AWK instrukcje n instrukcja exit n n n exit [kod powrotu] Przerywa przetwarzanie: - wykonane w bloku BEGIN lub po nim – przejście do bloku END - wykonane w bloku END – zakończenie przetwarzania Przykład: BEGIN { NF == 6 END { print ”Jestem w bloku BEGIN”; exit { n++ } print ”Znaleziono”, n, ”rekordow” } } Program zostanie wykonany bez przetwarzania pliku wejściowego! (C) Mariusz Kopeć, WFi. TJ AGH, 2008 148

AWK tablice n tablice asocjacyjne – indeksowane stringami, np. : tab[”jeden”]=1 tab[”dwa”]=2 n indeks

AWK tablice n tablice asocjacyjne – indeksowane stringami, np. : tab[”jeden”]=1 tab[”dwa”]=2 n indeks w postaci numerycznej zamieniany jest na string, np. : tab[17] tab[021] tab[0 x 11] n sprawdzenie, czy ind jest jednym z indeksów tablicy tab: ind in tab n na przykład: if (ind in tab) usuwanie elementów tablicy: delete tab[i] n usuwanie całej tablicy (gawk): delete tab n Uwaga: usunięcie tablicy nie zmienia jej typu, tzn. jej nazwa nie może być dalej używana jako nazwa zwykłej zmiennej (C) Mariusz Kopeć, WFi. TJ AGH, 2008 149

AWK sortowanie tablic n sortowanie po wartościach – asort n n n asort(tab) -

AWK sortowanie tablic n sortowanie po wartościach – asort n n n asort(tab) - zwraca liczbę elementów tablicy i indeksuje ją na nowo liczbami od 1 do n, sortując wg. wartości jej elementów asort(tab, cpy) - kopiuje tab do cpy, i działa dalej tak jak asort(cpy); tab pozostaje nienaruszone Przykład: BEGIN { tab[”jeden”]=”one” tab[”dwa”]=”two” tab[”trzy”]=”three” n = asort(tab, cpy) for (i in tab) print i, tab[i] for (i in cpy) print i, cpy[i] } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 150

AWK sortowanie tablic n sortowanie po indeksach – asorti n n n asorti(tab) -

AWK sortowanie tablic n sortowanie po indeksach – asorti n n n asorti(tab) - zwraca liczbę elementów tablicy i indeksuje ją na nowo liczbami od 1 do n, sortując wg. wartości jej indeksów asorti(tab, cpy) - kopiuje tab do cpy, i działa dalej tak jak asorti(cpy); tab pozostaje nienaruszone Przykład: BEGIN { tab[”jeden”]=”one” tab[”dwa”]=”two” tab[”trzy”]=”three” n = asorti(tab, cpy) for (i in tab) print i, tab[i] for (i in cpy) print i, cpy[i] } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 151

AWK funkcje użytkownika n definiowanie funkcji użytkownika n n n function nazwa(lista_parametrów) { ciało

AWK funkcje użytkownika n definiowanie funkcji użytkownika n n n function nazwa(lista_parametrów) { ciało funkcji } lista parametrów zawiera argumenty oraz zmienne lokalne argumenty ustalane są na podstawie wywołania – pozostałe wielkości są zmiennymi lokalnymi zmienne lokalne są inicjowane stringami pustymi Przykład: function drukuj(m) { printf ”%6. 3 gn”, m } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 152

AWK funkcje użytkownika n zwracanie wartości przez funkcje n return [wyrażenie] n polecenie return

AWK funkcje użytkownika n zwracanie wartości przez funkcje n return [wyrażenie] n polecenie return zwraca wynik wyrażenia n n n jeżeli wyrażenie zostało podane, to zwracana wartość jest nieokreślona jeżeli return nie zostało użyte, to przyjmowane jest automatycznie na końcu definicji funkcji, a zwracana wartość jest nieokreślona Przykład: function srednia(tab, n, suma) { for (i in tab) {n++; suma+=tab[i]} return suma/n } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 153

AWK string i liczba n n typ wartości zmiennej (tekstowy lub numeryczny) ustalany jest

AWK string i liczba n n typ wartości zmiennej (tekstowy lub numeryczny) ustalany jest dynamicznie i zależy od kontekstu zmienne tekstowe użyte w operacjach arytmetycznych mają wartość liczbową 0, np. : zero = ”zero”; x = 5 + zero; print x 5 n zmienne (i stałe) ustawione w wyrażeniach obok siebie traktowane są jako tekstowe i podlegają konkatenacji, np. : m = 1; n = 2; print m 12 17 n n ” ” (m n + 5) zmienne (i stałe) numeryczne są zmiennoprzecinkowe: print 3/4 0. 75 (C) Mariusz Kopeć, WFi. TJ AGH, 2008 154

AWK komunikacja z procesami n gawk pozwala na tworzenie dwukierunkowych łączy z innymi procesami:

AWK komunikacja z procesami n gawk pozwala na tworzenie dwukierunkowych łączy z innymi procesami: BEGIN { command = ”read line; ls –l $line” print ”/usr/games” |& command while (command |& getline results) print ”>”, results } niekoniecznie na tej samej maszynie: BEGIN { Service = ”/inet/tcp/0/origin” ”. ftj. agh. edu. pl/daytime” Service |& getline print $0 close (Service) } (C) Mariusz Kopeć, WFi. TJ AGH, 2008 155

SED - uzupełnienia n n Przestrzeń wzorca (pattern space) n dane wejściowe dla każdego

SED - uzupełnienia n n Przestrzeń wzorca (pattern space) n dane wejściowe dla każdego polecenia; n zazwyczaj (ale nie zawsze) kolejna linia tekstu; n zmieniają ja polecenia: N, n, x, g, G; Polecenia n # (comment) n n d (delete) n n n cała linia jest ignorowana D blokuje wypisanie linii na standardowe wyjście wykonanie startuje od początku skryptu (delete the first part of the pattern space) n n usuwa wszystko aż do znaku ’n’ z przestrzeni wzorca wykonanie startuje od początku skryptu z następną linią (C) Mariusz Kopeć, WFi. TJ AGH, 2008 156

SED - polecenia n n (next) n n n N (append Next line) n

SED - polecenia n n (next) n n n N (append Next line) n n a n n i do przestrzeni wzorca dopisywana jest zawartość następnej linii poprzedzona znakiem ’n’ (append) dodaje tekst za linią wskazaną przez adres, a jeśli go nie ma – za każdą przetwarzaną linią (insert) n n do przestrzeni wzorca wpisywana jest zawartość następnej linii wykonywane będzie następne polecenie c n dodaje tekst przed linią wskazaną przez adres, a jeśli go nie ma – przed każdą przetwarzaną linią (change) zmienia bieżącą przestrzeń wzorca (linię) na tekst (C) Mariusz Kopeć, WFi. TJ AGH, 2008 157

SED - polecenia n Uwagi do poleceń a, i, c n polecenie musi stać

SED - polecenia n Uwagi do poleceń a, i, c n polecenie musi stać w osobnej linii (albo być oddzielone ’; ’) n liczba wstawianych linii nie jest ograniczona n n kolejne a linia. . . linia linie, z wyjątkiem ostatniej, oddzielane są przez ’’, np. : 1 2 n wprowadzając kolejne linie w linii polecenia musimy stosować wielokrotne opcje ’-e’, np. : sed –e’/wzor/{; i’ –e’Linia wstawiana przed wzorem’ -e’a’ –e’ 1. linia wstawiana za wzorem’ -e’ 2. linia wstawiana za wzorem’ –e’}’ (C) Mariusz Kopeć, WFi. TJ AGH, 2008 158

SED - polecenia n s/RE/zastąpienie/[flagi] n n n (substitute) w liniach wskazanych przez adresy

SED - polecenia n s/RE/zastąpienie/[flagi] n n n (substitute) w liniach wskazanych przez adresy (albo we wszystkich) tekst pasujący do wyrażenia regularnego RE zastępowany jest przez zastąpienie; znaki ’/’ mogą być zastąpione przez dowolne inne znaki; w zastąpieniu wprowadzany jest surowy tekst, z wyjątkiem: & - zastępuje cały tekst dopasowany do RE n (gdzie n jest cyfrą) – zastępuje n-tą grupę (. . . ) c (gdzie c nie jest cyfrą) – oznacza znak ’c’ flagi: brak – dokonywane jest tylko jedno zastąpienie g – dokonywane są wszystkie zastąpienia (global) n (gdzie n jest cyfrą) – dokonywane jest tylko n-te zastąpienie p – wypisuje przestrzeń wzorca po skutecznym zastąpieniu Uwaga: jeżeli zastąpienie zostało dokonane, ustawiana jest flaga wykorzystywana przez polecenie test; (C) Mariusz Kopeć, WFi. TJ AGH, 2008 159

SED - polecenia n p (print) n n P (print first part of the

SED - polecenia n p (print) n n P (print first part of the pattern space) n n (list) działa podobnie jak p, ale wypisuje niektóre znaki specjalne w formie c (np. n, t) w file n n wypisuje z przestrzeni wzorca wszystko, aż do pierwszego ’n’ l n n przesyła określone linie na standardowe wyjście wypisuje określone linie do pliku file r file n (write to file) (read from file) wstawia zawartość pliku file po określonej linii (C) Mariusz Kopeć, WFi. TJ AGH, 2008 160

SED - polecenia n h (hold pattern space) n n H (hold pattern space

SED - polecenia n h (hold pattern space) n n H (hold pattern space - append) n n g G kopiuje zawartość bufora do przestrzeni wzorca, kasując jej dotychczasową zawartość (get - append) n n dodaje zawartość przestrzeni wzorca do końca bufora (get) n n kopiuje przestrzeń wzorca do bufora, kasując jego zawartość x dołącza zawartość bufora do przestrzeni wzorca (exchange) n wymienia zawartość bufora i przestrzeni wzorca (C) Mariusz Kopeć, WFi. TJ AGH, 2008 161

SED - polecenia n !polecenie n n {} n n neguje specyfikację adresu polecenia

SED - polecenia n !polecenie n n {} n n neguje specyfikację adresu polecenia (grupowanie) grupuje polecenia wykonywane dla określonej linii pierwsze polecenie może pojawić się zaraz po ’{’ ’}’ musi być w osobnej linii grupowanie może być zagnieżdżone : etykieta n n (negacja) wstawia etykietę, do której mogą skakać polecenia branch i test betykieta n n (branch) wykonuje bezwarunkowy skok do etykiety jeżeli nie ma etykiety, skacze do końca skryptu (C) Mariusz Kopeć, WFi. TJ AGH, 2008 162

SED - polecenia n tetykieta n n n n = (translate) zamienia znaki listy

SED - polecenia n tetykieta n n n n = (translate) zamienia znaki listy 1 odpowiednimi znakami listy 2 listy 1 i 2 muszą być tej samej długości separatory ’/’ mogą być zastąpione innymi znakami (number) n n wykonuje skok do etykiety jeżeli polecenie substitute, działające na bieżącej przestrzeni adresowej ustawiło odpowiednią flagę flaga jest ustawiana po dokonanym podstawieniu flaga jest resetowana po wykonaniu instrukcji test flaga jest resetowana po wczytaniu nowej linii y/lista 1/lista 2 n (test) q wypisuje numer bieżącej linii (quit) n koniec działania sed (C) Mariusz Kopeć, WFi. TJ AGH, 2008 163

SED – przykłady skryptów n Zliczanie linii inputu #!/bin/sed –nf $= n Emulacja polecenia

SED – przykłady skryptów n Zliczanie linii inputu #!/bin/sed –nf $= n Emulacja polecenia head #!/bin/sed –f 10 q n Rozdzielanie linii tekstu pustymi liniami #!/bin/sed –f /^$/d; G n Emulacja polecenia tail #!/bin/sed –f : a $q; N; 11, $D; ba (C) Mariusz Kopeć, WFi. TJ AGH, 2008 164

SED – przykłady skryptów n Odwrócenie kolejności znaków w linii #!/bin/sed –f /. /!b

SED – przykłady skryptów n Odwrócenie kolejności znaków w linii #!/bin/sed –f /. /!b s/!/!!/g s/^/-!-/ s/$/-!-/ ta : a s/-!-([^!]|!!)(. *)([^!]|!!)-!-/3 -!-2 -!-1/ ta s/-!-//g s/!!/!/g (C) Mariusz Kopeć, WFi. TJ AGH, 2008 165

SED – przykłady skryptów n Emulacja polecenia tac #!/bin/sed -nf 1{h; b; } G;

SED – przykłady skryptów n Emulacja polecenia tac #!/bin/sed -nf 1{h; b; } G; h ${g; p} (C) Mariusz Kopeć, WFi. TJ AGH, 2008 166