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

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

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

PODSTAWY INFORMATYKI

Pracownia Komputerowa wykład III

Systemy operacyjne 11

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

Technologie Informacyjne - Linux 3

1 Przygotował: mgr inż. Maciej Lasota

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

System operacyjny Linux

Skrypty powłoki w systemie Linux

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

Wprowadzenie do programowania w powłoce

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

1 Podstawy c++ w pigułce.

Programowanie w BASH u Skrypt do ćwiczeń

Środowisko programisty Zestaw 7

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

Laboratorium Ubuntu Linux.

Powłoka (shell) Powłoka ksh

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

Programowanie skryptów powłoki

Powłoka interpreter poleceń systemu UNIX

Interpreter poleceń oraz zmienne środowiskowe

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

Pracownia Komputerowa wykład III

Powłoka bash. Kurs systemu Unix 1

Podstawy Programowania C++

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

1 Podstawy c++ w pigułce.

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

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

Ćwiczenie 1. Wprowadzenie do programu Octave

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Programowanie w języku Python. Grażyna Koba

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

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

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Ćwiczenie: JavaScript Cookies (3x45 minut)

Znaki globalne w Linuxie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

PODSTAWY INFORMATYKI

Programowanie w Turbo Pascal

Wstęp do Informatyki dla bioinformatyków

Dialog czyli okna dialogowe

Ćwiczenie nr 14: System Linux

Konstrukcje warunkowe Pętle

Ćwiczenie 1. Wprowadzenie do programu Octave

Podstawy programowania w Bash'u

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

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ć

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Pętla for. Wynik działania programu:

Umieszczanie kodu. kod skryptu

Formy dialogowe w środowisku Gnome

Tworzenie skryptu: Skrypty powłoki

Podstawy JavaScript ćwiczenia

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.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

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

Bloki anonimowe w PL/SQL

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

Smarty PHP. Leksykon kieszonkowy

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

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

Pracownia Komputerowa wyk ad III

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

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

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Kurs pisania skryptów w powłoce BASH

Zapis algorytmów: schematy blokowe i pseudokod 1

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

- wszystkie elementy - wszystkie elementy

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

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

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

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Wprowadzenie do Scilab: podstawy języka Scilab

Programowanie w języku C++ Grażyna Koba

JAVA?? to proste!! Autor: wojtekb111111

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pascal - wprowadzenie

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

Trochę o plikach wsadowych (Windows)

Algorytmy i struktury danych

Zmienne powłoki bash

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

Przetwarzanie sygnałów

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

Liczby losowe i pętla while w języku Python

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Pierwsze spotkanie kóªka linuksowego

Transkrypt:

Skrypty powłoki dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1

Plan na dziś Tworzenie i uruchamianie skryptów. Zmienne. Instrukcje warunkowe. Pętle. Wybrane polecenia. Funkcje. 2

Dla tych co lubią poczytać: M. Lach, Bash. Praktyczne skrypty, Helion 2015. A. Robbins, Bash. Leksykon kieszonkowy. Przewodnik dla użytkowników i administratorów systemów, Helion, 2017. C. Albing, JP Vossen, C. Newham, Bash. Receptury, Helion 2012. D. Taylor, B. Perry, Genialne skrypty powłoki, Helion 2017. W. E. Shotts Jr., Linux. Wprowadzenie do wiersza poleceń, Helion 2015. S. Lakshman, Skrypty powłoki systemu Linux. Receptury, Helion 2012. Ł. Sosna, Linux. Komendy i polecenia, Helion 2014. M. G. Sobell, Linux. Programowanie w powłoce, Helion 2013. 3

Skrypty powłoki Start powłoki (dla powłoki logowania bash) najpierw wykonuje polecenia zawarte w pliku /etc/profile, następnie powłoka poszukuje plików ~/.bash_profile, ~/.bash_login lub ~/.profile, w takiej właśnie kolejności i wykonuje polecenia z pierwszego napotkanego pliku, Kiedy rozpoczynasz proces wylogowania, powłoka bash wykonuje polecenia zapisane w pliku ~/.bash_logout. Start powłoki (dla powłoki interaktywnej bash) Interaktywne powłoki typu non-login po uruchomieniu wykonują polecenia zapisane w pliku ~/.bashrc. W wielu systemach Linux skrypt ten uruchamia plik /etc/bashrc. 4

Tworzenie i uruchamianie skryptów powłoki Skrypt powłoki to plik testowy o dowolnej nazwie i ustawionym bicie wykonywalności. Skrypt może zawierć dowolne polecenia powłoki i może być uruchamiany na jeden z dwóch sposobów:./skrypt bash x skrypt. Pierwsza linia skryptu zawiera ścieżkę do interpretera w postaci: #!/bin/bash 5

Prawa dostępu do plików właściciel grupa b rw- rw- --- 1 root disk uprawnienia użytkownika uprawnienia pozostałych uprawnienia grupy Plik Katalog r Odczyt zawartości pliku Odczyt listy plików i podkatalogów w Modyfikacja zawartości plików Modyfikacja zawartości katalogów x Wykonywanie pliku Możliwość uczynienia katalogiem bieżącym 6

Podstawowe polecenia: Polecenia związane z zarządzaniem plikami i katalogami: chmod - polecenie służące do administrowania uprawnieniami, chown - zmiana właściciela pliku lub katalogu. 7

Zmienne programowe: Powłoka pozwala użytkownikowi na definiowanie zmiennych. Można deklarować i inicjować zmienne poprzez przypisywanie im wartości: zmienna= wartość Aby usunąć wybraną zmienną, powinieneś użyć polecenia unset: unset zmienna Zmienne powłoki są lokalne dla danego procesu. Zmienne środowiskowe są globalne i zostają umieszczone w środowisku przy użyciu wbudowanego polecenia export: zm1=war1 export zm1 Pod zmienną możemy podstawić wynik jakiegoś polecenia poprzez: użycie odwrotnych apostrofów: `polecenie` rozwijania zawartości nawiasów: $(polecenie) 8

Zmienne specjalne: Prywatne zmienne powłoki, udostępniane użytkownikowi tylko do odczytu np.: $0 - nazwa bieżącego skryptu lub powłoki, $1..$9 - wartości parametrów przekazywanych do skryptu, $@ - wartości wszystkie parametró przekzywanych do skryptu. $? - kod powrotu ostanio wykonywanego polecenia, $$ - PID procesu bieżącej powłoki. 9

Zmienna Wartość BASH_ENV Ścieżka do pliku startowego dla powłok nieinteraktywnych. CDPATH Ścieżka wyszukiwania dla polecenia cd. COLUMNS Szerokość ekranu wykorzystywana przez polecenie select. HISTFILE Ścieżka do pliku przechowującego historię poleceń (domyślnie ~/.bash_history). HISTFILESIZE Maksymalna liczba pozycji zapisywanych w pliku HISTFILE (domyślnie 1000-2000). HISTSIZE Maksymalna liczba poleceń zapisywana w historii poleceń (domyślnie 1000). HOME Ścieżka do katalogu domowego użytkownika wykorzystywana jako domyślny argument polecenia cd podczas rozwijania ścieżek zawierających znak tyldy (~). IFS Wewnętrzny separator pól (ang. Internal Field Separator), używany do dzielenia słów. INPUTRC Ścieżka do pliku startowego biblioteki READLINE (domyślnie ~/.inputrc). LANG Zmienna przechowująca ustawienia językowe dla elementów, które nie zostały ustawione przez odpowiednie zmienne LC_*. Grupa zmiennych przechowujących ustawienia językowe dla różnych elementów, w skład grupy wchodzą LC_ takie zmienne jak LC_COLLATE, LC_CTYPE, LC_MESSAGES czy LC_NUMERIC aby wyświetlić pełną listę ustawień, powinieneś użyć polecenia locale. LINES Wysokość ekranu wykorzystywana przez polecenie select. MAIL Ścieżka do pliku przechowującego skrzynkę pocztową użytkownika. MAILCHECK Rozmiar interwału czasowego, z jakim powłoka bash sprawdza, czy użytkownik otrzymał nową wiadomość (domyślnie 60 sekund). MAILPATH Lista oddzielonych od siebie dwukropkami ścieżek do plików, które powłoka bash sprawdza pod kątem nowych wiadomości. OLDPWD Ścieżka do poprzedniego katalogu roboczego. PATH Lista oddzielonych od siebie dwukropkami ścieżek do katalogów, w których powłoka bash poszukuje poleceń. PROMPT_COMMAN D Polecenie, które powłoka bash wykonuje przed wyświetleniem podstawowego znaku zachęty. PS1 Zmienna przechowująca podstawowy znak zachęty. PS2 Zmienna przechowująca wtórny znak zachęty. PS3 Zmienna przechowująca znak zachęty dla menu polecenia select. PS4 Zmienna przechowująca znak zachęty dla trybu śledzenia wykonywania poleceń. PWD Ścieżka do bieżącego katalogu roboczego. REPLY Przechowuje wiersz ze standardowego wejścia, odczytany poleceniem read wykorzystywana przez polecenie select. 10

Zmienne tablicowe: BASH pozwala na stosowanie zmiennych tablicowych jednowymiarowych. Kolejne wartości zmiennej tablicowej indexowane są przy pomocy liczb całkowitych, zaczynając od 0. zmienna=(wartość1 wartość2 wartość3 wartośćn) Do elementów tablicy odwołuje się za pomocą wskaźników. Wskaźnikiami są indexy elementów tablicy, począwszy od 0 do n oraz @, *. Gdy odwołując się do zmiennej nie poda się wskaźnika: $ {nazwa_zmiennej} to nastąpi odwołanie do elementu tablicy o indexie 0.Jeśli wskaźnikiem będą: @ lub * to zinterpretowane zostaną jako wszytskie elementy tablicy. Można też uzyskać długość (liczba znaków) danego elementu tablicy: ${#nazwa_zmiennej[wskaźnik]} Możliwe jest dodawanie i usuwanie, z zastosowaniem komendy unset, elementów tablicy. 11

Obliczanie wyrażeń arytmetycznych: Do przeprowadzenia obliczeń można skorzystać z polecenia let. let wynik=liczba1*liczba2 obliczenia dokonywane są na liczbach całkowitych. Można skożystać także bezpośrednio z następujacej składni: $((wyrażenie)) lub $[wyrażenie] 12

Instrukcja warunkowa if: Sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub polecenia znajdujące się po słowie kluczowym then. Instrukcja kończy się słowem fi. if warunek then fi polecenie W sytuacji gdy test warunku zakończy się wynikiem negatywnym można wykonać inny zestaw poleceń, które umiesczamy po słowie kluczowym else: if warunek then else fi polecenie1 polecenie2 13

Instrukcja warunkowa if: Można też testować dowolną ilość warunków, jeśli pierwszy warunek nie będzie prawdziwy, sprawdzony zostanie następny, kolejne testy warunków umieszczamy po słowie kluczowym elif: if warunek then polecenie1 elif warunek then fi polecenie2 14

Warunki: Do sprawdzania warunków służy polecenie test: test wyrażenie1 operator wyrażenie2 którą można zapisać w postaci nawiasów kwadratowych: [ wyrażenie1 operator wyrażenie2 ] Między nawiasami a treścią warunku muszą być spacje. Polecnie test zwraca wartość 0 (true) jeśli warunek jest spełniony i wartość 1 (false) jeśli warunek nie jest spełniony. Wartość warunku jest umieszczana w zmiennej specjalnej $?. 15

Operatory polecenia test: -a operator and -o operator or -b plik istnieje i jest blokowym plikiem specjalnym - 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ść -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 16

Instrukcja case: Pozwala na dokonanie wyboru spośród kilku wzorców. Najpierw sprawdzana jest wartość zmiennej po słowie kluczowym case i porównywana ze wszystkimi wariantami po kolei. Oczywiście musi być taka sama jak wzorzec do którego chcemy się odwołać. Jesli dopasowanie zakończy się sukcesem wykonane zostanie polecenie lub polecenia przypisane do danego wzorca. W przeciwnym wypadku użyte zostanie polecenie domyślne oznaczone symbolem gwiazdki case zmienna in esac "wzorzec1") polecenie1 ;; "wzorzec2") polecenie2 ;; "wzorzec3") polecenie3 ;; *) polecenie_domyślne Przy zastosowaniu ;; po przypasowaniu do warunku i wykonaniu instrukcji wychodzi z konstrukcji case. Przy zastosowaniu ;& wykonuje instrukcje także kolejnego warunku. 17

Pętla for: Wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy. for zmienna in lista do polecenie done Pętla for jest bardzo przydatna w sytuacjach, gdy chcemy wykonać jakąś operację na wszystkich plikach w danym katalogu. 18

Pętla while: Najpierw sprawdzany jest warunek, jeśli jest on prawdziwy to wykonywane jest polecenie lub lista poleceń zawartych wewnątrz pętli, gdy warunek stanie się fałszywy pętla zostanie zakończona. while warunek do polecenie done Pętla until: Sprawdza czy warunek jest prawdziwy, gdy jest fałszywy wykonywane jest polecenie lub lista poleceń zawartych wewnątrz pętli, miedzy słowami kluczowymi do a done. Pętla until kończy swoje działanie w momencie gdy warunek stanie się prawdziwy until warunek do polecenie done 19

Polecenie read: Czyta ze standardowego wejścia pojedynczy wiersz umożliwiając przypisanie kilku wartości kilku zmiennym. Wybrane opcje: -p Pokaże znak zachęty bez kończącego znaku nowej linii. -a Kolejne wartości przypisywane są do kolejnych indeksów zmiennej tablicowej. -e Jeśli nie podano żadnej nazwy zmienej, wiersz trafia do $REPLY. -t timeout czas wygaśnięcia w sekundach -s nie wyświetlaj znaków wpisanych przez użytkownika. 20

Pętla select: Generuje z listy słów proste ponumerowane menu, każdej pozycji odpowiada kolejna liczba od 1 wzwyż. Poniżej menu znajduje się znak zachęty PS3, gdzie wprowadzana jest wybrana pozycja z menu. Jeśli nic nie zostanie wybrane (wciśnięty ENTER), menu będzie wyświetlone ponownie. Wartość wyboru zachowywana jest w zmiennej REPLY. Pętla działa dotąd dopóki nie wykonane zostaje polecenie break lub return. select zmienna in lista do polecenie done 21

Polecenie dialog: Tworzy okna w skryptach shellowych za pomocą, których można tworzyć listy wyboru, zadawać pytania, pobierać dane od użytkownika czy informować go o przebiegu jakichś operacji, które skrypt w danej chwili wykonuje. dialog opcje okno_dialogowe Wybrane rodzaje okien dialogowych: yesno, menu, inputbox, textbox, infobox, checklist, radiolist, gauge Opcje: --clear czyści ekran --createrc plik Możemy użyć tej opcji do wygenerowania przykładowego pliku konfiguracyjnego. --separate-output Tą opcję stosuje się przy widgetach checklist, drukuje wyjście w osobnych liniach, co umożliwia przetwarzanie uzyskanych danych przez inny program. --title Tytuł, na górze okna dialogowego. --backtitle Podtytuł, w tle okna dialogowego, znajduje się w lewym górnym rogu ekranu. 22

Polecenie alias: alias to komenda, która umożliwia zastąpienia wielu słów jednym słowem. Poleceniem alias często posługuje się w celu skrócenia komend systemowych lub dodania parametrów do istniejących komend. Zdefiniowane aliasy obowiązują w sesji powłoki. Jeżeli są wpisane do plików konfiguracyjnych powłok (np. ~/.bashrc, /etc/bashrc), to są też dostępne przy każdym uruchomieniu powłoki. alias [nazwa[=wartość]] alias alias -p # Bez parametrów wydaje wszystkie aliasy # Tak samo jak powyżej alias kopia # Wyświetla komendę, która zastąpiona jest słowem kopia Aliasy usuwa komenda unalias: 23

Funkcje: Stosuje się je gdy w skrypcie powtarza się grupa poleceń. Do danej funkcji odwołujemy się podając jej nazwę, a wykonane zostanie wszystko co jest wpisane między nawiasy { }. function nazwa_funkcji { polecenie1 polecenie2 polecenie3 } lub: function nazwa_funkcji() { polecenie1 polecenie2 polecenie3 } 24

Funkcje: Funkcje moga się znajdować w innym pliku, których dołączenie odbywa się przez podanie nazwy pliku poprzedzonej kropk ą i spacją:. ~/naszplik_z_funkcjami nazwa_funkcji Przekazanie parametrów do funkcji następuje dokładnie tak samo jak do poleceń: nazwa_funkcji parametr_1 parametr_2 Zmienna specjalna $0 przechowujaca nazwę skryptu, a nie nazwę funkcji. 25

Dziękuję za uwagę Zapraszam za tydzień :) 26