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

Podobne dokumenty
Interpreter poleceń oraz zmienne środowiskowe

Linuks skrypty Część teoretyczna

Powłoka (shell) Powłoka ksh

1 Przygotował: mgr inż. Maciej Lasota

Pracownia Komputerowa wykład III

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

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

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

Powłoka bash. Kurs systemu Unix 1

Pracownia Komputerowa wykład III

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

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

Powłoka interpreter poleceń systemu UNIX

Ćwiczenie nr 14: System Linux

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Wprowadzenie do programowania w powłoce

Technologie Informacyjne - Linux 3

Systemy operacyjne 11

PODSTAWY INFORMATYKI

System operacyjny Linux

- wszystkie elementy - wszystkie elementy

Programowanie skryptów powłoki

Skrypty powłoki w systemie Linux

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

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

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

Tworzenie skryptu: Skrypty powłoki

Trochę o plikach wsadowych (Windows)

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

Wstęp do Informatyki dla bioinformatyków

Programowanie w języku Python. Grażyna Koba

Przekierowanie wejścia wyjścia:

Programowanie w BASH u Skrypt do ćwiczeń

Pracownia Komputerowa wyk ad III

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

Pracownia komputerowa. Dariusz wardecki, wyk II

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

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

Środowisko programisty Zestaw 7

Blockly Kodowanie pomoc.

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Wprowadzenie do Scilab: podstawy języka Scilab

Bash - instrukcje warunkowe, pętle i funkcje

Pętle. Dodał Administrator niedziela, 14 marzec :27

Metody numeryczne Laboratorium 2

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

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

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

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

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Lab 9 Podstawy Programowania

Laboratorium Ubuntu Linux.

Technologie Informacyjne - Linux 2

KARTA KURSU. Języki skryptowe

Umieszczanie kodu. kod skryptu

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

1 Podstawy c++ w pigułce.

Strona1. Linux. Skrypty powłoki

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Ćwiczenie: JavaScript Cookies (3x45 minut)

Programowanie komputerowe. Zajęcia 1

Kompilator języka Basic można bezpłatnie pobrać ze strony z zakładki DOWNLOAD.

1 Podstawy c++ w pigułce.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy programowania skrót z wykładów:

1 Programowanie w matlabie - skrypty i funkcje

do instrukcja while(wyrażenie);

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

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

lekcja 8a Gry komputerowe MasterMind

Ćwiczenie 1. Wprowadzenie do programu Octave

Języki skryptowe w programie Plans

Systemy operacyjne II Laboratorium. Część 1: Pliki wsadowe Windows

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Wstęp do systemu Linux

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Zakład Systemów Rozproszonych

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

Warunki logiczne instrukcja if

Podstawy Programowania C++

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

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

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Podstawy Programowania Podstawowa składnia języka C++

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Bloki anonimowe w PL/SQL

Cw.12 JAVAScript w dokumentach HTML

Transkrypt:

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty wywołania skryptów, instrukcja warunkowa, pętle, pobieranie wartości w trakcie wykonywania skryptu, uruchamianie skryptów z debugowaniem. I. Interpreter poleceń oraz zmienne śrowiskowe. Interpreter poleceń nazywany inaczej także powłoką systemową pośredniczy pomiędzy użytkownikiem a funkcjami systemu operacyjnego. Powłoka systemowa pobiera dane i polecenia od użytkownika i przekazuje je wykonania jądra systemu operacyjnego. Dostępnych jest wiele różnych powłok, z których najpopularniejsze wydają się następujące: interpreter Korna uruchamiany poleceniem ksh, interpreter tcsh oraz najpopularniejszy i najpowszechniej obecnie stosowany bash (ang. Bourne Again Shell). Wszystkie dalsze przykłady będą prezentowane właśnie dla powłoki bash. Zmienne śrowiskowe to bardzo wygodny i uniwersalny sposób konfigurowania i parametryzowania powłok systemowych i za ich pomocą także innych programów. Dostępne zmienne śrowiskowe tworzą tzw. śrowisko wykonania procesu śrowisko to jest kopiowane wszystkich nowych procesów, a więc modyfikacje zmiennych wykonane w powłoce są wiczne we wszystkich programach uruchomionych przy użyciu tej powłoki. Każdy użytkownik może definiować wolną ilość własnych zmiennych oraz przypisywać im wolne wartości. Aby zdefiniować zmienną śrowiskową należy zastosować operator przypisania (znak = ) w następujący sposób: ZMIENNA=wartosc W tym wypadku ciąg znaków ZMIENNA to nazwa zmiennej, a wartosc to jej wartość należy zwrócić uwagę, że pomiędzy nazwą zmiennej, operatorem przypisania i wartością nie może być spacji. Odwołanie się wartości zmiennej jest możliwe dzięki specjalnemu znakowi $; np. wyświetlenie wartości zmiennej na ekranie jest możliwe z wykorzystaniem polecenia echo, które wyświetla linię tekstu oraz wartości zmiennej pobranej znakiem $: SYSTEM=Unix echo $SYSTEM Unix Polecenie systemowe set pozwala wyświetlić wartości wszystkich zmiennych śrowiskowych, a polecenie unset usuwa zmienną śrowiskową, oto przykład: unset SYSTEM Jak wspomniano śrowisko wykonania procesu jest przekazywane procesów potomnych jednak nie wszystkie zmienne powłoki muszą być przekazywane uruchamianych programów. Zmienne, które są przekazywane nazywa się zmiennymi eksportowanymi, a zmienne, które nie są przekazywane, nazywa się zmiennymi lokalnymi. Z reguły nowo tworzone zmienne są początkowo zmiennymi lokalnymi i niezbędne jest jawne wskazanie, że mają być zmiennymi eksportowanymi. Nazywa się to eksportowaniem zmiennych i jest realizowane przez poleceniem: export lista_zmiennych Oto przykład tworzenia zmiennej i jej eksportowania: SYSTEM=Unix export SYSTEM str. nr 1/6

Powyższe zlecenia można także zrealizować jednym poleceniem: export SYSTEM=Unix Każdy użytkownik może łatwo (np. poleceniem set) zweryfikować, że w systemie jest zdefiniowanych wiele zmiennych śrowiskowych, oto znaczenie podstawowych z nich: HOME ścieżka i nazwa katalogu mowego użytkownika; USER nazwa zalogowanego użytkownika; PATH ścieżki poszukiwań programów; PS1 postać znaku zachęty użytkownika; SHELL pełna ścieżka myślnego interpretatora poleceń użytkownika. II. Skrypty i ich argumenty. Skrypty powłoki to pliki tekstowe, które zawierają ciągi poleceń dla powłoki systemowej. Współczesne powłoki pozwalają także aby skryty zawierały konstrukcje programistyczne, takie jak instrukcje warunkowe czy pętle, polecenia pozwalające na interaktywną prace skryptu, czy też przekazywanie argumentów ich wywołania. Skryty są bardzo pomocnym rozwiązaniem kiedy istnieje konieczność wykonywania złożonych poleceń i poleceń, które są powtarzane okresowo. Skrypty mogą być parametryzowane argumentami ich wywołania oznacza to, że podczas uruchamiania skryptu można przekazać niego wolną ilość wolnych danych. Do argumentów wywołania można się odwoływać w skryptach za pomocą tzw. zmiennych pozycyjnych, oznaczanych: 1,2,3...9. Każda zmienna pozycyjna przechowuje tekst przekazany za pośrednictwem odpowiadającemu jej argumentu wywołania pierwszy argument stępny jest w zmiennej pozycyjnej 1 itd. Oto przykład pierwszego skryptu, który wyświetla wartości pierwszych trzech argumentów jego wywołania: # pierwszy skrypt echo argument nr 1: $1 echo argument nr 2: $2 echo argument nr 3: $3 Takie polecenia należy zapisać wolnego pliku (zaleca się, aby pliki skryptów miały rozszerzenie.sh). Pierwsza linia pozwala wskazać jaki interpreter poleceń ma zostać wykorzystany jego wykonania w tym przypadku jest to powłoka bash. Druga linia prezentuje sposób umieszczania komentarzy; każda linia rozpoczynająca się od znaku #, jest traktowana jako komentarz. Kolejne trzy linie wyświetlają wartości pierwszych trzech argumentów wywołania skryptu z wykorzystaniem polecenia echo(1). Aby uruchomić skrypt należy dla pliku, w którym jest on zapisany nadać prawo wykonywania. Poniżej przedstawiono przykławe wywołanie przedstawionego powyżej skryptu oraz jego wynik (przyjęto, że plik skryptu nazywa się skrypt1.sh):./skrypt1.sh abc xyz 12345 argument nr 1: abc argument nr 2: xyz argument nr 3: 12345 III. Instrukcja warunkowa. Obecnie powłoki systemowe pozwalają na to, aby skrypty zawierały konstrukcje sterujące ich wykonaniem podstawową instrukcją jest w tym przypadku instrukcja warunkowa. Składnia tej instrukcji jest następująca: if warunek then instrukcje wykonywane jeśli warunek zostanie spełniony else str. nr 2/6

fi instrukcje wykonywane jeśli warunek nie zostanie spełniony Należy zaznaczyć, że słowa kluczowe instrukcji warunkowej muszą być zapisane w osobnych liniach, kładnie tak jak w powyższym przykładzie. Warunek może być wolnym poleceniem, jednak sprawdzanie warunków najczęściej odbywa się przy użyciu programu test(1). Polecenie to jest powszechnie wykorzystywane w skryptach z zastosowaniem notacji używającej znaków [ i ] realizacji testów warunków, co prezentuje kolejny przykład: if [ $1 = xyz ] then echo arg nr 1 = xyz else echo arg nr 1 <> xyz fi Po znaku [ i przed znakiem ] konieczne jest wprowadzenie znaku spacji. Możliwe wykonania testy z zastosowaniem programu test prezentuje Tabela 1. Warunek znaki1 = znaki2 znaki1!= znaki2 Opis Weryfikacja równości dwóch łańcuchów znaków Weryfikacja nierówności dwóch łańcuchów znaków -z znaki Weryfikacja, czy łańcuch znaków ma zerową długość -n znaki Weryfikacja, czy łańcuch znaków ma niezerową długość liczba1 -eq liczba2 liczba1 -ne liczba2 liczba1 -qt liczba2 liczba1 -lt liczba2 Weryfikacja równości dwóch liczb Weryfikacja nierówności dwóch liczb Weryfikacja, czy liczba1 jest większa od liczba2 Weryfikacja, czy liczba1 jest mniejsza od liczba2 -e nazwa Weryfikacja, czy podany plik istnieje -f nazwa Weryfikacja, czy podany plik jest plikiem zwykłym -d nazwa Weryfikacja, czy podany plik jest katalogiem -r nazwa -w nazwa -x nazwa warunek1 -a warunek2 warunek1 -o warunek2 Weryfikacja, czy użytkownik ma prawo, odpowiednio, odczytu, zapisu i wykonywania dla pliku o podanej nazwie Iloczyn logiczny warunków Suma logiczna warunków! warunek1 Negacja warunku Tabela 1: Wybrane rodzaje testów polecenia test str. nr 3/6

IV. Pętle. Skrypty powłoki mogą także zawierać pętle podstawowe dwie z nich to pętla for oraz while. Pętla for wykonywana jest z góry określoną ilość razy, a jej ogólna składnia jest następująca: for zmienna in lista instrukcje wykonania Wykonanie pętli powoduje przypisywanie zmiennej zmienna kolejnych wartości wymienionych na liście lista; ilość iteracji, jest zatem zależna od długości podanej listy. Jako listę można pętli for można podawać wzorce uogólniające powłoki. Poniższy przykład skryptu prezentuje zastosowanie pętli for usunięcia wszystkich plików z rozszerzeniem.tmp z katalogu bieżącego: for FILE in *.tmp rm -v $FILE Ilość iteracji powyższej pętli bezie zatem determinowana ilością plików z rozszerzeniem *.tmp, które utworzą listę wartości dla zmiennej FILE. Realizacja pętli numerycznej z zastosowaniem pętli for jest możliwa z użyciem programu seq(1), który wypisuje kolejne liczby, np.: for N in `seq 1 10`... spowoduje dziesięciokrotne wykonanie pętli. Pętla while pozawala na realizację pętli, dla których ilość iteracji nie jest znana z góry, jej składnia dla skryptów powłoki jest następująca: while warunek instrukcje wykonania Warunek może być wolnym poleceniem i najczęściej jest konstruowany tak jak w przypadku instrukcji warunkowej z zastosowaniem programu test. Przykładem zastosowania pętli while może być skrypt wypisujący na ekranie wartości wszystkich argumentów wywołania skryptu (niezależnie od ich liczby). Pętla taka będzie wykorzystywała polecenie shift(1), które powoduje przesunięcie argumentów oto skrypt: while [ -n $1 ] echo $1 shift Warunkiem wykonania pętli jest sprawdzenie, czy pierwszy argument wywołania skryptu ma niezerową długość jeśli skrypt został uruchomiony bez żadnych argumentów, to pętla nie zostanie wykonana. Jeśli natomiast skrypt został wykonany z argumentami, to w pierwszym wykonaniu pętli str. nr 4/6

zostanie wyświetlona wartość pierwszego argumentu, a następnie nastąpi przesunięcie argumentów w lewo poleceniem shift (drugi argument stanie się pierwszym, trzeci drugim itd.). Pętla zakończy się jeśli zostaną wyświetlone i przesunięte wszystkie argumenty (zmienna pozycyjna $1 będzie miała wówczas zerową długość). Obie zaprezentowane pętle mogą zostać przerwane poleceniem break(1) oto przykład zastosowania przerywania pętli: for FILE in *.tmp if [! -f $FILE ] then echo $FILE nie jest plikiem! break fi rm -v $FILE Jak widać pętla zostanie przerwana, jeśli pobrana nazwa z rozszerzeniem *.tmp nie będzie wskazywała na plik zwykły. V. Pobieranie wartości skryptów oraz ich debugowanie. Jeśli skrypt wymaga iteracji z użytkownikiem, to niezbędne staje się pobieranie wartości przekazywanych przez użytkownika. Służy tego polecenie: read argumenty Argumentami są nazwy zmiennych śrowiskowych, które przyjmą wartość odczytana ze standarwego wejścia ( napotkania znaku nowej linii). Jeśli jako argumenty podano kilka zmiennych, to są one inicjowane w ten sposób, że pierwsze słowo trafia pierwszej zmiennej, drugie drugiej itd. Polecenie to można przetestować wykonując następujące polecenia: read X Y uzytkownik adam echo $X uzytkownik echo $Y adam Skrypty mogą być także wykonywanie w trybie debugowania, np. w celu testowania poprawności działania, warunków, pętli itp. Aby zrealizować wykonanie skryptu z wyświetlaniem informacji kontrolnych należy zastosować przełącznik -x wywołania interpretatora poleceń. Można to zrealizować na dwa sposoby: po pierwsze można pisać tenże przełącznik w pierwszej linii skryptu: -x po drugi można uruchomić skrypt wywołując go poprzez wskazanie interpretatora z przełącznikiem i nazwą skryptu jako argumentem; przyjmując, że skrypt posiada nazwę skrypt.sh uruchomienie miałoby następującą postać: bash -x skrypt.sh VI. Zadania samodzielnego wykonania. 1) Zdefiniuj zmienną IMIE i przypisz jej swoje imię. Wyświetl zawartość tej zmiennej. Wyeksportuj tą zmienną i sprawdź, czy jest stępna w nowym (potomnym) interpreterze. 2) Wyświetl listę zmiennych eksportowanych. str. nr 5/6

3) Zmień własny znak zachęty, modyfikując zmienną PS1. 4) Napisz skrypt, który dla każdego z plików podanych jako argumenty wywołania posortuje jego zawartość. 5) Napisz skrypt, który dla każdego z plików podanych jako argumenty wywołania wyświetli w kolejnych liniach 3 najczęściej powtarzające się w nim słowa. 6) Napisz skrypt, który będzie kopiował plik podany jako pierwszy argument wszystkich katalogów podanych jako kolejne argumenty wywołania. VII.Literatura. [Bac95] Bach M. J., Buwa Systemu Operacyjnego UNIX, WNT, 1995, ISBN 83-204-2015-6. [Sob01] Sobaniec C., Linux Przewodnik Użytkownika., Wydawnictwo NAKOM, 2001, ISBN 83-86969-53-9. str. nr 6/6