Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Powłoka, redyrekcja, potok

Podobne prezentacje


Prezentacja na temat: "Powłoka, redyrekcja, potok"— Zapis prezentacji:

1 Powłoka, redyrekcja, potok
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 Bourne’a znakiem $) gotowość przyjęcia polecenia. Pojawienie się tego znaku rozpoczyna cykl, w jakim pracuje powłoka. /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 *BSD – Berkley Software Distribution

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 Powłoka pracuje w cyklu. Na jeden cykl powłoki składają się:
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 Przyjęcie od jądra odpowiedzi i rozpoczęcie nowego cyklu Zlecenie jądru wykonanie odszukanego programu 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ą: $ nazwapolecenia argument1 argument2 argument3 ... ls, mkdir, rm chmod etc. -l, -s, -a, o+w , -v, -C … plik1, plik2,plik3 …plikn Konieczne 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 STANDARDOWE STRUMIENIE I PLIKI.
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 STDIN PROCES TERMINAL STDOUT STDERR HOST Strumień diagnostyczny – wyjście zawsze na ekran 6

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

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

9 KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA.
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ć: Usuwa poprzednią zawartość pliku Jeśli plik o takiej nazwie jak podaliśmy Już istniał Nie usuwa poprzedniej zawartości pliku. $ polecenie > plik lub $ polecenie >> plik Umieszcza wynik działania Polecenie w pliku plik (a nie jak to Ma miejsce domyślnie w terminalu) Dołącza do poprzedniej zawartości pliku plik wynik działania polecenia polecenie PLIK STDIN STDOUT PROCES TERMINAL STERR HOST 9

10 KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA.
UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Polecenie z redyrekcją strumienia STDIN ma postać: $ 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) PLIK STDOUT STDIN PROCES TERMINAL STERR HOST 10

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

12 KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA.
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 12

13 KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA.
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

14 Aby zamknąć STDIN w nowej linii wprowadź EOF (Ctrl-D)
UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. Aby zamknąć STDIN w nowej linii wprowadź EOF (Ctrl-D) Polecenie: cat (domyślnie STDOUT=ekran, STDIN =klawiatura) Redyrekcja: cat >komentarz STDOUT = plik komentarz STDIN = klawiatura 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. 14

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

16 ZASTOSOWANIE POTOKÓW I FILTRÓW.
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 <alfa STDOUT to zestaw odpowiednio przetworzonych informacji ze strumienia STDIN: 40 linii, 463 wyrazy, 1778 znaków 16

17 ZASTOSOWANIE POTOKÓW I FILTRÓW. Przykład
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 <listahome STDIN – zawartość pliku listahome STDOUT – ciąg liczb określających cechy informacji ze strumienia STDIN, czyli cechy tekstu zapisanego w pliku listahome more listahome – wyświetla ono zawartość pliku listahome, która jest listą obiektów w katalogu /home (wykonano tutaj tylko dla sprawdzenia) 17

18 polecenie1 argumenty | polecenie2 argumenty
UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Wady, przedstawionego rozwiązania na poprzednim slajdzie, rozwiązania to: śmieć w postaci pliku o nazwie listahome w katalogu aktualnym 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. IDEA !!! PROCES 1 STDOUT-1 STDIN-1 PROCES 2 STDIN-2 STDOUT-2 polecenie1 argumenty | polecenie2 argumenty 18

19 Nie było konieczności tworzenia
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 STDIN polecenia wc STDOUT z polecenia ls (listuj) staje się Nie było konieczności tworzenia dodatkowego pliku!!!!! 1 Polecenie 19

20 who | wc -l 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 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. Polecenie wc -l zlicza liczbę linii w pliku lub STDIN Wystarczy stworzyć potok który poda poszukiwaną wartość who | wc -l 20

21 who | cut -f1 -d" " 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 Potok, który jest rozwiązaniem poprzedniego zadania może zliczać wielokrotnie jednego użytkownika, gdy używa więcej niż jednej linii tty. 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. 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" " Stwórzmy zatem potok i zobaczmy jaki jest wynik who | cut -f1 -d" " 21

22 ZASTOSOWANIE POTOKÓW I FILTRÓW.
UNIX – POTOKI ZASTOSOWANIE POTOKÓW I FILTRÓW. Rozwiązanie 2 – Etap 2 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ą. 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). 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 22

23 ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 3
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" " 23

24 ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 4
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. ls –l /home 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 ls –l /home | grep ”^ w” Na koniec musimy zliczyć odpowiednie linie ( wc -l ) ls –l /home | grep ”^ w” | wc -l 24

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

26 ZASTOSOWANIE POTOKÓW I FILTRÓW. Zadanie 5
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 ls -l /home | grep "^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 26

27 UNIX – SPRÓBUJ SAM Zadanie 1 27

28 UNIX – POWŁOKA, REDYREKCJA, POTOK
KONIEC 28


Pobierz ppt "Powłoka, redyrekcja, potok"

Podobne prezentacje


Reklamy Google