Wprowadzenie do systemu UNIX

110
(C) Mariusz Kopeć, WFiTJ AGH, 2004 1 Wprowadzenie do systemu UNIX dr inż. Mariusz Kopeć pok. 217a, D-10 tel. 617 3778 mariusz @ novell . ftj . agh . edu . pl

description

Wprowadzenie do systemu UNIX. dr inż. Mariusz Kopeć pok. 217a, D-10 tel. 617 3778 [email protected]. Program wykładów. Podstawowe wiadomości o Uniksie Rozpoczynamy pracę z systemem Gdzie szukać pomocy? Poznajemy podstawowe polecenia systemu Podstawy pracy w powłoce bash - PowerPoint PPT Presentation

Transcript of Wprowadzenie do systemu UNIX

Page 1: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 1

Wprowadzenie do systemu UNIX

dr inż. Mariusz Kopećpok. 217a, D-10tel. 617 [email protected]

Page 2: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 2

Program wykładów

1. Podstawowe wiadomości o Uniksie2. Rozpoczynamy pracę z systemem3. Gdzie szukać pomocy?4. Poznajemy podstawowe polecenia systemu5. Podstawy pracy w powłoce bash6. Poznajemy filtry7. Tworzymy własne skrypty8. Przetwarzamy pliki9. Programy komunikacyjne i narzędzia sieciowe

Page 3: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 3

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

MULTiplexed Information and Computing Service

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

Page 4: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 4

Początki UNIXa, cd 1971 AT&T UNIX First Edition (11/3/1971)

pierwsza oficjalna wersja systemu, zawierająca procesor tekstu, zaimplementowana na PDP-11

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.

1973 4-th Edition UNIX (11/73) jądro systemu napisane w C.

1975 6-th Edition UNIX (V6 UNIX) pierwsza wersja systemu powszechnie

dostępna poza Bell Labs.

Page 5: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 5

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

sprzedaży UNIXa – postanowiło więc udostępnić go uniwersytetom, gdzie system był dalej rozwijany.

1977 Bill Joy z Uniwersytetu Kalifornijskiego w Berkeley wydaje pierwszą wersję Berkeley Software Distribution, znaną jako 1BSD.

1980 W następstwie otrzymania kontraktu DARPA (Defense Advanced Research Projects Agency) Bill Joy tworzy w Berkeley kolejną dystrybucję: 4.1BSD.

1984 Powstaje 4.2BSD zawierająca TCP/IP. Rok wcześniej Bill Joy odchodzi, by stworzyć Sun Microsystems.

1986 Powstaje poprawiona wersja 4.3BSD. 1994 Powstaje ostatnia wersja z Berkeley: 4.4BSD.

Page 6: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 6

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

1983 UNIX System Development Labs (AT&T) wypuszcza System V UNIX Release 1 (SVR1).

1984 Powstaje System V UNIX Release 2 (SVR2).

1985 Pojawia się SVR3 zawierająca m.in. NFS (Network File System).

1992 UNIX System Labs (AT&T) wypuszcza SVR4.2.

1993 Novell kupuje USL od (AT&T) i wypuszcza SVR4.2MP.

1995 SCO (Santa Cruz Operation) kupuje Uniksa od Novella.

2001 Caldera (dystrybutor Linuxa) kupuje Uniksa od SCO.

Page 7: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 7

Inne wersje UNIXa (wybrane)

Xenix – Microsoft HP-UX – HP IRIX – SGI SunOS – Sun Unicos – CRAY UnixWare - SCO

Ultrix – DEC AIX – IBM Mac OS X – Apple Solaris – Sun OpenServer – SCO ...

Komercyjne

Free

386/BSD – Bill Jolitz FreeBSD – Jordan Hubbard Minix – Andy Tannenbaum GNU – Richard Stallman

NetBSD OpenBSD – Theo de Raadt Linux – Linus Torvalds

Page 8: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 8

Linux Kernel

Linus Torvalds, Univ. Helsinki, 1991 właściwy LINUX to kernel

Narzędzia (utilities) Głównie z Free Software Foundation GNU/Linux (GNU’s Not UNIX)

Dystrybucje kernel + narzędzia + programy pomocnicze i instalacyjne Red Hat – najpopularniejszy pakiet dystrybucyjny Caldera OpenLinux – również w pakietach komercyjnych Debian – projekt całkowicie niekomercyjny SuSE – dystrybucja w języku niemieckim Mandrake – zbliżona do Red Hat; łatwa instalacja i konfiguracja

Page 9: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 9

System operacyjny UNIX

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:

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.

Page 10: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 10

Warstwy systemu UNIX

Użytkownik

Warstwa sprzętowa (hardware)(CPU, pamięć, dyski, terminale, sterowniki, ...)

Interfejs warstwy sprzętowej

Jądro systemu (kernel)(zarządzanie procesami, pamięcią, zasobami, ...)

Interfejs wywołań systemowych

Biblioteki systemowe(open, read, write, ...)

Powłoki, polecenia, aplikacje Interfejs bibliotek

(programy, kompilatory,interpretery, ...)

Interfejs użytkownika

Page 11: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 11

Zaczynamy pracę Rodzaje i uprawnienia użytkowników

superuser user

Identyfikacja użytkownika username password

Zmieniamy hasło polecenie passwd zasady doboru hasła (długość, zestaw znaków)

Kończymy pracę exit logout

Page 12: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 12

Nazwy i polecenia Nazwa

case sensitive długość – zależna od implementacji (max. 255) zestaw znaków

znaki alfanumeryczne [A-Z], [a-z], [0-9] inne znaki: .=@#%^_+-:, znaki specjalne: `!$&*(){}[];”|’\<>?/spacja

wprowadzanie znaku specjalnego, np.: Mój\ Plik

Polecenie nazwa-polecenia opcje parametry opcje najczęściej poprzedza „-” parametry oddzielane spacjami przykład: ls -l

Page 13: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 13

Rozwijanie nazw Rozwijanie nazw plików przez system:

znak * zastępuje dowolną grupę znaków, np.: * plik1.dat plik2.dat test.out wyniki.dat wyniki.txt wyjątek: „.” na początku

znak ? zastępuje jeden dowolny znak, np.: plik?.dat plik1.dat plik2.dat

nawias kwadratowy [] określa grupę znaków z której może być wybrany jeden znak, np.:

[pt]*.* plik1.dat plik2.dat test.out [p-t]*.* plik1.dat plik2.dat test.out

klamra {} podaje pasującą grupę znaków, np.: w*.{dat,txt} wyniki.dat wyniki.txt

Page 14: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 14

Pomoc on-line

info info –-usage info passwd

man man passwd man 5 passwd

apropos (man –k) apropos –h apropos passwd

whatis (man –f) whatis –h whatis passwd

Page 15: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 15

Zmiany danych użytkownika Zmiana hasła

passwd

Zmiana danych osobistych użytkownika chfn

Zmiana defaultowej powłoki (shell) użytkownika chsh

Page 16: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 16

Przydatne informacje Informacje o systemie

uname -a

Kim jesteśmy w sieci? hostname dnsdomainname

Kim jesteśmy w systemie? whoami who am i (who mom likes)

Kto pracuje w systemie? who w

Page 17: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 17

System plików wszystko jest plikiem:

pliki zwykłe katalogi (zawierają inne pliki) pliki urządzeń

struktura drzewa 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/prog/program1.c

Page 18: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 18

System plików - przykład

/

etc usr bin home lib dev

jan ewa adamlocalbin

dane prog

program1.c

Page 19: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 19

Operacje na katalogach

ls wypisanie zawartości katalogu

pwd wypisanie katalogu bieżącego> pwd

/home/stud/kowalski

> ls (tu to samo co ls /home/stud/kowalski)plik1.dat prog.e testy

> ls -a

. .. plik1.dat prog.e testy

> ls –a *

plik1.dat prog.e

testy:

. ..

Zauważ:1. * nie rozwija nazw . i ..2. testy to katalog; listowana jest

jego zawartość

Page 20: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 20

Operacje na katalogach, cd

> ls –d *

plik1.dat prog.e testy

> ls -l

-rw-r--r-- 1 kowalski stud 10 Oct 10 2002 plik1.dat

-rwxr-xr-x 1 kowalski stud 445 Jul 21 2001 prog.e

drwxr-xr-x 2 kowalski stud 4096 Jul 21 2001 testy

mkdir utworzenie nowego katalogu

> mkdir zajecia1;ls –d *

plik1.dat prog.e testy zajecia1

> mkdir /home/stud/kowalski/zajecia1

Page 21: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 21

Operacje na katalogach, cd cd zmiana katalogu bieżącego

> cd /usr/local;pwd

/usr/local

> cd ..;pwd

/usr

> cd;pwd

/home/stud/kowalski

> cd -;pwd

/usr

> cd ~/zajecia1;pwd

/home/stud/kowalski/zajecia1

Page 22: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 22

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

> cd

> rmdir zajecia1; ls

plik1.dat prog.e testy

> mkdir zajecia1

> mkdir zajecia1/zadanie1; ls zajecia1

zadanie1

> rmdir zajecia1

rmdir: `zajecia1’: Directory not empty

> rm –r zajecia1; ls

plik1.dat prog.e testy

Katalog nie jest pusty – trzeba inaczej:

Ostrożnie!

Page 23: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 23

Prawa dostępu do pliku

-rwxr--r-- 1 user group ... prog1.e

read wartość = 4 (r albo -)

write wartość = 2 (w albo -)

execute wartość = 1 (x albo -)

u g o

others

group

user

typ - zwykły plikd katalog...

execute:zwykły plik – program, scriptkatalog – wykonanie cd

mod tego pliku =

744

Page 24: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 24

Zmiana praw dostępu Zmiana modu

chmod [-R] [kto]op[zezw][,...] plik kto - grupa znaków ugoa:

u – user g – group o – other a – all (a=ugo)

op - operacja: + - dodaj zezwolenie - - odbierz zezwolenie = - zastąp zezwolenie

zezw - typ zezwolenia: r – czytanie w – pisanie x – wykonanie (cd do katalogu)

Page 25: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 25

Zmiana praw dostępu, cd Przykłady:

chmod a+x plik1.e chmod o-w plik1.e chmod u=rw,go=r plik1.e

chmod [-R] kod_oktalny plik kod_oktalny – suma kodów oktalnych w grupach:

user - r=400 w=200 x=100 group - r=040 w=020 x=010 others - r=004 w=002 x=001

Przykłady: chmod 644 plik1.e chmod 777 plik1.e

Page 26: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 26

Zmiana praw dostępu, cd Zmiana właściciela

chown [-R] user[:group] plik user – właściciel pliku group - właściciel grupowy opcja –R - zmiany rekurencyjne w

podkatalogach Przykład:

chown jan:stud plik1.e

Zmiana właściciela grupowego chgrp [-R] group plik

group - właściciel grupowy opcja –R - zmiany rekurencyjne w podkatalogach

Przykład: chgrp stud plik1.e

Ostrożnie!

Page 27: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 27

Operacje na plikach Utworzenie pliku

touch> touch plik2.dat; ls –l plik2.dat

-rwxr-xr-x 1 kowalski stud 0 ... plik2.dat

cat> cat > plik2.dat

Linia1 wprowadzonego tekstu<Enter>

Linia2 wprowadzonego tekstu<Enter>

Ctrl-D

> ls –l plik2.dat

-rwxr-xr-x 1 kowalski stud 56 ... plik2.dat

dowolny edytor, np. vi> vi plik2.dat

Page 28: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 28

Operacje na plikach, cd 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 plik1 plik2 kopiuje plik1 do plik2

> cp –R katalog1 katalog2 kopiuje rekurencyjniekatalog1 do katalog2

mv – przenosi lub przemianowuje pliki (katalogi)

> mv plik1 plik2 przemianowuje plik1 na plik2

> mv plik1 katalog1 przenosi plik1 do katalogu1

Page 29: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 29

Operacje na plikach, cd Wypisanie zawartości pliku

cat – wypisanie zawartości jednego lub kilku plików> cat plik2.dat

Linia1 wprowadzonego tekstu

Linia2 wprowadzonego tekstu

more – wypisanie zawartości pliku strona po stronie> more plik3.dat

less – wypisanie zawartości pliku strona po stronie> less plik3.dat

tac – wypisanie zawartości pliku od końca> tac plik2.dat

Linia2 wprowadzonego tekstu

Linia1 wprowadzonego tekstu

Page 30: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 30

Operacje na plikach, cd Wypisanie fragmentu pliku

head – wypisanie początkowych linii pliku (plików) head plik1 pierwsze 10 linii pliku head –n plik1 plik2 pierwsze n linii każdego pliku

tail – wypisanie końcowych linii pliku (plików) tail plik1 ostatnie 10 linii pliku tail –n plik1 ostatnie n linii pliku tail +n plik1 10 linii poczynając od n-tej

linii

Wypisanie zawartości pliku w kolumnach column – tworzenie tabeli

column –t plik1 separatorem jest „biały znak” column –t –s: plik1 separatorem jest :

Page 31: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 31

Operacje na plikach, cd Dzielenie plików

cut – wycina kolumny lub pola z pliku cut –c10-15 plik1 wypisuje 10.-15. znak z linii pliku

csplit – dzieli plik na części csplit plik1 10 30 tworzy trzy pliki: xx00, xx01, xx02

zawierające linie: 1 do 9, 10 do 29, od 30

cut –f3 –d\ plik1 wypisuje 3. pole z linii pliku

csplit plik1 /wz1/ /wz2/ tworzy trzy pliki:xx00 – od pierwszej linii,xx01 – od linii zawierającej wzorzec wz1xx02 – od linii zawierającej wzorzec wz2

Page 32: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 32

Operacje na plikach, cd Łączenie plików

cat – łączy kilka plików w jeden (konkatenacja) cat p1 p2 p3 łączy kolejno p1, p2, p3

paste – łączy równolegle linie plików paste plik1 plik2 wypisuje w jednej linii

odpowiednielinie plików plik1 i plik2

join – łączy równolegle linie plików z polem łączącym Przykład: plik1: rok1 anna plik2: rok1 jan

rok2 ewa rok3 tom

> join plik1 plik2

rok1 anna jan

Page 33: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 33

Operacje na plikach, cd Sortowanie plików i ich przetwarzanie

sort – sortuje jeden lub kilka plików (konkatenacja) sort plik1 sortuje plik1

sort –k 2 p1 p2 dołącza p2 do p1 a następniesortuje wg pola 2

uniq – usuwa powtarzające się linie uniq plik1

comm – wypisuje takie same linie z dwóch plików comm plik1 plik2

uniq –t: -W2 plik1 bada tylko 2 pierwsze pola „:” jest separatorem pól

Page 34: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 34

Operacje na plikach, cd

Porównywanie plików

cmp – porównuje dwa pliki lub ciągi bajtów cmp plik1 plik2 pokazuje pierwszą różnicę

sdiff – wypisuje różnice między plikami sdiff -s p1 p2 wypisuje różniące się linie

sdiff –i -s p1 p2 ignoruje wielkość liter

diff3 – wypisuje różnice między trzema plikami diff3 p1 p2 p3 wypisuje różniące się linie

Page 35: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 35

Ustalanie charakteru pliku

file – określenie trybu pliku: > file ls.txt

ls.txt: ASCII English text, ... > file /bin/ls

/bin/ls: ELF 32-bit LSB executable, ...

stat – wypisanie statusu pliku: > stat ls.txt

File: „ls.txt” Size: 7132Device: 851h/2129hAccess: (0744/-rw-r—r-) Uid: (751/.) Gid: (700/.)Access: Tue Nov 4 14:02:00 2003Modify: Mon Oct 27 11:48:40 2003Change: Mon Oct 27 11:50:45 2003

Page 36: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 36

Filtry

Przetwarzają w określony sposób pliki wejściowe, np: wyszukują wzorce sortują wycinają fragmenty linii edytują zliczają znaki, słowa, linie

Potoki (pipes) – przesyłają wyjście jednego poleceniabezpośrednio na wejście następnego:

polecenie1 | polecenie2 [ | polecenie3 ...]> ls -l | sort> cat ls.txt | head –n20 | wc

Działają zazwyczaj w trybie potokowym

Page 37: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 37

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

wc [opcje] [plik] [...] wc ls.txt wypisuje liczbę linii, słów i znaków w ls.txt

wc -l ls.txt wypisuje tylko liczbę linii w pliku ls.txt

wc -w ls.txt wypisuje tylko liczbę słów w pliku ls.txt

wc -c ls.txt wypisuje tylko liczbę znaków w pliku ls.txt

wc jako filtr

> ls –l /usr/games | wc –l50

wc -l *.txt wypisuje liczbę linii w każdym z plików o zakończeniu „.txt” oraz ich sumę

Page 38: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 38

Filtry: grep Wyszukuje linie zawierające wzorzec

grep [opcje] wzór [plik ...]

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.

grep ‘wz’ * wypisuje linie zawierające łańcuch ‘wz’, poprzedzone nazwą pliku

grep –v ‘wz’ * wypisuje linie nie zawierające łańcucha ‘wz’, poprzedzone nazwą pliku

grep –c ‘wz’ * wypisuje tylko nazwy plików i liczby linii zawierających łańcuch ‘wz’

Page 39: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 39

Filtry: grep – wzorce wzorzec – wyrażenie regularne:

[^...] dowolny znak nie występujący na liście [^Pp]lik klik, ale nie plik

. dowolny znak ‘plik.a’ plik1a, plikaa12, ale nie plika

\ następny znak nie jest traktowany jako specjalny ‘plik\.’ plik.12, plik., ale nie plik1

[...] dowolny znak (jeden) z podanej listy [Pp]lik Plik, plik, ...

* zero lub więcej powtórzeń poprzedniego znaku ‘plik.*a’ plik.12a, plika123a, plik1a, ...

Page 40: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 40

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

‘^plik’ plik1a, plikaa12, ale nie replika

$ koniec linii ‘plik$’ nowyplik, ale nie plik1

\n odwołanie do n-tego podwyrażenia \(plik\).*\1 plik.*plik

\b łańcuch na krawędzi słowa ‘\bplik’ plik.12a, plika123a, ale nie replika ‘plik\b’ nowyplik

\(...\) określenie podwyrażenia \(plik\) plik jest pierwszym podwyrażeniem

Page 41: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 41

Filtry: grep Przykłady zaawansowanego użycia wzorców:

> grep –v ’^$’ ls.txt Wypisuje wszystkie niepuste linie

> grep ’\(time\).*\1’ ls.txt Wypisuje wszystkie linie, w których „time” występuje więcej

niż jeden raz

> grep ’\btime\b’ ls.txt Wypisuje wszystkie linie, w których „time” występuje jako

samodzielne słowo

> file /etc | grep ’English text.*with’ Wypisuje z katalogu /etc nazwy plików zawierających tekst

angielski z dodatkowymi atrybutami

Page 42: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 42

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

sed [-e skrypt] [...] [-f plikskryptu] [...] plik skrypt – ciąg poleceń; może być kilka skryptów plikskryptu – plik zawierający skrypt; może być ich kilka

Wybrane przykłady:

> sed ’11,174d’ ls.txt

Kasuje z pliku ls.txt linie 11-174

> sed –n ’1,/Sort/p’ ls.txt

Wypisuje z ls.txt tylko linie od 1 do zawierającej „Sort”

> sed –n ’/file/p’ ls.txt

Wypisuje z ls.txt tylko linie zawierające „file”

Page 43: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 43

Filtry: sed – przykłady

> 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

> 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

> 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”.

> sed –n ’s/character/file/p’ ls.txt

Zamienia w ls.txt „character” na „file” i wypisuje tylko linie w których dokonano zmian

Page 44: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 44

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

tr [opcje] zestaw1 zestaw2 zestaw1 – znaki do usunięcia lub zastąpienia zestaw2 – znaki zastępujące odpowiednio znaki z zestawu1

Wybrane przykłady: tr –d eEoO < ls.txt | head

Usuwa z pliku ls.txt znaki „e”, „E”, „o” i „O”

tr ”[A-Z]” ”[a-z]” < ls.txt | headWypisuje plik ls.txt zamieniając duże litery na małe

ls –l /usr | tr –s ”[:space:]” Wypisuje zawartość katalogu /usr zastępując ciąg spacji jedną spacją

echo J mpwf Vojy | tr B-z A-y ?

Page 45: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 45

Filtry: awk (gawk)

Przetwarza w określony sposób plik wejściowy gawk ’wzór {akcja}’ [plik] [...]

Polecenie to zostanie omówione dokładniej w dalszej części wykładów

Wybrane przykłady:

> 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)

> 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.

> gawk ’/Andrzej/’ /etc/passwdWypisuje z pliku /etc/passwd linie zawierające łańcuch „Andrzej”

Page 46: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 46

Filtry: tee Kopiuje wejście na wyjście i dodatkowo do pliku

tee [-a] plik [...] -a – dołącz do istniejącego pliku

Wybrane przykłady: cat ls.txt | tee kopia1 kopia2 | less

Wypisuje na ekranie plik ls.txt (strona po stronie) i tworzy dwie kopie: kopia1 i kopia2

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

who | sort | tee users

Wypisuje posortowaną listę zalogowanych użytkowników i zachowuje ją w pliku users

Page 47: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 47

Filtry: przykłady who | tr –s ”[:space:]” | cut –f5 –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.

ls –la /etc | grep ’^d’ | wc -l

Wypisywana jest liczba podkatalogów w katalogu /etc. (Gdzie można sprawdzić czy jest poprawna?)

cat /etc/passwd | column –s: -t | sort | less

Lista zarejestrowanych w systemie użytkowników wypisywana jest strona po stronie w formie posortowanej tabeli.

sort ls.txt | uniq | tee linie | wc -lZ 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.

Page 48: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 48

Kompresja plików gzip – kompresja/dekompresja zawartości plików

gzip [opcje] [plik] [...]

Wybrane przykłady:

gzip ls.txt

Kompresuje plik ls.txt, na którego miejsce tworzony jest ls.txt.gz.

gzip –d ls.txt ( gunzip ls.txt)

Dekompresuje plik ls.txt.gz, przywracając ls.txt.

gzip –r *

Kompresuje wszystkie pliki w bieżącym katalogu i w podkatalogach

gzip –dr * ( gunzip –r *)

Dekompresuje wszystkie pliki w bieżącym katalogu i w podkatalogach.

Page 49: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 49

Archiwizacja plików

tar – archiwizuje i odtwarza pliki tar [opcje] [plik] [...]

Wybrane przykłady: tar –cvf mojkatalog.tar *

Tworzy archiwum mojkatalog.tar z bieżącego katalogu.

tar –tvf mojkatalog.tarListuje zawartość archiwum mojkatalog.tar.

-c tworzy nowe archiwum -r dodaje pliki do istniejącego archiwum -x wyciąga pliki z archiwum -f nazwa podaje nazwę archiwum -t listuje zawartość archiwum -v informuje o wykonywanych operacjach

Page 50: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 50

Powłoki (shells) Podstawowe zadania powłoki:

interfejs między użytkownikiem a jądrem

język programowania

interpreter poleceń

Najważniejsze rodzaje powłok: sh (Bourne shell)

bash (Bourne again shell)

csh (C shell) tcsh (C shell improved)

Page 51: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 51

Powłoki Co robi powłoka:

wczytuje wejście (z pliku lub terminala)

przetwarza tokeny na polecenia

dzieli wejście na słowa i operatory (tokeny)

zamienia pewne tokeny (np. *) na odpowiednie listy (np. plików)

dokonuje odpowiednich przekierowań strumieni i usuwa odpowiednie operatory i argumenty z listy

wykonuje polecenie czeka na zakończenie polecenia (opcjonalnie)

Page 52: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 52

Powłoka bash Niektóre znaki specjalne powłoki:

blank spacja lub tabulator

<, > przekierowanie strumieni

| potok (pipe)

(, ) definiowanie podpowłoki

; koniec polecenia

& wykonanie polecenia w tle

metaznaki

metaznaki nie muszą być otoczone przez blank

Page 53: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 53

Powłoka bash

’ ’ anuluje specjalne znaczenie znaków

\Enter kontynuacja w następnej linii

# komentarz (działa do końca linii)

\ następny znak (poza Enter) nie ma specjalnego znaczenia, np:> mkdir Moje\ wyniki

inne znaki specjalne:

anulowanie specjalnego znaczenia znaków:

” ” anuluje specjalne znaczenie znaków z wyjątkiemznaków ’$’, ’\’, ’`’

Page 54: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 54

Powłoka bash

~aga katalog domowy użytkownika aga > echo ~aga/home/stud/aga

{a,b} podstawiana jest lista a b :> echo {a,b}{a,b}aa ab ba bb

~ $HOME (katalog domowy użytkownika)> echo ~/home/prac/mariusz

rozwinięcie nawiasów klamrowych {}:

rozwinięcie tyldy ~:

~nic jeżeli wynikowy katalog nie istnieje to rozwinięcie nie jest przeprowadzane

Page 55: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 55

Powłoka bash

${par:-słowo} jeżeli parametr par jest ustawiony topodstawiana jest jego wartość :

> echo ${par:-~}projekt jeżeli nie, podstawiana jest wartość słowa, a parametr nie jest ustawiany:> echo ${rap:-~}/home/prac/mariusz

ustalam przykładowo wartość parametru par:> par=projekt

${par} projekt (= $par)> echo ${par}projekt

rozwinięcie parametrów:

Page 56: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 56

Powłoka bash ${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

${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 $parprojekt

Page 57: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 57

Powłoka bash

$(polecenie) podstawiany jest wynik polecenia

podstawienie poleceń:

albo

`polecenie` podstawiany jest wynik polecenia

> echo ’Dlugosc pliku:’ \> `cat ls.txt | wc –l` \> ’linii’Dlugosc pliku: 198 linii

Page 58: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 58

Powłoka bash

* ciąg znaków (w tym pusty) nie zaczynający się od ’.’

podstawienie nazw plików:

? jeden dowolny znak (ale nie ’.’ na początku)

[...] jeden z wymienionych znaków

[.-.] jeden znak z zakresu

[!...] jeden znak z wyłączeniem wymienionych

jak to działa? wynikiem podstawienia jest lista nazw plików z

bieżącego katalogu, pasujących do podanego wzorca jeżeli lista taka jest pusta, podstawienie nie jest

dokonywane (wynikiem jest sam wzorzec)

Page 59: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 59

Powłoka bash

$(( wyrażenie ))

rozwinięcie arytmetyczne:

jak to działa? wszystkie elementy wyrażenia podlegają rozwinięciu

parametrów i podstawieniu poleceń

wynikiem rozwinięcia jest wynik wyrażenia arytmetycznego

przykłady: > echo $((2+5))7

> echo $((`ls –l | wc –l`+3))55

> echo $((`wc –l<ls.txt`>`ls –l|wc –l`))1

Page 60: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 60

Powłoka bash

+ - dodawanie i odejmowanie

kolejność działań w rozwinięciu:

< > <= >= porównania arytmetyczne

++id --id pre-in/dekrementacja zmiennej

id++ id-- post-in/dekrementacja zmiennej

! ~ negacja logiczna i binarna

- + znak – lub +

** potęgowanie

* / % mnożenie, dzielenie, modulo

<< >> przesunięcia bitowe

== != równość i nierówność

Page 61: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 61

Powłoka bash kolejność działań, cd:

= *= /= %= += -= <<= >>= &= ^= |= przypisania

^ bitowe XOR

& bitowe AND

&& logiczne AND

| bitowe OR

expr1 , expr2 przecinek

|| logiczne OR

expr ? expr : expr wyrażenie warunkowe

Page 62: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 62

Powłoka bash przekierowanie strumieni:

numery strumieni: 0 – standardowe wejście 1 – standardowe wyjście 2 – wyjście diagnostyczne (error)

przekierowanie wejścia: <word

przekierowanie wyjścia: >word

przekierowanie wyjścia diagn.: 2>word

łączne przekierowanie 1 i 2: >word 2>&1 Uwaga: >word 2>&1 2>&1 >word

Operatory przekierowania (z zastrzeżeniem powyższej uwagi) mogą pojawić się w dowolnym miejscu linii polecenia, np.:> > ls.txt man ls

Page 63: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 63

Powłoka bash „here document”:> polecenie <<ogranicznik {nie „-”}> ....> ogranicznik

Jeżeli ogranicznik jest ujęty w apostrofy, to wprowadzane linie nie są rozwijane; w przeciwnym razie podlegają one rozwinięciu para-metrów, rozwinięciu arytmetycznemu i podstawieniu poleceń:

> cat <<+> `whoami`> +mariusz

> cat <<’+’> `whoami`> +`whoami`

Page 64: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 64

Powłoka bash Lista – sekwencja poleceń (potoków)

oddzielonych separatorami: ; & && || polecenie1 & polecenie2

polecenie1 wykonywane jest asynchronicznie (w tle)

polecenie1 ; polecenie2 polecenie1 i polecenie2 wykonywane są sekwencyjnie

polecenie1 && polecenie2 polecenie2 wykonywane jest tylko wtedy, gdy

polecenie1 zwróci status 0 (zakończy się sukcesem)

polecenie1 || polecenie2 polecenie2 wykonywane jest tylko wtedy, gdy

polecenie1 zwróci status 0 (zakończy się błędem)

Page 65: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 65

Powłoka bash Grupowanie poleceń – lista wykonywana jest

jako osobna całośćprzekierowanie strumieni może wówczas dotyczyć całej grupy

(lista) tworzona jest podpowłoka w której lista jest wykonywana> (mkdir Test; cd Test)> pwd/home/prac/mariusz

{ lista; } lista jest wykonywana w bieżącej powłoce> { mkdir Test; cd Test; }> pwd/home/prac/mariusz/Test

Page 66: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 66

Powłoka bash Konstrukcje pętli

until until polecenia_testujące; do polecenia_do_wykonania; done

polecenia_do_wykonania wykonywane są tak długo, dopókipolecenia_testujące zwracają zerowy kod powrotu

while while polecenia_testujące; do polecenia_do_wykonania; done

polecenia_do_wykonania wykonywane są tak długo, dopókipolecenia_testujące zwracają niezerowy kod powrotu

Uwaga: syntaktyczny ’;’ może być zastąpiony przez znak nowej linii (/Enter)

Page 67: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 67

Powłoka bash

for 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 elementomrozwinięcia; jeżeli [in słowo ...] nie pojawia się, porównuje sięnazwę z kolejnymi parametrami pozycyjnymi

for (( wyr1; wyr2; wyr3 )); do polecenia_do_wykonania; done

wyrażenia wyr1, wyr2, wyr3 są wyrażeniami arytmetycznymi, adziałanie pętli jest takie jak w C

Page 68: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 68

Powłoka bash Konstrukcje warunkowe

if 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ń

Uwaga: syntaktyczny ’;’ może być zastąpiony przez znak nowej linii (/Enter)

Page 69: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 69

Powłoka bash

case 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 Przykład

case $swiatlo in

czerwone ) echo ”STOP” ;;

zielone ) echo ”JAZDA” ;;

default ) echo „”CZEKAJ” ;;

esac

Page 70: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 70

Powłoka bash Parametry i zmienne powłoki

parametry – przechowują wartość (nazwę, liczbę, ...)

parametry pozycyjne: np. $1, $9, ${12} kolejne parametry z linii wywołania polecenia

parametry specjalne: $0 – nazwa powłoki lub wykonywanego skryptu

$* – wszystkie parametry pozycyjne razem

$# – ilość parametrów pozycyjnych

Przykład: > cat mtestecho ’$1=’$1’ $2=’$2’ $0=’$0’ $#=’$#’ $*=’$*> . mtest Moj test$1=Moj $2=test $0=bash $#=2 $*=Moj test

Page 71: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 71

Powłoka bash zmienne – nazwane parametry

przypisanie zmiennej wartości: zmienna1=wartość

podczas przypisania dokonywane są wszystkie konieczne rozwinięcia

do wartości zmiennej odwołujemy się następująco:

$zmienna1

Przykład 1:

> zmienna1=~> echo $zmienna1> /home/prac/mariusz

Przykład 2:

> i=5> j=$i+2> echo $((j))7

Page 72: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 72

Powłoka bash zmienne powłoki (automatycznie ustawiane)

zmienne powłoki sh (są też w bash):

HOME katalog domowy użytkownika

IFS lista znaków-separatorów pól

PATH lista katalogów, w których powłoka szuka programów do wykonania

PS1 podstawowy znak zachęty powłoki (default: ’\s-\v\$’)

PS2 drugi znak zachęty powłoki (default: ’> ’)

Jak odczytać ich wartości? Na przykład: > echo $PATH

Page 73: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 73

Powłoka bash zmienne powłoki bash (w sh ich nie było):

BASH_VERSION numer wersji wykonywanej powłoki bash

HISTSIZE max. liczba pamiętanych poleceń (d: 500)

HOSTNAME nazwa hosta

PROMPT_COMMAND polecenie wykonywane przed wypisaniem $PS1

HOSTTYPE typ maszyny

HOSTTYPE typ maszyny

PWD bieżący katalog

UID identyfikator użytkownika

Page 74: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 74

Powłoka bash 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.

Page 75: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 75

Powłoka bash Funkcje powłoki

grupują polecenia do późniejszego wykonania

[function] nazwa () { lista polecen; }

Przykład:

> moja_funkcja () {

> echo To jest moja funkcja

> ls

> ls –l | wc –l; }

> moja_funkcja

To jest moja funkcja

ls.txt plik1.txt plik2.txt

3

Page 76: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 76

Powłoka bash Polecenia wbudowane powłoki sh

. polecenie [argumenty]wykonuje polecenie (program) w bieżącym środowisku

cd [nazwa katalogu]zmienia bieżący katalog

pwd [nazwa katalogu]wypisuje nazwę bieżącego katalogu

exit [n]kończy pracę powłoki zwracając kod wyjścia 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

Page 77: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 77

Powłoka bash return [n]

wyjście z funkcji powłoki z kodem n

shift [n]przesunięcie parametrów pozycyjnych o n pozycji

test wyrażenie lub [ wyrażenie ]zwraca wynik opracowania wyrażenia

set [ -opcje ] [ -o opcje] [ argumenty ]ustawia lub kasuje atrybutu powłoki; set pokazuje zmienne

unset [nazwa]usuwa ustawione wcześniej zmienne lub funkcje powłoki

Page 78: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 78

Powłoka bash Polecenia wbudowane powłoki bash

alias [nazwa[=wartość]]ustawia lub wypisuje aliasy

declare [nazwa[=wartość]]deklaruje zmienne i nadaje im wartość; wypisuje zmienne

echo [argumenty]wypisuje argumenty oddzielając je blankami i kończąc \n

exit [n]kończy pracę powłoki zwracając kod wyjścia n

unalias [nazwa]usuwa aliasy

Page 79: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 79

Powłoka bash let wyrażenie [wyrażenie]

wykonuje wyrażenie arytmetyczne

logout [n]wyjście z powłoki logowania z kodem powrotu n

echo [argumenty]wypisuje argumenty oddzielając je blankami i kończąc \n

printf format [argumenty]wypisuje argumenty zgodnie z formatem

read [opcje] [nazwa ...]wczytuje linię ze standardowego wejścia

Page 80: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 80

Powłoka bash shopt [opcje]

wypisuje albo przełącza atrybuty powłoki

ulimit [opcje] [limit]pokazuje albo ustawia limity powłoki

pushd katalogprzechodzi do katalogu i zapisuje go na stosie

popdzdejmuje nazwę katalogu ze stosu i wykonuje do niego cd

helpwyświetla informacje o poleceniach powłoki

dirswypisuje stos katalogów

Page 81: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 81

Powłoka bash Polecenia sterowania procesami powłoki bash

jobswypisuje aktywne procesy

suspend (ctrl Z)zatrzymuje wykonanie procesu

bg nr_procesunp. %1kontynuacja realizacji zatrzymanego procesu w tle ( jak &)

fg nr_procesu np. %1kontynuacja realizacji zatrzymanego

kill [-s sygnał] nr_procesu lub pidprzesyła sygnał do procesu

Page 82: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 82

Powłoka bash Przykłady rozwinięcia linii polecenia:

> echo cat `whoami` ~ $((2+3)) {a,b}c p?.txtcat mariusz /home/prac/mariusz 5 ac bc p1.txt p2.txt

> echo ls p*.txtls p1.txt pl1.txt pl2.txt plik1.txt plik2.txt

p*.txt zastępowane jest odpowiednią listą plików

> echo ls p{l,lik}*.txtls pl1.txt pl2.txt plik1.txt plik2.txt

rozwinięcie następuje w dwóch krokach:

p{l,lik}*.txt -> pl*.txt plik*.txt -> ...

przeprowadzane są wszystkie konieczne rozwinięcia

Page 83: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 83

Powłoka bash - skrypty Skrypty

skrypt – sekwencja poleceń wykonywana przez interpreter (powłokę), zapisana jako samodzielny plik.

wykonanie skryptu:

bash plik_skryptu skrypt jest wykonywany w nowym otoczeniu

./plik_skryptu skrypt jest wykonywany w nowym otoczeniu. Uwaga: plik_skryptu musi mieć mod pozwalający na wykonanie

. plik_skryptu skrypt jest wykonywany w bieżącym otoczeniu

Page 84: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 84

Powłoka bash - skrypty ustalenie programu wykonującego skrypt -

w pierwszej linii skryptu podawana jest nazwa programu wraz z pełną ścieżką dostępu:

#!/bin/bash skrypt wykonany będzie przez bash

#!/bin/csh skrypt wykonany będzie przez csh

mogą być też inne programy:

#!/bin/tcsh skrypt wykonany będzie przez tcsh

#!/bin/sed -f skrypt wykonany będzie przez sed

#!/usr/bin/perl skrypt wykonany będzie przez perl

#!/usr/bin/less skrypt wykonany będzie przez less

Page 85: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 85

Powłoka bash - skrypty Przykłady skryptów

#!/bin/bash

parametry=””

while [ $# -gt 1 ]; do

parametry=”$parametry $1”

shift

done

ostatni_parametr=$1

shift

echo $parametry

echo $ostatni_parametr

Skrypt z pętlą while, wypisujący ostatni podany parametr:

Page 86: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 86

Powłoka bash - skrypty

#!/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

Skrypt z konstrukcją warunkową if

Page 87: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 87

Powłoka bash - skrypty

#!/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

Skrypt z pętlą for

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

Page 88: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 88

Powłoka bash - skrypty

#!/bin/bash

while true; do

echo –n ”Wypisac biezacy katalog? (y/n) ”

read yn

case $yn in

y* | Y* ) ls –l . ; break ;;

[nN]* ) echo ”pomijamy” ; break ;;

q* ) exit ;;

* ) echo ”Niezrozumiala odpowiedz” ;;

esac

done

Skrypt z pętlą while i konstrukcją case

Page 89: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 89

Powłoka bash - skrypty

#!/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

Skrypt z obliczeniami arytmetycznymi

W rozwinięciu arytmetycznym zmienna może być używana bez poprzedzającego znaku $

Wynikiem rozwinięcia arytmetycznego jest wartość w instrukcji przypisania

Page 90: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 90

Powłoka bash - skrypty

#!/bin/bash

katalog=”$1”

: ${katalog:=$HOME}

echo ”Zawartosc katalogu $katalog:”

ls –1 ”$katalog”

Skrypt zaw_kat wykorzystujący instrukcję pustą

Przykłady wykonania:> zaw_kat

> Zawartosc katalogu /home/prac/mariusz

...

> zaw_kat .

> Zawartosc katalogu .

...

Page 91: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 91

Powłoka bash Podstawy konfiguracji powłoki

Pliki konfiguracyjne dla login shell /etc/profile

Pliki konfiguracyjne dla non-login shell

~/.bash_profile ~/.bash_login ~/.profile ~/.bash_logout

/etc/bashrc ~/.bashrc

Page 92: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 92

Powłoka bash Konfiguracja znaku zachęty

PS1=’[\u@\h \w]\$’ znaczenie:

\u nazwa użytkownika \h nazwa hosta \H pełna nazwa hosta (z domeną) \w bieżący katalog \s nazwa powłoki \t czas HH:MM:SS \A czas HH:MM \$ # dla roota, $ dla innych \! numer polecenia w zapisie historii \n newline \\ backslash

Page 93: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 93

Powłoka bash Niektóre przydatne kombinacje klawiszy

edycja linii komend C-a przesunięcie kursora na początek linii C-e przesunięcie kursora na koniec linii C-l clear screen C-_ usuwanie wprowadzonych zmian (kolejne) A-r usunięcie wszystkich zmian

poruszanie się po pliku historii A-< na początek pliku historii A-> na koniec pliku historii C-r szukanie wstecz w pliku historii C-s szukanie do przodu w pliku historii

Page 94: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 94

Powłoka bash uzupełnienia

TAB uzupełnienia ogółem A-? wypisz możliwe uzupełnienia A-/ uzupełnienie nazwy pliku A-~ uzupełnienie nazwy użytkownika A-@ uzupełnienie nazwy hosta A-! uzupełnienie poleceń

Page 95: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 95

Powłoka bash Korzystanie z historii poleceń

fc –l listuje ostatnio wykonane polecenia wraz z ich numerami z listy historii

fc operuje na liście historii

fc –l n1 n2 listuje polecenia o numerach od n1 do n2

fc n1 n2 wpisuje polecenia o numerach od n1 do n2 do edytora; po edycji polecenia są kolejno wykonywane.

fc –s old=new wykonuje poprzednie polecenie po zastąpieniu old przez new

Page 96: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 96

Powłoka bash

history [n] listuje [n] ostatnich pozycji z listy historii wraz z ich numerami; pozycje oznaczone ‘*’ zostały zmodyfikowane

history operuje na liście i/lub pliku historii

history -c kasuje listę historii

history -a dołącza nowe pozycje (wprowadzone od początku bieżącej sesji bash) do pliku historii

history -r wczytuje plik historii i dołącza jego zawartość do aktualnej listy historii

history –d n kasuje pozycję n z listy historii

Page 97: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 97

Powłoka bash

!n linia n z listy historii

rozwinięcia historii

!-n linia –n pozycji wstecz na liście historii

!?string ostatnia linia zawierająca string

^old^new^ powtarza ostatnie polecenie zastępując old przez new

!! poprzednia linia (to samo co ’!-1’)

!string ostatnia linia zaczynająca się od string

!n:p wypisuje linię n z listy historii, ale jej nie wykonuje

Page 98: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 98

Zarządzanie procesami

top pokazuje aktywne procesy z czasie rzeczywistym

Informacje o procesach

h lub ? help

f zmiana formatu wyświetlanych wyników

Sterowanie zachowaniem programu:

spacja odświeżenie ekranu

q quit

k przesłanie sygnału do procesu (kill)

n określenie ilości śledzonych procesów

Page 99: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 99

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: 515152K total, 462184K used, 52912K free, 25800K buffers

Swap: 536136K total, 126633K used, 463500K free, 228936K cache

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND

29203 mariusz 12 0 1076 1076 748 R 1.7 0.2 0.45 top

1 root 8 0 468 424 424 S 0.0 0.0 0.15 init

...

PRI: priorytet procesuRSS: wykorzystywana pamięć fizycznaSTAT: status procesu (Running, Sleeping, Zombie, Traced/sTopped)%CPU: procentowe wykorzystanie czasu CPU%MEM: procentowe wykorzystanie pamięci

Page 100: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 100

Zarządzanie procesami ps pokazuje aktywne procesy

ps –ef wypisuje wszystkie procesy w formacie pełnym

ps –fu user wypisuje wszystkie procesy użytkownika user

ps a wypisuje wszystkie procesy (w tym innych użytkowników) skojarzone z terminalami

ps –fNu user wypisuje wszystkie procesy użytkowników innych niż user (zwykle root)

ps –C nazwa wypisuje wszystkie procesy związane z poleceniem o podanej nazwie

Page 101: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 101

Zarządzanie procesami pstree pokazuje działające procesy

w formie drzewa

pstree –a pokazuje działające procesy wraz z odpowiednimi argumentami linii poleceń

pstree –h zaznacza rozjaśnieniem bieżący proces oraz jego ’przodków’

pstree –p wypisuje dodatkowo PID procesów

Page 102: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 102

Zarządzanie procesami kill przesyła sygnały do procesów

kill –l wypisuje numery i nazwy wszystkich sygnałow

kill –l n wypisuje nazwę sygnału o numerze n

kill pid ... przesyła sygnał TERM (terminate) do procesów o podanych identyfikatorach pid

kill –n pid przesyła sygnał o numerze n do procesu o podanym identyfikatorze pid

Przykład:> kill –9 1213 przesyła sygnał bezwarunkowego

zakończenia procesu o pid 1213

Page 103: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 103

Zarządzanie procesami sleep 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 – sekundym – minutyh – godzinyd - dni

Przykład:> sleep 5m; ls polecenie ls zostanie

wykonane po 5 sek.

Page 104: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 104

Zarządzanie procesami at wykonuje polecenie

wprowadzone ze standardowego wejścia w określonym czasie

at TIME rozpoczyna wykonanie polecenia o czasie TIME

Przykłady określenia czasu:

at –m TIME rozpoczyna wykonanie polecenia o czasie TIME i wysyła mail po zakończeniu działania polecenia

HH:MM

10am Jul 31

1am tomorrownow + 3 weeks

Page 105: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 105

Zarządzanie procesami atq wypisuje zadania użytkownika

oczekujące na rozpoczęcie wykonania

Przykład:

atrm nr usuwa zadanie o numerze nr z kolejki

> 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

Page 106: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 106

Zarządzanie procesami batch rozpoczyna wykonanie

zadania w tle kiedy obciążenie systemu na to pozwoli

Przykład:

batch -m wysyła mail po zakończeniu zadania

> batch <<+

> ls –l

> +

job 353 at 2004-01-22 08:39

Page 107: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 107

Zarządzanie procesami nohup 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 &

Page 108: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 108

Przestrzeń dyskowa

du informuje o wykorzystaniu przestrzeni dyskowej

du podaje dane dla bieżącego katalogu i jego podkatalogów

Informacje o wykorzystaniu przestrzeni dyskowej

du -a podaje dane dla wszystkich plików w bieżącym katalogu i jego podkatalogach

du -s podaje tylko sumaryczne dane dla bieżącego katalogu i jego podkatalogów

du -h podaje dane w kilo-, mega- i gigabajtach

Przykład:> du –sh

1.5M .

Page 109: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 109

Przestrzeń dyskowa df pokazuje wykorzystanie

zamontowanych systemów plików

df -l pokazuje tylko lokalne systemy plików

df -T wypisuje dodatkowo typy zamontowanych systemów plików

du –t typ podaje tylko dane dla określonego typu systemu plików

du -h podaje dane w kilo-, mega- i gigabajtach

du –x typ podaje dane z wyłączeniem określonego typu systemu plików

Page 110: Wprowadzenie do systemu  UNIX

(C) Mariusz Kopeć, WFiTJ AGH, 2004 110

Przestrzeń dyskowa quota pokazuje wykorzystanie przestrzeni

dyskowej oraz przyznane limity

quota wypisuje dane dla bieżącego użytkownika

quota –g wypisuje dane dla grup, do których należy bieżący użytkownik

Przykład:

Disk quotas for user mariusz (uid 751):

Filesystem blocks quota limit grace files quota limit grace

/dev/sdb1 8 40960 50000 1 0 0

/dev/sdf1 39764 40960 50000 1099 0 0

> quota