11. Wstęp do skryptów w Linuxie



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

Systemy operacyjne 10

1 Przygotował: mgr inż. Maciej Lasota

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

PODSTAWY INFORMATYKI

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

Skrypty powłoki w systemie Linux

Powłoka bash. Kurs systemu Unix 1

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

System operacyjny Linux

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Programowanie w BASH u Skrypt do ćwiczeń

Wprowadzenie do programowania w powłoce

Tworzenie skryptu: Skrypty powłoki

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

Pracownia Komputerowa wykład III

Pracownia Komputerowa wykład III

Interpreter poleceń oraz zmienne środowiskowe

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

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

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 3

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Powłoka (shell) Powłoka ksh

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

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Systemy operacyjne 11

Wstęp do Informatyki dla bioinformatyków

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

Technologie Informacyjne - Linux 2

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

Przekierowanie wejścia wyjścia:

Wstęp do systemu Linux

Programowanie w języku Python. Grażyna Koba

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Podstawy programowania w Bash'u

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

Wstęp do systemu Linux

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

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

Trochę o plikach wsadowych (Windows)

Kurs pisania skryptów w powłoce BASH

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

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Powłoka interpreter poleceń systemu UNIX

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

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

Pracownia komputerowa. Dariusz wardecki, wyk II

Podstawy JavaScript ćwiczenia

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

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Strona1. Linux. Skrypty powłoki

Ćwiczenie nr 14: System Linux

Systemy operacyjne Programowanie w języku powłoki sh

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

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

- wszystkie elementy - wszystkie elementy

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Środowisko programisty Zestaw 7

Podstawy programowania skryptów Sh

Znaki globalne w Linuxie

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.

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

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

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

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

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

5. Linux - powłoka Kilka słów o powłoce Zmienne systemowe

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

Powtórka algorytmów. Wprowadzenie do języka Java.

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

Pracownia Komputerowa wyk ad III

Wprowadzenie do Scilab: podstawy języka Scilab

#Tu jest komentarz. fi case. until while { } time [ ] for do. function done. if elif. in else. select esac. then

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

host name: protokół SSH System plików - wprowadzenie Ścieżki dostępu

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

Wprowadzenie do programowania shella (bash)

1. Wypisywanie danych

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

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

Ćwiczenie 1. Podstawowe wiadomości

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

Systemy operacyjne. Laboratorium 1. Podstawy oraz powłoka BASH

Umieszczanie kodu. kod skryptu

Technologie Informacyjne - Linux 1

Podstawy użytkowania Linux a

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

Podstawy Informatyki i algorytmizacji

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

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

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

#!/bin/sh. if [ "$#"!= "1" ]; then echo "Skrypt uruchamiany z parametrem (sciezka do katalogu)" exit 1 fi

Wstęp do systemów wielozadaniowych laboratorium 14 Środowisko i aliasy

Laboratorium Ubuntu Linux.

PODSTAWOWE INFORMACJE NA TEMAT KONSOLI W SYSTEMIE WINDOWS

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Transkrypt:

11. Wstęp do skryptów w Linuxie 11.1. Skrypt w systemie Linux Skrypty pozwalają na grupowanie poleceń w jednym pliku i wykonywanie ich za pomocą jednego wspólnego polecenia. Dzięki temu możemy wykonywać różnego rodzaju złożone funkcje, za pomocą prostej składni, bez konieczności mozolnego wprowadzania wielu poleceń. Dzięki skryptom wszystkie polecenia możemy zapisać w jednym pliku, który następnie wymagał będzie uruchomienia. Skrypt jest to zwykły plik, zawierający polecenia systemowe oraz polecenia sterujące jego wykonaniem, które są po kolei przetwarzane i wykonywane przez interpreter poleceń (np. /bin/bash), który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora. Przykładowy skrypt przedstawiony został poniżej. Skrypt ten został zapisany w pliku przyklad1.zgodnie ze standardem POSIX taki plik rozpoczyna się od:, czyli ścieżki do interpretera (w zależności od tego jaki chcemy używać), którą należy umieścić w pierwszej linii. Aby możliwe było uruchomienie skryptu, plik w którym jest on zapisany musi być wykonywalny (atrybut execute). cat przyklad1 echo "To jest prosty skrypt" echo " zawierajacy polecenie echo" echo " oraz trzy inne proste komendy" echo ps echo who echo ls Po uruchomieniu powyższego pliku otrzymamy:./przyklad1 To jest prosty skrypt zawierajacy polecenie echo oraz trzy inne proste komendy PID TTY TIME COMMAND 10443 rt02120 0:01 bash 10427 rt02120 0:04 ksh user rt021e0 Sep 7 13:36 root rt021b0 Sep 7 14:03 memo class_notes 11.2. Mechanizm śledzenia skryptów w czasie wykonania System Linux wyposażony jest w mechanizm śledzenia skryptu w czasie wykonania. Funkcja ta jest szczególnie przydatna w czasie procesu debbugingu. Aby skorzystać z tego mechanizmu należy skorzystać z polecenia bash z opcją -x, która włącza mechanizm śledzenia. Spróbujmy na przykładzie 1

przedstawionego wcześniej skryptu (plik przyklad1) zobaczyć jak ten mechanizm funkcjonuje. bash -x przyklad1 + echo 'To jest prosty skrypt' To jest prosty skrypt + echo ' zawierajacy polecenie echo' zawierajacy polecenie echo + echo ' oraz trzy inne proste komendy' oraz trzy proste komendy + echo + ps PID TTY TIME COMMAND 10443 rt02120 0:01 bash 10427 rt02120 0:04 ksh + echo + who user rt021e0 Sep 7 13:36 root rt021b0 Sep 7 14:03 + echo + ls memo class_notes Komendy odczytane ze skryptu poprzedzone są symbolem plus (+), natomiast wynik działania takiej komendy wyświetlany jest w następnej linii lub liniach. Dzięki temu możemy w prosty sposób prześledzić działanie napisanego przez nas skryptu. 11.3. Pierwszy skrypt Spróbujmy stworzyć nasz pierwszy skrypt wyświetlający na ekranie napis. W tym celu należy stworzyć odpowiedni plik, w którym umieścimy kod. Następnie przy pomocy dowolnego edytora dostępnego w systemie Linux wprowadzimy odpowiednie polecenia: #Przykladowy komentarz echo "Hello world" Znak # (hash) oznacza komentarz. A więc wszystko, co znajduje się za nim w tej samej linii, jest pomijane przez interpreter. Polecenie echo "Hello world" wydrukuje na standardowym wyjściu (domyślnie ekran) napis: Hello world. Po nadaniu naszemu skryptowi uprawnienia execute skrypt ten można uruchomić. Jeśli katalog bieżący, w którym znajduje się skrypt nie jest dopisany do zmiennej PATH i skrypt został zapisany w pliku o nazwie przykładowy_skrypt to można go uruchomić w następujący sposób:./przykładowy_skrypt 11.4. Polecenie echo Polecenie echo umożliwia wydrukowanie na standardowym wyjściu napisu podanego jako parametr. 2

Składnia: echo paramery tekst_do_wyświetlenia Przykład: echo -ne "Napis1" echo "Napis2" Parametry: -n nie jest wysyłany znak nowej linii -e włącza interpretacje znaków specjalnych: \a czyli alert, \b czyli backspace \c pomija znak kończący nowej linii \f wysuw strony (form feed) \n znak nowej linii (newline) \r powrót karetki \t tabulacja poprzeczna \v tabulacja pionowa \\ backslash \nnn znak, którego kod ASCII ma wartość ósemkowo \xnnn znak, którego kod ASCII ma wartość szesnastkowo 11.5. Polecenie read Polecenie read umożliwia odczytanie ze standardowego wejścia pojedynczego wiersza. Składnia: read parametry nazwa_zmiennej Spróbujmy użyć polecenia read w skrypcie. Utwórzmy skrypt o nazwie odczyt. Kod tego skryptu przedstawiony jest poniżej: echo -ne "Wprowadz tekst: \a" read wpis echo $wpis Po uruchomieniu otrzymamy następujący rezultat:./odczyt Wprowadz tekst: Jakis tekst Jakis tekst Wprowadzony przez użytkownika tekst zostanie zapisany w zmiennej wpis (polecenie: read wpis). Zmienna ta zostanie następnie wypisana na ekran przy użyciu polecenia echo $wpis. Polecenie read pozwala również na przypisanie kilku wartości kilku zmiennym. Przedstawia to skrypt odczyt_wielu zaprezentowany poniżej: 3

echo "Wpisz trzy wyrazy:" read a b c echo $a $b $c echo "Wartosc zmiennej a to: $a" echo "Wartosc zmiennej b to: $b" echo "Wartosc zmiennej c to: $c" Spróbujmy przy użyciu mechanizmu śledzenia, zobaczyć jak ten skrypt działa: bash -x odczyt_wielu + echo 'Wpisz trzy wyrazy:' Wpisz trzy wyrazy: + read a b c 56 lala trala lalas + echo 56 lala trala lalas 56 lala trala lalas + echo 'Wartosc zmiennej a to: 56' Wartosc zmiennej a to: 56 + echo 'Wartosc zmiennej b to: lala' Wartosc zmiennej b to: lala + echo 'Wartosc zmiennej c to: trala lalas' Wartosc zmiennej c to: trala lalas W skrypcie tym widać, iż spacje pomiędzy wyrazami są separatorami dla wartości przypisanych do zmiennych a, b oraz c. Do zmiennej a została przypisana wartość 56, do zmiennej b została przypisana wartości lala, natomiast dla zmiennej c pozostały fragment wprowadzonej przez użytkownika linii (czyli trala lalas ). Wybrane parametry polecenie read: -p - pokaże znak zachęty bez kończącego znaku nowej linii: read -p "Pisz:" odp echo $odp -a - kolejne wartości przypisywane są do kolejnych indeksów zmiennej tablicowej echo "Podaj elementy zmiennej tablicowej:" read -a tablica echo ${tablica[*]} -e - jeśli nie podano żadnej nazwy zmiennej, wczytany wiersz trafia do $REPLY echo "Wpisz cos:" read -e echo $REPLY 4

11.6. Zmienne w skryptach W językach skryptowych wyróżniamy kilka rodzajów zmiennych. Są to zmienne programowe, zmienne specjalne, zmienne środowiskowe oraz zmienne tablicowe. Zmienne programowe są to zmienne, które zostały zdefiniowane samodzielnie przez użytkownika. W skrypcie definiujemy je pisząc: nazwa_zmiennej= wartość, np. x= napis, a odwołujemy się do nich poprzez polecenie: $nazwa_zmiennej Do wyzerowania zmiennej używamy polecenia: nazwa_zmiennej= Należy pamiętać, że nie może być spacji po obu stronach znaku =, dlatego też linia x = "napis" jest błędna. Do zmiennej można również podstawić dowolne polecenie systemowe. Polecenie to musi zostać umieszczone w tzw. odwrotnych apostrofach (`). W czasie wykonywania takiego skryptu, interpreter zastąpi komendę, która się tam znajduje wynikiem jej działania. Przedstawia to poniższy przykład: cat listuj dir=`pwd` echo "Aktualnie korzystasz z katalogu " $dir " na Twoim dysku" Efekt działanie powyższego przykładu przedstawia poniższy wydruk:./listuj Aktualnie korzystasz z katalogu /home/user/skrypt na Twoim dysku Przykład ten pokazał dwa istotne elementy. Pierwszy z nich to mechanizm podstawiania poleceń. Drugi element, na który warto zwrócić uwagę to sklejanie łańcuchów znaków, z którego skorzystaliśmy w tym przykładzie. Istnieje jeszcze jeden sposób podstawiania poleceń. Zrealizowane to może zostać przy użyciu mechanizmu rozwijania zawartości nawiasów: $(polecenie) Działanie tego mechanizmu wygląda podobnie, jak poprzednio, co pokazuje poniższy przykład: cat listuj2 dir=$(pwd) echo "Aktualnie korzystasz z katalogu $dir na Twoim dysku" Zmienne specjalne są to najbardziej prywatne zmienne powłoki, które są udostępniane użytkownikowi tylko do odczytu (z pewnymi wyjątkami). Poniżej przedstawiono kilka przykładów: $0 - nazwa bieżącego skryptu lub powłoki 5

Przykład: echo "$0" Skrypt ten wyświetli nazwę naszego skryptu. $1...$9 - parametry przekazywane do skryptu (użytkownik może modyfikować ten rodzaj zmiennych specjalnych) Przykład: echo "$1 $2 $3" Wywołanie tego skrypt z parametrami spowoduje, że zostaną one przypisane zmiennym: od $1 do $9 kolejno $@ - pokaże wszystkie parametry, które zostały przekazywane do skryptu (możliwość modyfikacji), równoważne $1 $2 $3..., jeśli nie podane są żadne parametry $@ interpretowana jest jako pusty. Przykład: echo "Skrypt uruchomiono z parametrami: $@" $? - kod powrotu ostatnio wykonywanego polecenia $$ - PID procesu bieżącej powłoki $# - liczba argumentów skryptu 11.7. Słowa zastrzeżone Słowa zastrzeżone mają dla powłoki specjalne znaczenie i nie mogą być wykorzystywane jako nazwy zmiennych, funkcji oraz plików zawierających skrypty. Poniżej przedstawiona jest lista tych słów:! case do done elif else esac fi for function if in select then until 6

while { } time [ ] test 11.8. Cytaty symbole Znaki cytowania pozwalają na wyłączenie mechanizmu interpretacji znaków specjalnych przez powłokę. Wyróżniamy następujące znaki cytowania: cudzysłów (ang. double quote) " " - między cudzysłowami umieszcza się tekst, wartości zmiennych zawierające spacje. Cudzysłowy zachowują znaczenie specjalne trzech znaków: $ wskazuje na nazwę zmiennej, umożliwiając podstawienie jej wartości \ znak maskujący ` ` odwrotny apostrof, umożliwia zacytowanie polecenia apostrof (ang. single quote) ' ' - elementy ujęte w symbol apostrofu traktowane są jak łańcuch tekstowy. Apostrof wyłącza interpretowanie wszystkich znaków specjalnych. x=2 echo "Wartosc zmiennej x to $x" echo -ne "Dzwonek\a" echo "Polecenie date pokaze:`date`" echo'$user' #nie wypisze Twojego loginu odwrotny apostrof (ang. backquote) ` ` Pozwala na zacytowanie polecenia (przydatne, gdy chcemy podstawić pod zmienną wynik działania jakiegoś polecenia) #~!/bin/bash x=`ls -la $PWD` echo $x znak maskujący (ang. backslash) \ Symbol ten jest przydatny, gdy chcemy na ekranie wyświetlić się napis jakiś symbol dla systemu zastrzeżony np. napis $HOME. Obrazuje to poniższy przykład: echo "$HOME" echo \$HOME Pierwsza linia wypisze na ekranie katalog domowy użytkownika, który uruchomił ten skrypt, w drugiej linii dzięki użyciu \ została wyłączona interpretacje przez powłokę zmiennej $HOME i na ekranie zostanie wyświetlony napis $HOME. 7

Zadania: 1. Napisać skrypt, który wypisze na ekran Twoje imię i nazwisko, zawartość Twojego katalogu domowego oraz informacje o systemie operacyjnym. 2. Napisz skrypt, który będzie Cię pytał o datę Twoich urodzin a następnie wypisze na ekran: "Kochany użytkowniku urodziłeś się..." - w miejscu kropek ma być wyprowadzona podana przez Ciebie data. 3. To samo wykonaj wykorzystując zmienne specjalne. 4. Napisz skrypt, który będzie odwracał kolejność wprowadzonych zmiennych specjalnych i wypisywał je na ekran (maksymalna ilość zmiennych: 9), po czym będzie wypisywał ilość zmiennych. 5. Napisz skrypt, który będzie przyjmował w postaci zmiennych specjalnych nazwę użytkownika oraz pewną ścieżkę, następnie będzie wypisywał PID bieżącej powłoki, wszystkie procesy podanego użytkownika, informacje o nim (do jakich grup należy, czas ostatniego logowania,...) oraz listował podaną ścieżkę. 6. Napisz skrypt, który wykona polecenie pwd (tylko raz), a później wypisze jego wynik na ekran trzy razy. 7. Napisz skrypt, który będzie Cię prosił o wpisanie dowolnego zdania. Następnie będzie Cię pytał o wyraz w zdaniu, który ma wyświetlić i go wyświetlał 8. Zdebugguj działanie poprzedniego skryptu. 9. Czym się różni cytowanie w cudzysłowach od cytowania w apostrofach? 8