Wprowadzenie do programowania w powłoce

Podobne dokumenty
1 Przygotował: mgr inż. Maciej Lasota

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

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

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

Pracownia Komputerowa wykład III

Powłoka interpreter poleceń systemu UNIX

Interpreter poleceń oraz zmienne środowiskowe

System operacyjny Linux

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Powłoka (shell) Powłoka ksh

Technologie Informacyjne - Linux 3

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

Tworzenie skryptu: Skrypty powłoki

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

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

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

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

Programowanie w BASH u Skrypt do ćwiczeń

Systemy operacyjne 11

PODSTAWY INFORMATYKI

Podstawy programowania w Bash'u

Skrypty powłoki w systemie Linux

Programowanie skryptów powłoki

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

Środowisko programisty Zestaw 7

Strona1. Linux. Skrypty powłoki

Laboratorium Ubuntu Linux.

Pracownia Komputerowa wykład III

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

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

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

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

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

Systemy operacyjne Programowanie w języku powłoki sh

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

Linuks skrypty Część teoretyczna

1 Podstawy c++ w pigułce.

2 Przygotował: mgr inż. Maciej Lasota

Powłoka bash. Kurs systemu Unix 1

Podstawy programowania skryptów Sh

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

Zakład Systemów Rozproszonych

Ćwiczenie 1. Wprowadzenie do programu Octave

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

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

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

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

Technologie Informacyjne - Linux 2

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

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

Systemy operacyjne 10

Należy ściągnąć oprogramowanie Apache na platformę

PODSTAWY INFORMATYKI

Pracownia Komputerowa wyk ad III

Wstęp do Informatyki dla bioinformatyków

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

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Ćwiczenie 1. Wprowadzenie do programu Octave

Wstęp do systemu Linux

Programowanie w języku Python. Grażyna Koba

Wstęp do systemu Linux

1 Podstawy c++ w pigułce.

Programowanie komputerowe. Zajęcia 1

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Programowanie strukturalne i obiektowe

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

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ć

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

2.5 Podstawy programowania w bash'u

Kurs pisania skryptów w powłoce BASH

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Przekierowanie wejścia wyjścia:

Ćwiczenie nr 14: System Linux

11. Wstęp do skryptów w Linuxie

Podstawy informatyki

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Pascal - wprowadzenie

Warunki logiczne instrukcja if

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Część 4 życie programu

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Cw.12 JAVAScript w dokumentach HTML

Wprowadzenie do Scilab: podstawy języka Scilab

JAVAScript w dokumentach HTML (1)

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

Pracownia komputerowa. Dariusz wardecki, wyk II

JAVA?? to proste!! Autor: wojtekb111111

Umieszczanie kodu. kod skryptu

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie w Bashu

Języki skryptowe w programie Plans

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Bash, skrypty. Wojciech Dudek. 15 listopada Uniwersytet Warszawski

Transkrypt:

Wprowadzenie do programowania w powłoce mgr inż. Maciej Lasota m.lasota@tu.kielce.pl Katedra Informatyki, Politechnika Świętokrzyska w Kielcach 22 lutego 2012

Powłoka systemowa Powłoka systemowa Podstawowym sposobem komunikacji z systemem operacyjnym Unix/Linux (pomijając tryb graficzny) jest powłoka systemowa (ang. system shell) zwana również interpretatorem poleceń (ang. command interpreter). Powłoka systemowa jest to specjalny program rezydentny (działający w tle w pamięci operacyjnej) uruchamiany przy starcie systemu i stanowiący integralną część systemu operacyjnego. Zadaniem powłoki systemowej jest umożliwienie komunikacji między użytkownikiem systemu a jądrem systemu operacyjnego (całym systemem operacyjnym). Powłoka systemowa przyjmuje polecenia od użytkownika i wyprowadza wyniki działania systemu lub określonego programu na ekran monitora (w postaci komunikatów). W przypadku systemów uniksopodobnych wyróżniam kilka różnego rodzaju powłok systemowych, w zależności od przeznaczenia. Powłoki systemowe sh - podstawowa powłoka systemowa, bash - ulepszona wersja powłoki sh, csh, ksh, zsh, tcsh.

Powłoka systemowa Powłoka systemowa Powłoka systemowa sh stworzona została przez Stephena Bourne a przez rozbudowanie prostego interpretera poleceń o nazwie shell. Sh była domyślną powłoką w systemie Unix Version 7, gdzie zastąpiła pierwszą powłokę dla systemu Unix napisaną przez Kena Thompsona. Powłoka sh była rozwijana w laboratoriach AT&T, a jej pierwsza wersja pojawiła się w 1977 roku wraz z wydaniem systemu UNIX Version 7. Plikiem wykonywalnym powłoki na większości systemów Unix jest /bin/sh. Sh jest powłoką rozbudowaną wprowadzającą własny języki skryptowy (przypominający składnią język C), którego używa się do programowania w powłoce (tworzenia własnych skryptów). Obecnie jest to podstawowa powłoka systemowa w każdej wersji Unix a

Powłoka systemowa Powłoka systemowa Powłoka systemowa bash to jedna z najpopularniejszych powłok systemów uniksowych. Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X, istnieją także wersje dla większości systemów uniksowych. Bash jest także domyślną powłoką w środowisku Cygwin. Nazwa jest akronimem od Bourne-Again Shell (odrodzona powłoka shell a). Wywodzi się od powłoki sh, która była jedną z pierwszych i najważniejszych powłok systemu operacyjnego Unix oraz zawiera pomysły zawarte w powłokach ksh i csh. Pierwsza wersja powłoki Bourne a była tworzona przez Stephena Bourne a.

Szkielet skryptu powłoki Szkielet skryptu powłoki Skrypt powłoki tworzymy w zwykłym standardowym pliku tekstowym (plain-text) ASCII, skrypt wykonywany (interpretowany linia po linii) jest przez powłokę systemu operacyjnego. Skrypty powłoki zazwyczaj tworzymy w plikach z rozszerzeniem *.sh np. script.sh (nieformalna zasada). Podstawowy szkielet takiego skryptu został przedstawiony poniżej. Przykład # Nagłówek (może być #!/bin/sh) określa nam powłokę # która ma wykonać nasz skrypt #!/bin/bash # Cześć deklaracyjna, w części tej mogą znajdować się # zadeklarowane zmienne,stałe, tablice lub funkcje echo Witaj # Komentarze w skrypcie poprzedzamy znakiem # hash a

Szkielet skryptu powłoki Szkielet skryptu powłoki Uwaga Tak stworzony skrypt można wykonać (uruchomić) na dwa sposoby. Pierwszym sposobem jest wpisanie w linii poleceń (konsoli) nazwę powłoki i nazwę skryptu (oddzielonych spacją) np. sh script.sh, bash script.sh itd.. Drugim sposobem jest bezpośrednie wywołanie skryptu wpisując./script.sh, sposób ten wymaga jednak ustawienia odpowiednich praw wykonywania dla pliku script.sh.

Prawa dostępu Prawa dostępu W systemach Unix/Linux podczas tworzenia pliku, system operacyjny zapisuje nie tylko nazwę i datę utworzenia pliku, ale także identyfikator użytkownika oraz grupy. Aby chronić pliki przed niepowołanym dostępem dla każdego pliku można ustawić odpowiednie ograniczenia (uprawnienia) zwana też prawami dostępu.

Prawa dostępu Prawa dostępu Prawa dla plików lub katalogów w systemach uniksopodobnych ustawiamy za pomocą polecenia chmod. Przykład 1 chmod [prawa dostępu] [nazwa pliku lub katalogu] chmod [prawa dostępu] -R [nazwa katalogu] Przykład 2 chmod 755 plik.txt -> (111),(101),(101) pełne prawa dla właściciela, dla grupy i pozostałych jedynie odczyt i wykonywanie chmod 666 -R dane -> (110),(110),(110) dla właściciela, grupy i pozostałych prawo odczytu i zapisu chmod 700 script.sh -> (111),(000),(000) dla właściciela pełne prawa

Zmienne Zmienne Zmienne w skryptach powłoki deklarujemy w następujący sposób: nazwa zmiennej= wartość zmiennej, jako wartość możemy podać liczbę, napis lub polecenia systemowe, polecenia podajemy w postaci odwrotnych apostrofów polecenie lub $(polecenie). Do zmiennej odwołujemy się poprzez znak dolara $. Przykład #!/bin/bash a=1 b=2 zmienna1= napis testowy zmienna2= ls zmienna3=$(pwd) wynik=$[a+b] wynik2=$[a+1] wynik3=$((a+b)) echo $zmienna1 echo Moje pliki $zmienna2 echo Moj katlog $zmienna3 # Komentarze w skrypcie poprzedzamy znakiem # hash a

Operatory arytmetyczne i logiczne Operatory arytmetyczne i logiczne Wyróżniamy następujące operatory w języku powłoki: Operatory arytmetyczne = - operator przypisania, + - operator dodawania, - - operator odejmowania, * - operator mnożenia, / - operator dzielenia, ** - podnoszenie do potęgi, % - operator modulo (reszta z dzielenia). Operatory logiczne! - operator negacji, && - operator iloczynu logicznego, - operator sumy logicznej.

Operatory arytmetyczne i logiczne Operatory arytmetyczne i logiczne Pozostałe operatory += - operator plus równa, -= - operator minus równa, *= - operator razy równa, /= - operator dzielone równa, %= - operator modulo równa.

Operatory arytmetyczne i logiczne Operatory arytmetyczne i logiczne Przykład if [ $string1 = $string2 ] then command fi let z=5**3 # 5 * 5 * 5 echo z = $z # z = 125 a= expr 5 % 3 echo $a # 2 Przykład if [ $condition1 ] && [ $condition2 ] if [ $condition1 -a $condition2 ] if [ $condition1 ] [ $condition2 ] if [ $condition1 -o $condition2 ] let var += 5 # Results in var being incremented by 5. let var *= 4 # Rresults in var being multiplied by 4.

Zmienne systemowe i specjalne Zmienne systemowe i specjalne Zmienne systemowe, są to zmienne globalne widoczne w systemie. Każdy system operacyjny posiada własne zmienne systemowe (zmienne środowiskowe) są one wykorzystywane przez system oraz programy np. zmienna PATH, HOME, JAVA itp.. Aby wyświetlić w skrypcie powłoki zmienne systemowe należy wywołać polecenie export lub printenv. Przykład #!/bin/bash global= export echo $global export nowa= testowa zmienna globalna # Komentarze w skrypcie poprzedzamy znakiem # hash a

Zmienne systemowe i specjalne Zmienne systemowe i specjalne Zmienne specjalne, są to zmienne często wykorzystywane w skryptach powłoki (zazwyczaj są tylko do odczytu). Zmienne specjalne $0 - zmienna zawiera nazwę skryptu (pliku), $1..$9 - parametry zewnętrzne przekazywane do skryptu (od 1 do 9), $@ - zmienna zawiera wszystkie parametry przekazywane do skryptu, @? - zmienna przechowuje kod powrotu ostatnio wywołanego polecenia (0 oznacza poprawne wykonanie polecenia), $$ - PID procesu bieżącej powłoki.

Instrukcje warunkowe Instrukcje warunkowe Instrukcja warunkowa IF (wersja 1) if warunek then polecenie fi Instrukcja warunkowa IF (wersja 2) if warunek then polecenie 1 else polecenie 2 else polecenie 3 fi Przykład #!/bin/bash if [ -e /test.plik] then echo Plik test.plik jest w katalogu glownym fi # Komentarze w skrypcie poprzedzamy znakiem # hash a

Instrukcje warunkowe Instrukcje warunkowe Testowanie warunku możemy wykonać jawnie za pomocą polecenia test lub też wykorzystaniem nawiasów kwadratowych. Przykład test wyrazenie1 operator wyrazenie2 lub [ wyrazenie1 operator wyrazenie2 ]

Instrukcje warunkowe Instrukcje warunkowe Rodzaje operatorów wykorzystywane do testowania warunku -a plik istnieje, -b plik istnieje i jest blokowym plikiem specjalnym, -c plik istnieje i jest plikiem znakowym, -e plik istnieje, -h plik istnieje i jest linkiem symbolicznym, = sprawdza czy wyrażenia są równe,!= sprawdza czy wyrażenia są różne, -n wyrażenie ma długość większą niż 0, -d wyrażenie istnieje i jest katalogiem, -z wyrażenie ma zerową długość.

Instrukcje warunkowe Instrukcje warunkowe Rodzaje operatorów wykorzystywane do testowania warunku -r można czytać plik, -w można zapisywać do pliku, -x można plik wykonać, -f plik istnieje i jest plikiem zwykłym, -p plik jest łączem nazwanym, -N plik istnieje i był zmieniany od czasu jego ostatniego odczytu, plik1 -nt plik2 plik1 jest nowszy od pliku2, plik1 -ot plik2 plik1 jest starszy od pliku2, -lt mniejsze niż, -gt większe niż, -ge większe lub równe, -le mniejsze lub równe.

Instrukcje warunkowe Instrukcje warunkowe Instrukcja warunkowa CASE case $zmienna in wzorzec1 ) polecenie1 (break/continue/exit);; wzorzec2 ) polecenie2 (break/continue/exit);; *) polecenie (break/conitnue/exit);;... esac Przykład #!/bin/bash case $para in 1 ) echo Wybor 1 ; break ;; 2 ) echo Wybor 2 ; break ;; q ) echo Wyjscie ; exit ;; *) continue ;; esac

Instrukcje pętli Instrukcje pętli Instrukcja warunkowa WHILE (wersja 1) while warunek do polecenie... done Instrukcja warunkowa WHILE (wersja 2) while [1] polecenie done Przykład #!/bin/bash i=1 while [$i -le 100] do echo Tekst wyswietlony $i raz y i=$[i+1] if [i -le 20] then break fi done

Instrukcje pętli Instrukcje pętli Uwaga W pętli może występować instrukcja continue służąca do ponownego wykonania pętli lub instrukcja break, służąca do natychmiastowego przerwania wykonywania instrukcji pętli.

Instrukcje pętli Instrukcje pętli Instrukcja warunkowa FOR (wersja 1) for((zmienna; warunek; inkrementacja)) do polecenie... done Instrukcja warunkowa FOR (wersja 2) for zmienna in arg1 arg2 arg3... do polecenie done Przykład #!/bin/bash for((i=0; i =5; i++ )) echo Tekst wyswietlony $i raz y done for a in 1 2 3 4 5 echo Tekst wyswietlony $a raz y done

Instrukcje pętli Instrukcje pętli Instrukcja warunkowa UNTIL until warunek do polecenie... done Przykład #!/bin/bash i=10 until [$i -ge 5] do echo liczba i: $i i=$[i-1] done

Instrukcje pętli Instrukcje pętli Instrukcja warunkowa SELECT select zmienna in lista do polecenie... done Przykład #!/bin/bash select y in X Y Z do case $y in X ) echo Wybrałeś X ;; Y ) echo Wybrałeś Y ;; Z ) echo Wybrałeś Z ;; *) echo Nic nie wybrałeś esac break done

Wyświetlanie danych Wyświetlanie danych W celu wyświetlanie danych na ekranie monitora (standardowe wyjście) wykorzystuje się polecenie echo. Przykład echo -n Tekst do wyświetlenia echo -e \t\t Tekst do wyświetlenia i dodatkowo zmienna $a \n\n

Wyświetlanie danych Wyświetlanie danych Rodzaje parametrów -n nie wysyła znaku końca linii (brak przejścia do nowej linii), -e włącza interpretację parametrów wewnątrz tekstu. Rodzaje parametrów wewnątrz tekstu \n - przejście do nowej linii, \a alert (dzwonek) \b - backspace, \a alert (dzwonek) \c - pomija znak końca nowej linii, \f - escape, \r - znak nowej linii, \t tabulacja, \\ - backslash.

Wczytywanie danych Wczytywanie danych Przykład W celu wczytania danych do zmiennej wykorzystuje się polecenie read. read [operator][zmienna] read a b echo $a echo $b read -e echo $REPLY Rodzaje parametrów -a pokaż znak zachęty bez kończącego znaku nowej linii -p wczytywanie danych do tablicy, -e jeśli nie podano żadnej zmiennej dane trafią do zmiennej systemowej $REPLY.

Tablice Tablice Deklaracja tablicy zmienna=(wartość1 wartość2 wartość3...) Przykład #!/bin/bash tablica=(poniedzialek Wtorek Sroda Czwartek piątek Sobota Niedziela) echo ${tablica[0]} echo ${tablica[1]} echo ${tablica[2]} echo ${tablica[4]} echo ${tablica[5]} echo ${tablica[6]} echo ${tablica[*]} echo ${#tablica[0]} echo ${#tablica[@]}

Tablice Tablice Uwaga echo ${tablica[*]} - wyświetlanie wszystkich elementów tablicy, echo ${#tablica[0]} wyświetlanie długości znaków podanego elementu np. 12 dla tablica[0], echo ${#tablica[@]} - wyświetlanie liczby wszystkich elementów w tablicy np. 7 dla tablicy.

Tablice Tablice Przykład #!/bin/bash tablica=(poniedzialek Wtorek Sroda Czwartek piątek Sobota Niedziela) unset tablica[6] echo ${tablica[*]} tablica[6]=tekst tablica[7]=tekst2 echo ${tablica[*]} unset tablica[*] echo ${tablica[@]}

Funkcje Funkcje Deklaracja funkcji function nazwa funkcji() { polecenie... return $zmienna } Przykład 1 #!/bin/bash function test() { echo test } test Przykład 2 #!/bin/bash function dodaj() { wynik= expr $1 + $2 return $wynik } dodaj 20 30

Przekierowania i strumienie Przekierowania i strumienie Operatory przekierowania i strumieni > - operator przekierowania do, < - operator przekierowania z, >> - operator dopisania do, << - operator dopisania z, - operator strumienia. Przykład 1 pwd > plik.txt # zapisanie ścieżki do pliku more < plik.txt # wyświetlenie pliku na ekranie cat plik1.txt > plik2.txt # zpisanie pliku1.txt do pliku2.txt ls *.txt >> plik3.txt # dopisanie do pliku3.txt