Powłoka interpreter poleceń systemu UNIX

Podobne dokumenty
Powłoka (shell) Powłoka ksh

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Bash - wprowadzenie. Bash - wprowadzenie 1/39

1 Przygotował: mgr inż. Maciej Lasota

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Pracownia Komputerowa wykład III

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Systemy operacyjne Programowanie w języku powłoki sh

System operacyjny Linux

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Wprowadzenie do programowania w powłoce

Interpreter poleceń oraz zmienne środowiskowe

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

Powłoka bash. Kurs systemu Unix 1

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Pracownia Komputerowa wykład III

Środowisko programisty Zestaw 7

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Systemy Operacyjne. Część II Zarządzanie/Administracja Systemem. 5: Skrypty. autor: mgr inż. Andrzej Woźniak

Przekierowanie wejścia wyjścia:

Tworzenie skryptu: Skrypty powłoki

Znaki globalne w Linuxie

Programowanie skryptów powłoki

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Strona1. Linux. Skrypty powłoki

- wszystkie elementy - wszystkie elementy

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Linuks skrypty Część teoretyczna

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Zmienne środowiskowe: Ścieżka przeszukiwana komendą.

Filtry, metaznaki, cytowania. Proste skrypty. Polecenia find, tee, mail.

Technologie Informacyjne - Linux 3

Technologie Informacyjne - Linux 2

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

PODSTAWY INFORMATYKI

pozwalają na umieszczenie wielu komend w jednym pliku (z atrybutem wykonywania) - udostępnia środowisko do konfigurowania systemu i programowania

Wstęp do Informatyki dla bioinformatyków

Pracownia Komputerowa wyk ad III

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

PODSTAWY INFORMATYKI

Narzędzia informatyczne w językoznawstwie

Trochę o plikach wsadowych (Windows)

KARTA KURSU. Języki skryptowe

Bash, skrypty. Wojciech Dudek. 15 listopada Uniwersytet Warszawski

Moduł 4: Strumienie, potoki, sterowanie procesami

Zakład Systemów Rozproszonych

Skrypty powłoki w systemie Linux

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

Systemy operacyjne 11

Laboratorium Ubuntu Linux.

Skrypty startowe. Tryb interaktywny tryb logowania: nie logowanie: Tryb nieinteraktywny

Konsola i interpreter poleceń

Podstawy informatyki

Powłoka, redyrekcja, potok

System operacyjny Linux

Pierwsze spotkanie kóªka linuksowego

Wyrażenia regularne. Wyrażenia regularne 1/41

1. shell co to i co umożliwia, jakie są shell e. 2. skrypty powłoki. crone dr inż. Anna Zatwarnicka Skrypty i crone

Programowanie w BASH u Skrypt do ćwiczeń

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Laboratorium 5 Podstawy budowy skryptów w systemie UNIX cz. 1

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Języki skryptowe w programie Plans

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy programowania skryptów Sh

chmod +x skrypt /bin/bash nazwa_skryptu ZMIENNA=123 ZMIENNA="wartość tekstowa" SCIEZKA="$HOME/plik" echo $SCIEZKA

1. Wyrażenia regularne. Symbole w wyrażeniach regularnych 1 :

Przedmiot: SYSTEMY OPERACYJNE Czas trwania: semestr IV Przedmiot: obowiązkowy Język wykładowy: polski POZIOM

BASH - WPROWADZENIE Bioinformatyka 4

K. Konopko; Skrypty powłoki. Skrypty powłoki. dr inż. Krzysztof Konopko

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Wprowadzenie do programowania shella (bash)

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Systemy operacyjne Operating Systems

Umieszczanie kodu. kod skryptu

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Wprowadzenie do Scilab: podstawy języka Scilab

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

1 Podstawy c++ w pigułce.

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Pracownia komputerowa. Dariusz wardecki, wyk II

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Funkcje systemu Unix

Podstawy Programowania C++

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Ćwiczenie nr 14: System Linux

Transkrypt:

SOE - Systemy Operacyjne Wykład 4 Powłoka interpreter poleceń systemu UNIX dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW

Powłoka Interpreter poleceń, powłoka (ang. shell) Przegląd sh -powłoka Bourne a csh -powłoka C ksh -powłoka Korna zsh -powłoka Z bash -powłoka Bash (GNU) tcsh

Działanie powłoki (1) Wartościowanie polecenia: podstawienie wartości zmiennych (interpretacja znaku $) podstawienie wyników poleceń (interpretacja znaków ``) podział na nazwę polecenia i argumenty (interpretacja separatorów) przekierowanie strumieni danych rozwinięcie nazw plików

Działanie powłoki (2) Rozpoznanie i wykonanie polecenia polecenie lub funkcja powłoki wykonuje bieżąca powłoka skrypt tworzy nowy proces (powłoka potomna) powłoka potomna wykonuje polecenia ze skryptu program tworzy nowy proces proces wczytuje kod programu

Uruchamianie programów przez powłokę (1) Proces na pierwszym planie $ program arg proces pierwszoplanowy korzysta z terminala powłoka czeka na zakończenie procesu i nie przyjmuje kolejnych poleceń Grupa procesów na pierwszym planie $ program1 ; program2 ; program3 procesy uruchamiane są sekwencyjnie

Uruchamianie programów przez powłokę (2) Proces na drugim planie (w tle) $ program arg & proces drugoplanowy nie korzysta z terminala powłoka przyjmuje kolejne polecenia Grupa procesów w tle $ program1 & program2 & program3 & procesy uruchamiane są współbieżnie

Uruchamianie programów przez powłokę (3) Grupa procesów w potoku $ program1 program2 program3 procesy uruchamiane są współbieżnie

Parametry powłoki Parametry są instancjami przechowującymi wartości Mogą być reprezentowane przez: nazwy (łańcuchy znaków) zmienne liczby naturalne parametry pozycyjne znaki specjalne parametry specjalne

Parametry Odwołanie do wartości dowolnego parametru następuje za pomocą znaku $ : $parametr ${parametr} Postać z nawiasami jest konieczna: gdy w poleceniu bezpośrednio za nazwą parametru chcemy umieścić inne znaki ${x}y gdy nazwa liczbowa składa się z więcej niż jednej cyfry ${11} Ustawianie wartości zależy od typu parametru

Zmienne Ustawianie wartości zmiennych zmienna=[wartość] typeset zmienna=[wartość] declare zmienna=[wartość] Jeśli wartość zostanie pominięta, to zmiennej zostanie przypisany zerowy ciąg znaków Usunięcie zmiennej umożliwia polecenie: unset zmienna Listę wszystkich zmiennych uzyskamy poleceniem: set

Zmienne środowiska Każdy tworzony proces, również każda powłoka, otrzymuje nowe środowisko w postaci tablicy zawierającej ciągi znaków: zmienna=wartość Każdy taki ciąg oznacza utworzenie nowej zmiennej środowiska Ten początkowy zestaw zmiennych środowiska jest dziedziczony po procesie macierzystym, którym najczęściej jest powłoka uruchamiająca nowy program

Zmienne środowiska Wyświetlanie całego środowiska printenv env Wyświetlanie wartości pojedyńczej zmiennej echo $zmienna Ustawianie zmiennej środowiska zmienna=wartość export zmienna w powłokach zsh i bash również: export zmienna=wartość

Wybrane zmienne środowiska LOGNAME, USER HOME LANG PATH CDPATH MANPATH LD_LIBRARY_PATH PWD SHELL TERM MAIL IFS TZ PS1 PS2 Nazwa zmiennej Katalog domowy zalogowanego użytkownika. Język lokalny. Ścieżka poszukiwań programów. Ścieżka poszukiwań katalogów. Ścieżka poszukiwań dokumentacji systemowej. Ścieżka poszukiwań bibliotek dynamicznych. Katalog bieżący. Powłoka uruchamiana po zalogowaniu użytkownika. Typ terminala. Skrzynka pocztowa zalogowanego użytkownika. Wejściowy separator pola. Strefa czasowa. Znaczenie Nazwa zalogowanego użytkownika. Podstawowy komunikat gotowości powłoki wyświetlany, gdy powłoka jest gotowa do przyjęcia kolejnego polecenia Wtórny komunikat gotowości powłoki wyświetlany, gdy powłoka oczekuje na dokończenie polecenia w następnej linii

Parametry specjalne Parametr # * @? $! - Znaczenie Liczba parametrów pozycyjnych. Lista parametrów pozycyjnych w postaci jednego ciągu znaków. Lista parametrów pozycyjnych w postaci oddzielnych ciągów znaków. Status zakończenia ostatnio uruchomionego polecenia. PID bieżącej powłoki. PID procesu ostatnio uruchomionego w tle. Lista opcji bieżącej powłoki. Przykłady użycia: $? umożliwia sprawdzenie w skrypcie, czy jakieś polecenie zakończyło się pomyślnie $$ zawiera identyfikator PID bieżącej powłoki, który można wykorzystać np. do stworzenia pliku tymczasowego o unikalnej nazwie

Parametry pozycyjne Parametr $0 $1, $2 $9 ${10}, ${11} $# $* $@ Znaczenie Nazwa skryptu. Wartości pierwszych 9 argumentów wywołania. Wartości kolejnych argumentów wywołania (tylko zsh, bash). Liczba parametrów pozycyjnych. Lista parametrów pozycyjnych w postaci jednego ciągu znaków. Lista parametrów pozycyjnych w postaci oddzielnych ciągów znaków. Przesuwanie parametrów pozycyjnych o n pozycji shift [n] Ustawienie nowego zestawu parametrów pozycyjnych set arg1 arg2 arg3

Znaki specjalne powłoki Zestaw znaków, którym powłoka nadaje specjalne znaczenie Umożliwiają m.in.: rozwijanie nazw plików cytowanie grupowanie poleceń przekierowanie strumieni podstawienie wartości zmiennych podstawienie wyników poleceń inne

Rozwijanie nazw plików (wyrażenia regularne) Znak Znaczenie? * [ ] zastępuje jeden dowolny znak zastępuje dowolny ciąg znaków zastępuje jeden znak z listy podanej wewnątrz nawiasów [ - ] zastępuje jeden znak z zakresu podanego wewnątrz nawiasów [^ ] lub [! ] zastępuje dowolny znak oprócz tych podanych wewnątrz nawiasów Przykłady: ls *.? ls *.[ch]

Cytowanie \ ` ` Znak Znaczenie zapobiega interpretacji następnego znaku zapobiegają interpretacji wszystkich znaków zawartych wewnątrz cudzysłowów, z wyjątkiem znaków $ i `` zapobiegają interpretacji wszystkich znaków zawartych wewnątrz apostrofów wykonuje polecenie zawarte wewnątrz znaków i wstawia w to miejsce strumień wyjściowy tego polecenia Przykłady: echo \$HOME echo Katalog bieżący: `pwd` echo Znaki specjalne powłoki: $ `` * \

Grupowanie poleceń Znak cmd ; cmd ; cmd cmd & cmd & cmd & cmd cmd cmd (cmd ; cmd) { cmd ; cmd ; } Znaczenie powłoka grupuje polecenia na pierwszym planie wykonując je sekwencyjnie powłoka grupuje polecenia w tle wykonując je asynchronicznie powłoka grupuje polecenia wykonując je w potoku powłoka grupuje polecenia i wykonuje w nowej powłoce powłoka grupuje polecenia i wykonuje w bieżącej powłoce, tworzy jeden strumień wyjściowy dla całej grupy poleceń i zwraca jeden status zakończenia Przykłady: ls lr / more sleep 50 & ps f sleep 50 ; ps -f

Strumienie danych Powłoka związuje z każdym tworzonym procesem trzy strumienie danych: stdin stdout stderror - standardowy strumień wejściowy, - standardowy strumień wyjściowy, - standardowy strumień błędów (diagnostyczny). Każdy ze strumieni związany jest z plikiem zwykłym lub z plikiem urządzenia wejścia/wyjścia. Domyślnym przywiązaniem dla wszystkich strumieni jest plik terminala. Każdy plik otwarty przez proces otrzymuje kolejny numer zwany deskryptorem pliku. Deskryptory 0, 1 i 2 zarezerwowane są dla plików związanych ze standardowymi strumieniami.

Przekierowanie strumieni Znak [d]<plik [d]>plik [d]>>plik [d]<>plik &>plik >&plik [d1]>&d2 Znaczenie przekierowanie wejścia powoduje otwarcie pliku do czytania z deskryptorem d; jeżeli d zostało pominięte przyjmowane jest 0 przekierowanie wyjścia powoduje otwarcie pliku do pisania z deskryptorem d; jeżeli d zostało pominięte przyjmowane jest 1 przekierowanie wyjścia powoduje otwarcie pliku do dopisywania z deskryptorem d; jeżeli d zostało pominięte, przyjmowane jest 1 przekierowanie powoduje otwarcie pliku do czytania i pisania z deskryptorem d, przekierowanie powoduje skierowanie strumienia wyjściowego i strumienia błędów do tego samego pliku przekierowanie powoduje zduplikowanie deskryptora pliku wyjściowego; deskryptor d1 staje się kopią deskryptora d2 i wskazuje na ten sam plik Przykłady: ps ef >procesy.txt ls lr >pliki.txt 2>bledy.log

Skrypty powłoki Plik tekstowy zawierający listę poleceń dla interpretera nosi nazwę skryptu. Skrypt może zawierać: odwołania do zmiennych, wbudowane polecenia interpretera, polecenia i pętle sterujące, wywołania programów i innych skryptów, komentarze.

Uruchamianie skryptów Jawne wywołanie nowej powłoki z pierwszym argumentem w postaci nazwy skryptu: sh skrypt arg... bash skrypt arg... Wywołanie nazwy skryptu: chmod +x skrypt skrypt arg... niejawne wywołanie nowej powłoki: domyślnie powłoka sh powłoka wskazana w pierwszej linii skryptu #!/bin/zsh

Uruchamianie skryptów Wykonanie skryptu w bieżącej powłoce:. skrypt arg... source skrypt arg... Przykład: source.zshenv..bashrc

Pętle sterujące (1) for zmienna [in słowo...] do lista_poleceń done Pętla wykonuje się raz dla każdego słowa z listy Jeśli lista zostanie pominięta, pętla wykonuje się raz dla każdego ustawionego parametru pozycyjnego Przykłady: for arg in $* do echo $arg for arg do echo $arg done done

Pętle sterujące (2) while lista_warunków do lista_poleceń done Pętla wykonywana jest dopóki ostatnie polecenie z listy warunków zwraca status zerowy until lista_warunków do lista_poleceń done Pętla wykonywana jest dopóki ostatnie polecenie z listy warunków zwraca status niezerowy

Polecenie warunkowe if if lista_warunków then lista_poleceń [elif lista_warunków then lista_poleceń]... [else lista_poleceń] fi Wykonywana jest gałąź, dla której ostatnie polecenie z listy warunków zwraca status zerowy

Sprawdzanie warunków Mechanizm wbudowany w powłokę zsh/bash [[ warunek ]] Polecenie test test warunek [ warunek ]

Testowanie atrybutów plików -r plik -w plik -x plik -f plik -d plik -c plik -b plik -p plik -s plik sprawdza, czy użytkownik posiada prawo do czytania sprawdza, czy użytkownik posiada prawo do pisania sprawdza, czy użytkownik posiada prawo do wykonywania sprawdza, czy plik to plik zwykły sprawdza, czy plik to katalog sprawdza, czy plik to plik specjalny znakowy sprawdza, czy plik to plik specjalny blokowy sprawdza, czy plik to plik FIFO sprawdza, czy plik to plik o niezerowej długości Przykład: if [ -w kat ] then cd kat mkdir nowy_kat fi

Testowanie liczb całkowitych n1 -eq n2 n1 -ne n2 n1 -gtn2 n1 -ge n2 n1 -lt n2 n1 -le n2 sprawdza czy n1 = n2 sprawdza czy n1 >< n2 sprawdza czy n1 > n2 sprawdza czy n1 >= n2 sprawdza czy n1 < n2 sprawdza czy n1 <= n2 Przykład: while [ $# -gt 0 ] do done echo $1 shift

Testowanie ciągów znaków s1 s1 = s2 s1!= s2 sprawdza, czy ciąg jest niezerowy sprawdza, czy ciągi są identyczne sprawdza, czy ciągi są różne Przykład: while [ $1 ] do done echo $1 shift

Łączenie i negowanie warunków Iloczyn [ warunek1 a warunek2 ] Suma [ warunek1 o warunek2 ] Negacja [! warunek ] Przykład if [! d $1 o! x $1 ] then echo Brak uprawnien do $1 else ls l $1 fi

Operacje arytmetyczne (1) Mechanizm wbudowany w powłokę zsh/bash $((wyrażenie)) let wyrażenie [wyrażenie...] Przykłady echo $((4+5)) x=$((x+1)) let x=x+1 -inkrementuje zmienną x

Operacje arytmetyczne (2) Program expr expr wyrażenie expr arg1 operator arg2... Podstawienie zmienna=`expr wyrażenie` Przykłady expr 3 \* 7 x=`expr $x + 1` -inkrementuje zmienną x expr $1 : '.*' -podaje liczbę znaków w $1

Program find find ścieżka wyrażenie Przykłady find / -name *.c find / -name proc.h find. type d print find. mtime -2 exec ls l {} \;

Filtry Filtry to grupa programów służących do wyszukiwania wzorców i/lub przetwarzania plików tekstowych

Program grep (1) grep [opcje] wzorzec [plik ] Program grep poszukuje w stdin lub w plikach wejściowych wierszy, które pasują do podanego wzorca. Każdy znaleziony wiersz jest przesyłany w całości na stdout. Opcje -c -n -v -podaje tylko liczbę dopasowanych linii, -dopisuje numer przed każdą dopasowaną linią, -wypisuje tylko te linie, które nie pasują do wzorca.

Program grep (2) Wzorzec ma postać wyrażenia regularnego, w którym mogą wystąpić znaki specjalne. Znak ^ $. * [ ] [ -] \ Początek wiersza. Koniec wiersza. Jeden dowolny znak. Znaczenie Dowolna liczba wystąpień poprzedzającego wyrażenia (w tym zero wystąpień). Jeden dowolny znak z listy zawartej wewnątrz nawiasów. Jeden dowolny znak z zakresu podanego wewnątrz nawiasów. Przywraca pierwotne znaczenie następnego znaku.

Program grep (3) Wersje programu: grep dopuszcza wzorce z podstawowym zakresem znaków specjalnych fgrep dopuszcza stosowanie tylko uproszczonych wzorców, które nie zawierają żadnych znaków specjalnych egrep dopuszcza wzorce z rozszerzonym zakresem znaków specjalnych

Program grep (4) Dodatkowe znaki specjalne programu egrep Znak +? {n} Znaczenie Liczba wystąpień poprzedzającego wyrażenia > 1. Liczba wystąpień poprzedzającego wyrażenia = 0 lub 1. Poprzedzające wyrażenie powtarza się dokładnie n razy.

Program grep (5) Przykłady ps ef grep sendmail ls l grep c ^d