1 / 28

UNIX – POWŁOKA I POTOK

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

etan
Download Presentation

UNIX – POWŁOKA I POTOK

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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. 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 UNIX – POWŁOKA Powłoka pracuje w cyklu. Na jeden cykl powłoki składają się: 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. 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

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

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

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

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

  11. 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 PLIK STDOUT STERR HOST

  12. UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. • przykład Polecenie: cal 9 2000 ma za zadanie przywołać kalendarz września roku 2000 STDOUT to jest ekran REDYREKCJA dla STDOUT: cal 9 2000 > 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 9 2000 ma za zadanie przywołać kalendarz września roku 2000 STDOUT to jest ekran REDYREKCJA dla STDOUT: cal 9 2000 > 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. 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.

  15. UNIX – REDYREKCJA KOJARZENIE STRUMIENIA WEJŚCIA WYJŚCIA. (**) Rozwiązanie 1. cat plik1 plik2 > plik3 cat >plik2 <plik1 Rozwiązanie 2b. 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 !!

  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: PROCES STDIN STDOUT • 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 wc <alfa – STDIN to zawartość pliku alfa STDOUT to zestaw odpowiednio przetworzonych informacji ze strumienia STDIN: 40 linii, 463 wyrazy, 1778 znaków

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

  18. PROCES 1 STDIN-1 STDOUT-1 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 2 STDIN-2 STDOUT-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 • STDINpolecenia wc • STDOUTz polecenia ls (listuj) staje się Nie było konieczności tworzenia dodatkowego pliku!!!!! 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 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

  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 • 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" "

  22. 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órespowoduje 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

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

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

  27. UNIX – SPRÓBUJ SAM Zadanie 1

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

More Related