Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wprowadzenie do systemu UNIX

Podobne prezentacje


Prezentacja na temat: "Wprowadzenie do systemu UNIX"— Zapis prezentacji:

1 Wprowadzenie do systemu UNIX
dr inż. Mariusz Kopeć pok. 217a, D-10 tel (C) Mariusz Kopeć, WFiTJ AGH, 2004

2 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 Poznajemy filtry Tworzymy własne skrypty Przetwarzamy pliki Programy komunikacyjne i narzędzia sieciowe (C) Mariusz Kopeć, WFiTJ AGH, 2004

3 Początki UNIXa 1965 MULTICS (MIT+ AT&T Bell Labs + GE)
MULTiplexed Information and Computing Service 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ć, WFiTJ AGH, 2004

4 Początki UNIXa, cd AT&T UNIX First Edition (11/3/1971) pierwsza oficjalna wersja systemu, zawierająca procesor tekstu, zaimplementowana na PDP-11 th Edition UNIX (3/73) pojawiły się potoki (pipes) i filtry oraz kompilator języka C. Jądro systemu napisane w asemblerze. th Edition UNIX (11/73) jądro systemu napisane w C. th Edition UNIX (V6 UNIX) pierwsza wersja systemu powszechnie dostępna poza Bell Labs. (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. Bill Joy z Uniwersytetu Kalifornijskiego w Berkeley wydaje pierwszą wersję Berkeley Software Distribution, znaną jako 1BSD. W następstwie otrzymania kontraktu DARPA (Defense Advanced Research Projects Agency) Bill Joy tworzy w Berkeley kolejną dystrybucję: 4.1BSD. Powstaje 4.2BSD zawierająca TCP/IP. Rok wcześniej Bill Joy odchodzi, by stworzyć Sun Microsystems. Powstaje poprawiona wersja 4.3BSD. Powstaje ostatnia wersja z Berkeley: 4.4BSD. (C) Mariusz Kopeć, WFiTJ AGH, 2004

6 AT&T UNIX 1982 UNIX System Group (AT&T) wypuszcza System III UNIX.
UNIX System Development Labs (AT&T) wypuszcza System V UNIX Release 1 (SVR1). Powstaje System V UNIX Release 2 (SVR2). Pojawia się SVR3 zawierająca m.in. NFS (Network File System). UNIX System Labs (AT&T) wypuszcza SVR4.2. Novell kupuje USL od (AT&T) i wypuszcza SVR4.2MP. SCO (Santa Cruz Operation) kupuje Uniksa od Novella. Caldera (dystrybutor Linuxa) kupuje Uniksa od SCO. (C) Mariusz Kopeć, WFiTJ AGH, 2004

7 Inne wersje UNIXa (wybrane)
Komercyjne 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 ... Free 386/BSD – Bill Jolitz FreeBSD – Jordan Hubbard Minix – Andy Tannenbaum GNU – Richard Stallman NetBSD OpenBSD – Theo de Raadt Linux – Linus Torvalds (C) Mariusz Kopeć, WFiTJ AGH, 2004

8 Linux Kernel Narzędzia (utilities) Dystrybucje
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 (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. (C) Mariusz Kopeć, WFiTJ AGH, 2004

10 Warstwy systemu UNIX Powłoki, polecenia, aplikacje
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 (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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

12 Nazwy i polecenia Nazwa Polecenie 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 (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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

14 Pomoc on-line man whatis (man –f) apropos (man –k) info man passwd
whatis –h whatis passwd apropos (man –k) apropos –h apropos passwd info info –-usage info passwd (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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

16 Przydatne informacje Informacje o systemie Kim jesteśmy w sieci?
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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

17 System plików wszystko jest plikiem: struktura drzewa 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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

18 System plików - przykład
/ etc usr bin home lib dev jan ewa adam local dane prog program1.c (C) Mariusz Kopeć, WFiTJ AGH, 2004

19 Operacje na katalogach
pwd wypisanie katalogu bieżącego > pwd /home/stud/kowalski ls wypisanie zawartości katalogu > 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ść (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 plik1.dat -rwxr-xr-x 1 kowalski stud 445 Jul prog.e drwxr-xr-x 2 kowalski stud 4096 Jul testy mkdir utworzenie nowego katalogu > mkdir zajecia1;ls –d * plik1.dat prog.e testy zajecia1 > mkdir /home/stud/kowalski/zajecia1 (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 (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 Katalog nie jest pusty – trzeba inaczej: > rm –r zajecia1; ls plik1.dat prog.e testy Ostrożnie! (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 -) -rwxr--r-- 1 user group ... prog1.e u g o others group user typ - zwykły plik d katalog ... mod tego pliku = 744 execute: zwykły plik – program, script katalog – wykonanie cd (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) (C) Mariusz Kopeć, WFiTJ AGH, 2004

25 Zmiana praw dostępu, cd chmod [-R] kod_oktalny plik 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 (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 Ostrożnie! 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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

27 Operacje na plikach Utworzenie pliku touch cat dowolny edytor, np. vi
> touch plik2.dat; ls –l plik2.dat -rwxr-xr-x 1 kowalski stud 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 plik2.dat dowolny edytor, np. vi > vi plik2.dat (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 rekurencyjnie katalog1 do katalog2 mv – przenosi lub przemianowuje pliki (katalogi) > mv plik1 plik2 przemianowuje plik1 na plik2 > mv plik1 katalog1 przenosi plik1 do katalogu1 (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 (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 : (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 znak z linii pliku cut –f3 –d\ plik1 wypisuje 3. pole z linii pliku csplit – dzieli plik na części csplit plik tworzy trzy pliki: xx00, xx01, xx02 zawierające linie: 1 do 9, 10 do 29, od 30 csplit plik1 /wz1/ /wz2/ tworzy trzy pliki: xx00 – od pierwszej linii, xx01 – od linii zawierającej wzorzec wz1 xx02 – od linii zawierającej wzorzec wz2 (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 odpowiednie linie 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 (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ępnie sortuje wg pola 2 uniq – usuwa powtarzające się linie uniq plik1 uniq –t: -W2 plik1 bada tylko 2 pierwsze pola „:” jest separatorem pól comm – wypisuje takie same linie z dwóch plików comm plik1 plik2 (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 (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: 7132 Device: 851h/2129h Access: (0744/-rw-r—r-) Uid: (751/.) Gid: (700/.) Access: Tue Nov 4 14:02: Modify: Mon Oct 27 11:48: Change: Mon Oct 27 11:50: (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 Działają zazwyczaj w trybie potokowym Potoki (pipes) – przesyłają wyjście jednego polecenia bezpośrednio na wejście następnego: polecenie1 | polecenie2 [ | polecenie3 ...] > ls -l | sort > cat ls.txt | head –n20 | wc (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 -l *.txt wypisuje liczbę linii w każdym z plików o zakończeniu „.txt” oraz ich sumę wc jako filtr > ls –l /usr/games | wc –l 50 (C) Mariusz Kopeć, WFiTJ AGH, 2004

38 Filtry: grep Wyszukuje linie zawierające wzorzec
grep [opcje] wzór [plik ...] 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’ 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ć, WFiTJ AGH, 2004

39 Filtry: grep – wzorce wzorzec – wyrażenie regularne: . dowolny znak
‘plik.a’  plik1a, plikaa12, ale nie plika \ następny znak nie jest traktowany jako specjalny ‘plik\.’  plik.12, plik., ale nie plik1 * zero lub więcej powtórzeń poprzedniego znaku ‘plik.*a’  plik.12a, plika123a, plik1a, ... [...] dowolny znak (jeden) z podanej listy [Pp]lik  Plik, plik, ... [^...] dowolny znak nie występujący na liście [^Pp]lik  klik, ale nie plik (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 \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 \n odwołanie do n-tego podwyrażenia \(plik\).*\1  plik.*plik (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 (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 > 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” (C) Mariusz Kopeć, WFiTJ AGH, 2004

43 Filtry: sed – przykłady
> sed –n ’s/character/file/p’ ls.txt Zamienia w ls.txt „character” na „file” i wypisuje tylko linie w których dokonano zmian > 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”. (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 | head Wypisuje 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 ? (C) Mariusz Kopeć, WFiTJ AGH, 2004

45 Filtry: awk (gawk) Przetwarza w określony sposób plik wejściowy
Polecenie to zostanie omówione dokładniej w dalszej części wykładów Przetwarza w określony sposób plik wejściowy gawk ’wzór {akcja}’ [plik] [...] Wybrane przykłady: > gawk ’/Andrzej/’ /etc/passwd Wypisuje z pliku /etc/passwd linie zawierające łańcuch „Andrzej” > 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. (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 (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 -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ć, 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. (C) Mariusz Kopeć, WFiTJ AGH, 2004

49 Archiwizacja plików tar – archiwizuje i odtwarza pliki
tar [opcje] [plik] [...] -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 Wybrane przykłady: tar –cvf mojkatalog.tar * Tworzy archiwum mojkatalog.tar z bieżącego katalogu. tar –tvf mojkatalog.tar Listuje zawartość archiwum mojkatalog.tar. (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

51 Powłoki Co robi powłoka: wczytuje wejście (z pliku lub terminala)
dzieli wejście na słowa i operatory (tokeny) przetwarza tokeny na polecenia 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) (C) Mariusz Kopeć, WFiTJ AGH, 2004

52 Powłoka bash Niektóre znaki specjalne powłoki: metaznaki
| potok (pipe) <, > przekierowanie strumieni (, ) definiowanie podpowłoki ; koniec polecenia & wykonanie polecenia w tle blank spacja lub tabulator metaznaki nie muszą być otoczone przez blank (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

54 Powłoka bash rozwinięcie nawiasów klamrowych {}: rozwinięcie tyldy ~:
{a,b}  podstawiana jest lista a b : > echo {a,b}{a,b} aa ab ba bb rozwinięcie tyldy ~: ~  $HOME (katalog domowy użytkownika) > echo ~ /home/prac/mariusz ~aga  katalog domowy użytkownika aga > echo ~aga /home/stud/aga ~nic jeżeli wynikowy katalog nie istnieje to rozwinięcie nie jest przeprowadzane (C) Mariusz Kopeć, WFiTJ AGH, 2004

55 Powłoka bash rozwinięcie parametrów:
ustalam przykładowo wartość parametru par: > par=projekt ${par}  projekt (= $par) > echo ${par} projekt ${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ć, 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 $par projekt (C) Mariusz Kopeć, WFiTJ AGH, 2004

57 Powłoka bash podstawienie poleceń:
$(polecenie) podstawiany jest wynik polecenia albo `polecenie` podstawiany jest wynik polecenia > echo ’Dlugosc pliku:’ \ > `cat ls.txt | wc –l` \ > ’linii’ Dlugosc pliku: 198 linii (C) Mariusz Kopeć, WFiTJ AGH, 2004

58 Powłoka bash podstawienie nazw plików: jak to działa?
* ciąg znaków (w tym pusty) nie zaczynający się od ’.’ ? 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) (C) Mariusz Kopeć, WFiTJ AGH, 2004

59 Powłoka bash rozwinięcie arytmetyczne: jak to działa? przykłady:
$(( wyrażenie )) 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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

61 Powłoka bash kolejność działań, cd: & bitowe AND ^ bitowe XOR
| bitowe OR && logiczne AND || logiczne OR expr ? expr : expr wyrażenie warunkowe = *= /= %= += -= <<= >>= &= ^= |= przypisania expr1 , expr2 przecinek (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 (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` (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) (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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

66 Powłoka bash Konstrukcje pętli until while
Uwaga: syntaktyczny ’;’ może być zastąpiony przez znak nowej linii (/Enter) until 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 while 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ć, 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 elementom rozwinię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, a działanie pętli jest takie jak w C (C) Mariusz Kopeć, WFiTJ AGH, 2004

68 Powłoka bash Konstrukcje warunkowe if
Uwaga: syntaktyczny ’;’ może być zastąpiony przez znak nowej linii (/Enter) 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ń (C) Mariusz Kopeć, WFiTJ AGH, 2004

69 Powłoka bash case Przykład
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 (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 mtest echo ’$1=’$1’ $2=’$2’ $0=’$0’ $#=’$#’ $*=’$* > . mtest Moj test $1=Moj $2=test $0=bash $#=2 $*=Moj test (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 (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 (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 HOSTTYPE typ maszyny HOSTTYPE typ maszyny PROMPT_COMMAND polecenie wykonywane przed wypisaniem $PS1 PWD bieżący katalog UID identyfikator użytkownika (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. (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 (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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

77 Powłoka bash return [n] shift [n] test wyrażenie lub [ wyrażenie ]
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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

78 Powłoka bash Polecenia wbudowane powłoki bash alias [nazwa[=wartość]]
ustawia lub wypisuje aliasy unalias [nazwa] usuwa 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 (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 (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 help wyświetla informacje o poleceniach powłoki pushd katalog przechodzi do katalogu i zapisuje go na stosie popd zdejmuje nazwę katalogu ze stosu i wykonuje do niego cd dirs wypisuje stos katalogów (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

82 Powłoka bash Przykłady rozwinięcia linii polecenia:
> echo ls p*.txt ls p1.txt pl1.txt pl2.txt plik1.txt plik2.txt p*.txt zastępowane jest odpowiednią listą plików > echo ls p{l,lik}*.txt ls pl1.txt pl2.txt plik1.txt plik2.txt rozwinięcie następuje w dwóch krokach: p{l,lik}*.txt -> pl*.txt plik*.txt -> ... > echo cat `whoami` ~ $((2+3)) {a,b}c p?.txt cat mariusz /home/prac/mariusz 5 ac bc p1.txt p2.txt przeprowadzane są wszystkie konieczne rozwinięcia (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 bieżącym otoczeniu ./plik_skryptu skrypt jest wykonywany w nowym otoczeniu. Uwaga: plik_skryptu musi mieć mod pozwalający na wykonanie (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 #!/bin/tcsh skrypt wykonany będzie przez tcsh mogą być też inne programy: #!/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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

85 Powłoka bash - skrypty Przykłady skryptów
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 echo $parametry echo $ostatni_parametr (C) Mariusz Kopeć, WFiTJ AGH, 2004

86 Powłoka bash - skrypty 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 echo "Plik $1 nie istnieje"; (C) Mariusz Kopeć, WFiTJ AGH, 2004

87 Powłoka bash - skrypty 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 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ć, WFiTJ AGH, 2004

88 Powłoka bash - skrypty 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 ;; [nN]* ) echo ”pomijamy” ; break ;; q* ) exit ;; * ) echo ”Niezrozumiala odpowiedz” ;; esac done (C) Mariusz Kopeć, WFiTJ AGH, 2004

89 Powłoka bash - skrypty 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 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ć, WFiTJ AGH, 2004

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

91 Powłoka bash Podstawy konfiguracji powłoki
Pliki konfiguracyjne dla login shell /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ~/.bash_logout Pliki konfiguracyjne dla non-login shell /etc/bashrc ~/.bashrc (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 (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 (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 uzupełnienie nazwy hosta A-! uzupełnienie poleceń (C) Mariusz Kopeć, WFiTJ AGH, 2004

95 Powłoka bash Korzystanie z historii poleceń
fc operuje na liście historii fc –l listuje ostatnio wykonane polecenia wraz z ich numerami z listy 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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

96 Powłoka bash history operuje na liście i/lub pliku historii
history [n] listuje [n] ostatnich pozycji z listy historii wraz z ich numerami; pozycje oznaczone ‘*’ zostały zmodyfikowane history -c kasuje listę historii history –d n kasuje pozycję n z listy 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 (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

98 Zarządzanie procesami
Informacje o procesach top pokazuje aktywne procesy z czasie rzeczywistym Sterowanie zachowaniem programu: h lub ? help spacja odświeżenie ekranu f zmiana formatu wyświetlanych wyników n określenie ilości śledzonych procesów k przesłanie sygnału do procesu (kill) q quit (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: K total, K used, K free, K buffers Swap: K total, K used, K free, K cache PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 29203 mariusz R top 1 root S init ... PRI: priorytet procesu RSS: wykorzystywana pamięć fizyczna STAT: status procesu (Running, Sleeping, Zombie, Traced/sTopped) %CPU: procentowe wykorzystanie czasu CPU %MEM: procentowe wykorzystanie pamięci (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 (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 (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 – przesyła sygnał bezwarunkowego zakończenia procesu o pid 1213 (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 – sekundy m – minuty h – godziny d - dni Przykład: > sleep 5m; ls polecenie ls zostanie wykonane po 5 sek. (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 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 10am Jul 31 1am tomorrow now + 3 weeks (C) Mariusz Kopeć, WFiTJ AGH, 2004

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

106 Zarządzanie procesami
batch rozpoczyna wykonanie zadania w tle kiedy obciążenie systemu na to pozwoli batch -m wysyła mail po zakończeniu zadania Przykład: > batch <<+ > ls –l > + job 353 at :39 (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 & (C) Mariusz Kopeć, WFiTJ AGH, 2004

108 Przestrzeń dyskowa Informacje o wykorzystaniu przestrzeni dyskowej
du informuje o wykorzystaniu przestrzeni dyskowej du podaje dane dla bieżącego katalogu i jego podkatalogów 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 . (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 –x typ podaje dane z wyłączeniem określonego typu systemu plików du -h podaje dane w kilo-, mega- i gigabajtach (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: > quota Disk quotas for user mariusz (uid 751): Filesystem blocks quota limit grace files quota limit grace /dev/sdb /dev/sdf (C) Mariusz Kopeć, WFiTJ AGH, 2004


Pobierz ppt "Wprowadzenie do systemu UNIX"

Podobne prezentacje


Reklamy Google