Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

UNIX – POWŁOKA I POTOK WYKŁAD 5 Powłoka, redyrekcja, potok.

Podobne prezentacje


Prezentacja na temat: "UNIX – POWŁOKA I POTOK WYKŁAD 5 Powłoka, redyrekcja, potok."— Zapis prezentacji:

1 UNIX – POWŁOKA I POTOK WYKŁAD 5 Powłoka, redyrekcja, potok

2 UNIX – POWŁOKA POWŁOKA ( ang. SHELL) - to program interpretujący polecenia użytkownika. nazywamy powłoką. Powłoka przyjmuje polecenia od użytkownika, analizuje je i przekazuje jądru życzenia użytkownika. Bezpośrednio po zgłoszeniu się użytkownika do Systemu UNIX następuje automatyczne uruchomienie interpretera (inaczej powłoki), który rozpoczyna pracę na rzecz użytkownika (każdy użytkownik otrzymuje własny i odrębny egzemplarz procesu powłoki). Powłoka od razu sygnalizuje na ekranie terminala ( powłoka Bournea znakiem $) gotowość przyjęcia polecenia. Pojawienie się tego znaku rozpoczyna cykl, w jakim pracuje powłoka. *BSD – Berkley Software Distribution /bin/sh (powłoka Bourne'a) - pierwsza, zapewnia dużą mobilność między systemami, wykorzystywana głównie w kryptach administracyjnych bin/csh - powłoka C, składnia zbliżona do języka C, domyślna powłoka systemu SOLARIS, niezgodna z powłoką Bourne'a /bin/ksh - odpowiedź AT&T na powłokę C (BSD*), zgodna z powłoką Bourne'a, standard systemów AIX, HP-UX, SOLARIS, na początku w systemach licencjonowanych /bin/bash - rozbudowana, zgodna z powłoką Bourne'a, wolna od licencji, najpopularniejsza /bin/ash - zgodna z powłoką sh, domyślna powłoka środowiska Cygwin

3 UNIX – POWŁOKA Dlaczego warto wiedzieć w jaki sposób posługiwać się i w pełni wykorzystywać możliwości powłoki ?? W systemach operacyjnych Linux, Mac OS X powłoka jest ważnym źródłem komunikacji pomiędzy komputerem i użytkownikiem Powłoka doskonale nadaje się do automatyzacji zadań administracyjnych i konfiguracyjnych (np. zakładanie kont użytkowników) Aktualizacja a także pobór wielu aplikacji systemu Linux dostępna jest tylko i wyłączne z poziomu powłoki To powłoka wykonuje większą część operacji w systemie, wliczając w to zadania inicjowane poprzez interfejs graficzny

4 UNIX – POWŁOKA Powłoka pracuje w cyklu. Na jeden cykl powłoki składają się : Wypisanie znaku zachęty (Bourne - $) Czekanie na wprowadzenie tekstu polecenia przez użytkownika Analiza wiersza pleceń, wyszukiw. odpow. programu realizującego polecenie Zlecenie jądru wykonanie odszukanego programu Przyjęcie od jądra odpowiedzi i rozpoczęcie nowego cyklu Przerwanie powtarzania cykli powłoki może nastąpić jeśli polecenie użytkownika brzmi: exit lub zostanie naciśnięta na klawiaturze kombinacja klawiszy Ctrl-D, co oznacza, że użytkownik nie ma zamiaru kontynuować wprowadzania dalszych poleceń. Powłoka zleca wtedy jądru zamknięcie sesji użytkownika.

5 UNIX – POWŁOKA UOGÓLNIONA POSTAĆ POLECEŃ POWŁOKI SYSTEMU UNIX Wszystkie polecenia rozpoznawane przez powłokę mają taką samą postać ogólną: Konieczne ls, mkdir, rm chmod etc. -l, -s, -a, o+w, -v, -C … argument1 argument2 argument3...$ nazwapolecenia plik1, plik2,plik3 …plikn Opcjonalne Argumenty polecenia mogą być 2 różnych typów: opcjami (najczęściej są oznaczane symbolami literowymi poprzedzonymi znakiem - np. w poleceniu ls -l) nazwami plików

6 UNIX – POWŁOKA STANDARDOWE STRUMIENIE I PLIKI. prawie każde polecenie powłoki realizuje swoje funkcje na zasadzie przetwarzania (przekształcania) strumienia informacji napływającej (w sposób określony przez treść polecenia) w strumień informacji przetworzonej. Każdemu procesowi w chwili uruchomienia przypisuje się standardowy strumień wejściowy i standardowy strumień wyjściowy. Domyślny strumień wejściowy - klawiatura Domyślny strumień wyjściowy – ekran terminalu Większość programów wypisujących informacje wpisuje je do standardowego strumienia wyjściowego i pobiera dane ze standardowego strumienia wejściowego STDERR PROCES HOST STDIN STDOUT TERMINAL Strumień diagnostyczny – wyjście zawsze na ekran

7 UNIX – POWŁOKA STANDARDOWE STRUMIENIE I PLIKI. przykład Znak zachęty Polecenie: cal ma za zadanie przywołać kalendarz września roku 2000 STDIN - klawiatura STDOUT - terminal

8 UNIX – POWŁOKA STANDARDOWE STRUMIENIE I PLIKI. przykład Znak zachęty Polecenie: cal ma za zadanie przywołać kalendarz września roku 2000 STDIN - klawiatura STDOUT - terminal

9 Umieszcza wynik działania Polecenie w pliku plik (a nie jak to Ma miejsce domyślnie w terminalu) Umieszcza wynik działania Polecenie w pliku plik (a nie jak to Ma miejsce domyślnie w terminalu) UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Jeżeli użytkownik uzna, że standardowe skojarzenie strumieni wejścia/wyjścia (STDIN, STDOUT) nie odpowiada jego potrzebom, może spowodować skojarzenie alternatywne. Tę czynność zwykło się nazywać redyrekcją. Polecenie z redyrekcją strumienia STDOUT ma postać: $ polecenie > plik lub $ polecenie >> plik PROCES HOST TERMINAL PLIK STDINSTDOUT STERR Dołącza do poprzedniej zawartości pliku plik wynik działania polecenia polecenie Dołącza do poprzedniej zawartości pliku plik wynik działania polecenia polecenie Usuwa poprzednią zawartość pliku Jeśli plik o takiej nazwie jak podaliśmy Już istniał Usuwa poprzednią zawartość pliku Jeśli plik o takiej nazwie jak podaliśmy Już istniał Nie usuwa poprzedniej zawartości pliku. Nie usuwa poprzedniej zawartości pliku.

10 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Polecenie z redyrekcją strumienia STDIN ma postać: PROCES HOST TERMINAL PLIK STDOUTSTDIN STERR $ polecenie < plik Dane na których zostanie wykonane polecenie polecenie zostaną pobrane z pliku plik (a nie jak domyślnie ze standardowego wejścia klawiatury) Dane na których zostanie wykonane polecenie polecenie zostaną pobrane z pliku plik (a nie jak domyślnie ze standardowego wejścia klawiatury)

11 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Polecenie z redyrekcją strumienia STDIN oraz STDOUT: PROCES HOST TERMINAL PLIK STDIN STERR $ polecenie plikout Dane na których zostanie wykonane polecenie polecenie zostaną pobrane z pliku plikin, a wynik Operacji zostanie zapisany w pliku plikuot Dane na których zostanie wykonane polecenie polecenie zostaną pobrane z pliku plikin, a wynik Operacji zostanie zapisany w pliku plikuot STDOUT PLIK

12 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. przykład Polecenie: cal ma za zadanie przywołać kalendarz września roku 2000 STDOUT to jest ekran REDYREKCJA dla STDOUT: cal > wrzesien2000 ma za zadanie przywołać kalendarz września roku 2000 ale zapisać go w pliku o nazwie wrzesien2000 STDOUT to jest plik Zawartość pliku podglądamy poleceniem more wrzesien2000

13 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. przykład Polecenie: cal ma za zadanie przywołać kalendarz września roku 2000 STDOUT to jest ekran REDYREKCJA dla STDOUT: cal > wrzesien2000 ma za zadanie przywołać kalendarz września roku 2000 ale zapisać go w pliku o nazwie wrzesien2000 STDOUT to jest plik Zawartość pliku podglądamy poleceniem more wrzesien2000

14 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Polecenie: cat (domyślnie STDOUT=ekran, STDIN =klawiatura) Aby zamknąć STDIN w nowej linii wprowadź EOF (Ctrl-D) Redyrekcja: cat >komentarz STDIN = klawiatura STDOUT = plik komentarz Sprawdzenie zawartości pliku komentarz: more komentarz Zadanie1: Połącz pliki komentarz i wrzesien2000 w jeden plik koniec0, a potem sprawdź wynik. Zadanie2: Dopisz swoje imię i nazwisko na koniec pliku koniec0, umieść następnie wynik w pliku koniec1 używając polecenia cat, a potem sprawdź wynik.

15 UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Rozwiązanie 1.cat plik1 plik2 > plik3 Rozwiązanie 2a. Rozwiązanie 2b. cat >plik2 > plik3(*) (**) (*) Konkatenacja dotyczy STDOUT ale w trybie append (dołącz) stąd znak redyrekcji >> (**) Konkatenacja dotyczy zarówno: STDOUT skojarzone z koniec1 STDIN skojarzone z koniec0 Kolejność argumentów dowolna !!

16 UNIX – REDYREKCJA ZASTOSOWANIE POTOKÓW I FILTRÓW. Proces może być rozumiany jako pewne przekształcenie strumienia informacji, zgonie z poniższym schematem: STDOUT STDIN PROCES polecenie filtruje informację napływającą (STDIN) w informację przekształconą (STDOUT) w sposób określony przez twórcę programu Przykład Polecenie wc filtruje informację ze strumienia STDIN przekazując tę informację w formie przetworzonej (STDOUT). cal 2000 > alfa – przygotowanie pliku alfa z kalendarzem na rok 2000 – STDIN to zawartość pliku alfa wc

17 UNIX – REDYREKCJA ZASTOSOWANIE POTOKÓW I FILTRÓW. Przykład Jak szybko się dowiedzieć, ile obiektów znajduje się we wskazanym katalogu (w przykładzie jest to katalog /home ). ls /home > listahome – przygotowanie pliku listahome zawierającego listę obiektów w katalogu /home wc -w

18 UNIX – POTOKI Wady, przedstawionego rozwiązania na poprzednim slajdzie, rozwiązania to: śmieć w postaci pliku o nazwie listahome w katalogu aktualnym ZASTOSOWANIE POTOKÓW I FILTRÓW. aby uzyskać jedną liczbę trzeba wykonać co najmniej 3 polecenia PYTANIE : Czy istnieje możliwość skrócenia tej operacji ? ODPOWIEDŹ: TAK !Służy temu pojęcie POTOKU POTOK jest to sposób zapisu szeregu poleceń (minimum dwóch), w którym wyjście poprzedzającego procesu jest kierowane bezpośrednio na wejście procesu kolejnego. PROCES 1 STDOUT-1 STDIN-1 PROCES 2 STDOUT-2 STDIN-2 polecenie1 argumenty | polecenie2 argumenty

19 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Poprzedni przykład (wykorzystajmy potok) Jak szybko się dowiedzieć, ile obiektów znajduje się we wskazanym katalogu (w przykładzie jest to katalog /home ). ROZWIAZANIE POPRZEDNIE przygotowanie pliku listahome zliczenie ilości wyrazów w listahome usunięcie pliku listahome 3 Polecenia ROZWIAZANIE NOWE - POTOK Nie było konieczności tworzenia dodatkowego pliku!!!!! STDIN polecenia wc STDOUT z polecenia ls (listuj) staje się 1 Polecenie

20 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 1 Zlicz ilu użytkowników w danym momencie pracuje w systemie. Wykorzystaj do tego celu poznane zagadnienie potoku. Rozwiązanie 1 Polecenie wc -l zlicza liczbę linii w pliku lub STDIN Polecenie who produkuje listę użytkowników, którzy używają choć 1 linię tty, ale jeśli użytkownik używa ich więcej niż jedną, to i tak wszystkie są prezentowane w liście. Wystarczy stworzyć potok który poda poszukiwaną wartość who | wc -l

21 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 2 Zlicz, ilu różnych użytkowników aktualnie pracuje w systemie cyfrowym rat. Wykorzystaj rozwiązanie zadania 1. Rozwiązanie 2 – Etap 1 Rozpoczynamy od wycięcia z każdej linii listy przygotowanej przez polecenie who tylko identyfikatora użytkownika. Polecenie, które wycina z każdej linii pierwsze pole zakończone delimiterem spacją ma następującą postać: cut -f1 -d" " Potok, który jest rozwiązaniem poprzedniego zadania może zliczać wielokrotnie jednego użytkownika, gdy używa więcej niż jednej linii tty. Stwórzmy zatem potok i zobaczmy jaki jest wynik Musimy znaleźć taki filtr, który przed zliczeniem linii tty w liście przygotowanej przez polecenie who, usunie wielokrotnie powtarzającą się linię z identyfikatorem użytkownika. who | cut -f1 -d" "

22 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Rozwiązanie 2 – Etap 2 Warunkiem właściwego zadziałania polecenia uniq, jest to by powtarzające się linie następowały po sobie. W tym celu musimy przesortować STDIN, za pomocą polecenia sort -r (-r odwrotna kolejność sortowania - aby widać było efekt). W celu obliczenia ilości użytkowników, musimy usunąć z poprzednio przygotowanej listy identyfikatory, które się powtarzają. Wykorzystamy do tego polecenie: uniq, które spowoduje przepisanie z STDIN na STDOUT tylko tych linii które się nie powtarzają. Potok dający listę unikalnych identyfikatorów użytkowników ma postać. who | cut -f1 -d" " | sort -r | uniq Rozwiązanie zadania: who | cut -f1 -d" " | sort | uniq | wc -l

23 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 3 Sprawdź czy użytkownik o określonym identyfikatorze np. szczur jest aktualnie w systemie, i jakiej/-ich linii tty używa. Rozwiązanie 3 Polecenie who podaje listę wszystkich aktywnych użytkowników Z tej listy musimy wybrać tylko takie linie gdzie występuje podany identyfikator użytkownika np. szczur. W tym celu wykorzystamy polecenie: grep " ^szczur " Wytnie z STDIN i przekopiuje na STDOUT linie w których identyfikator szczur pojawi się na początku linii Rozwiązanie zadania: who | grep " ^szczur " | cut -f1-6 -d" "

24 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 4 Zlicz, ile plików we katalogu /home jest dostępne do zapisu dla wszystkich użytkowników z grupy others Rozwiązanie 4 Polecenie ls -l /home listuje zawartość katalogu /home. Jeśli w polu 9 ( 9-ty znak linii) jest litera w to użytkownicy z grupy others mają prawo zapisu w odniesieniu do tego pliku. Z tej listy musimy wybrać tylko takie linie, gdzie w polu 9 jest litera w Polecenie: grep "^ w" właśnie to wykona w odniesieniu do STDIN Na koniec musimy zliczyć odpowiednie linie ( wc -l ) ls –l /home ls –l /home | grep ^ w ls –l /home | grep ^ w | wc -l

25 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Rozwiązanie 4 – przykładowe wywołanie potoku

26 UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 5 Zlicz, ile katalogów w katalogu /home to katalogi których właścicielem jest użytkownik o identyfikatorze root Rozwiązanie 5 Polecenie ls -l /home listuje zawartość katalogu /home. Jeśli w polu 1 ( 1-szy znak linii) jest litera d to jest to opis katalogu Z tej listy musimy wybrać tylko takie linie, gdzie w polu 1 jest litera d Wybieramy tylko takie, gdzie pojawia się w polu właściciela nazwa root. Wcześniej obetnijmy listę do pozycji właściciela filtrem cut, i dopiero wybierajmy linie zawierające root ls -l /home | grep "^d" | cut –f1-6 –d | grep root | wc -l ls -l /home | grep "^d

27 UNIX – SPRÓBUJ SAM Zadanie 1

28 UNIX – POWŁOKA, REDYREKCJA, POTOK KONIEC


Pobierz ppt "UNIX – POWŁOKA I POTOK WYKŁAD 5 Powłoka, redyrekcja, potok."

Podobne prezentacje


Reklamy Google