Bash Bourne Again SHell.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Funkcje w PHP ABK.
Język C/C++ Funkcje.
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Wzorce.
Programowanie w języku Visual Basic
Języki programowania C++
Prezentacja o MS-DOS’ie
Wspólne skoroszytów Wspólne użytkowanie skoroszytów Arkusze i skoroszyty Tworzenie nowego skoroszytu Obliczenia w skoroszytach Przeglądanie wzorów w skoroszytach.
Powłoka, redyrekcja, potok
Support.ebsco.com EBSCOhost Wyszukiwanie złożone (z wieloma frazami) Szkolenie.
Procedury systemowe w systemie DOS
Podstawowe komendy UNIXA
SO – LAB3 Wojciech Pieprzyca
Komunikacja z arkuszem. Iteracje. Funkcje.
Język ANSI C Operacje we/wy
Proponowany program wykładu monograficznego
Skrypty w powłoce Ryszard Haraszczuk. Pierwszy skrypt Stworzenie pliku touch skrypt Wpisanie specjalnej linii dla powłoki #!/bin/bash Napisanie skryptu.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Instalacja Apacha Instalacja serwera www ogranicza sie do uruchomienia pliku .exe oraz do wpisania adresu serwera, oraz a administratora czego.
Schemat Hornera Mgr inż. Michał Szucki.
Pliki WSADOWE.
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Tajemnice klawiatury.
Tajemnice klawiatury Opracowanie: mgr Barbara Benisz SP nr 20 w Rybniku
Programowanie strukturalne i obiektowe
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Poznaj bliżej program Microsoft Office Word 2007
TABLICE C++.
Wyrażenia w Turbo Pascalu.
Linux - polecenia.
PHP: warunki, pętle, switch, break, continue
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
ANNA BANIEWSKA SYLWIA FILUŚ
Opracowała Urszula Guzikowska
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Warsztaty programowania w języku Python
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Elżbieta Fiedziukiewicz
Podstawy informatyki 2013/2014
Edytor tesktu i skrypty
Programowanie baz danych
MICROSOFT Access TWORZENIE MAKR
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Zajęcia I Organizacja zajęć Rejestracja i uruchamianie makr
Temat 12: Formularze.
Projektowanie stron WWW
Podstawy języka Instrukcje - wprowadzenie
PWSW Mechatronika Wykład 7 Matlab cd.
Wzorce slajdów, animacje, różne orientacje slajdów
Formatowanie dokumentów
Znajdowanie pokoju i wchodzenie do niego Skorzystaj z funkcji wyszukiwania programu Lync w celu znalezienia pokojów, do których masz dostęp. 1.W oknie.
Dowiązania (linki) twarde i symboliczne
Polecenie chmod change mode - zmiana atrybutu. chmod [opcje] uprawnienia plik Opis klas użytkowników u - użytkownik (user) g - grupa (group) o - inni.
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
„Filtry i funkcje bazodanowe w EXCELU”
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Czym jest PHP? ● Językiem programowania przeznaczonym do tworzenia i generowania dynamicznych stron WWW. Działa po stronie serwera: Klient Żądanie strony.
Piotr Kawałek , Mateusz Śliwowski
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Podstawy tworzenia skryptów
Programowanie obiektowe – zastosowanie języka Java SE
Zapis prezentacji:

Bash Bourne Again SHell

Co to jest bash? bash – powłoka systemowa UNIX napisana dla projektu GNU. Nazwa jest akronimem od Bourne-Again Shell (ang. znowu powłoka Bourne'a). Jest to jedna z najpopularniejszych powłok systemów uniksowych. Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu UNIX, i zawiera pomysły zawarte w powłokach Korna i csh. Pierwotna powłoka Bourne'a była tworzona przez Stephena Bourne'a. Bash był pisany głównie przez Briana Foxa i Cheta Rameya w roku 1987. Bash jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X w wersji 10.4 Tiger. Istnieją także wersje dla większości Systemów Unixowych. Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32. Program jest rozprowadzany na licencji GPL.

Podstawy #!/bin/bash #Tu jest komentarz. echo "Hello world" #! – wskazuje rodzaj powłoki w jakiej skrypt ma być wykonany, ten przykładowy będzie wykonywany przez interpreter poleceń /bin/bash niezależnie od tego jakiego rodzaju powłoki w danej chwili używamy. # – oznacza komentarz, wszystko co będzie stało za tym znakiem samej linii, jest pomijane przez interpreter echo "Hello world" – Wydrukuje na standardowym wyjściu

Uruchamianie skryptu chmod +x naszskrypt ./naszskrypt Aby móc uruchomić skrypt należy mu nadać atrybut wykonywalności za pomocą polecenia: chmod +x naszskrypt Jeśli katalog bieżący w którym znajduje się skrypt nie jest dopisany do zmiennej PATH, to nasz skrypt możemy uruchomić w ten sposób: ./naszskrypt

Polecenie echo Składnia: #!/bin/bash echo -ne "jakiś napis" # -ne to parametry formatujące Można też pisać do pliku. W tym wypadku echo wydrukuje tekst do pliku, ale zmaże całą jego wcześniejszą zawartość, jeśli plik podany na standardowym wyjściu nie istnieje, zostanie utworzony: echo "jakiś napis" > plik Tutaj napis zostanie dopisany na końcu pliku, nie zmaże jego wcześniejszej zawartości: echo "jakiś napis" >> plik

Parametry echo \a czyli alert, usłyszysz dzwonek \b backspace \c pomija znak kończący nowej linii \f escape \n form feed czyli wysuw strony \r znak nowej linii \t tabulacja pozioma \v tabulacja pionowa \\ backslash \nnn znak, którego kod ASCII ma wartość ósemkowo \xnnn znak, którego kod ASCII ma wartość szesnastkowo

Słowa zastrzeżone ! case do done elif else esac fi for function if in select then until while { } [ ] time

Cytowanie Znaki cytowania służą do usuwania interpretacji znaków specjalnych przez powłokę. Wyróżniamy nastepujące znaki cytowania: cudzysłów " " 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 Przykład: #!/bin/bash x=2 echo "Wartość zmiennej x to $x" #wydrukuje Wartość zmiennej x to 2 echo -ne "Usłyszysz dzwonek\a" echo "Polecenie date pokaże: `date`"

apostrof ' ' Wszystko co ujęte w znaki apostrofu traktowane jest jak łańcuch tekstowy, apostrof wyłącza interpretowanie wszystkich znaków specjalnych, traktowane są jak zwykłe znaki. Przykład: #!/bin/bash echo '$USER' #nie wypisze twojego loginu odwrotny apostrof ` ` umożliwia zacytowanie polecenia, bardzo przydatne jeśli chce się podstawić pod zmienną wynik jakiegoś polecenia #!/bin/bash x=`ls -la $PWD` echo $x pokaże rezultat polecenia alternatywny zapis, który ma takie samo działanie wygląda tak: #!/bin/bash echo $(ls -la $PWD)

backslash czyli znak maskujący \ Jego działanie najlepiej wyjaśnić na przykładzie Skryptu wymuszającego pojawienie się napisu $HOME Przykład: echo "$HOME" #wydrukuje /home/ja aby wyłączyć interpretacje przez powłokę tej zmiennej, trzeba napisać: echo \$HOME #i jest napis $HOME

Zmienne programowe To zmienne definiowane samodzielnie przez użytkownika. nazwa_zmiennej="wartość" Na przykład: x="napis" Na co należy uważać? Nie może być spacji po obu stronach znaku równości! Do zmiennej odwołujemy się poprzez podanie jej nazwy poprzedzonej znakiem $ i tak dla zmiennej x może to wyglądać następująco: echo $x

Pod zmienną możemy podstawić wynik jakiegoś polecenia, można to zrobić na dwa sposoby: 1) Poprzez użycie odwrotnych apostrofów – `polecenie` Przykład: #!/bin/bash GDZIE_JESTEM=`pwd` echo "Jestem w katalogu $GDZIE_JESTEM„ Wartością zmiennej GDZIE_JESTEM jest wynik działania polecenia pwd, które wypisze nazwę katalogu w jakim się w danej chwili znajdujemy.

2) Za pomocą rozwijania zawartości nawiasów: $(polecenie) Przykład: #!/bin/bash GDZIE_JESTEM=$(pwd) echo "Jestem w katalogu $GDZIE_JESTEM"

Zmienne specjalne To najbardziej prywatne zmienne powłoki,są udostępniane użytkownikowi tylko doodczytu (są wyjątki). Oto kilka przykładów: 1) $0 nazwa bieżącego skryptu lub powłoki #!/bin/bash echo "$0" #Polecenie pokaże nazwę naszego skryptu. 2) $1, $2 … $9 Parametry przekazywane do skryptu (wyjątek, użytkownik może modyfikować ten rodzaj zmiennych specjalnych. #!/bin/bash echo "$1 $2 $3" Jeśli wywołamy skrypt z jakimiś parametrami to przypisane zostaną zmiennym: od $1 do $9.

3) $@ Pokaże wszystkie parametry przekazywane do skryptu, równoważne $1, $2…$9. Jeśli nie podane są żadne parametry $@ interpretowana jest jako nic. Przykład: #!/bin/bash echo "Skrypt uruchomiono z parametrami: $@" Po wywołaniu skrypty zawierające powyższą linijkę jakimiś parametrami, np.: ./plik -a d Otrzymamy następujący efekt: Skrypt uruchomiono z parametrami -a d

4) $? kod powrotu ostatnio wykonywanego polecenia 5) $$ PID procesu bieżącej powłoki

Zmienne środowiskowe Definiują środowisko użytkownika, dostępne dla wszystkich procesów potomnych. Można je podzielić na: globalne - widoczne w każdym podshellu lokalne - widoczne tylko dla tego shella w którym został ustawione Inicjacja zmiennych globalnych: export nazwa_zmiennej= " wartosc„ Samo polecenie export powoduje uzyskanie listy wszystkich zmiennych globalnych. Na tej liście przed nazwą każdej zmiennej znajduje sięzapis: declare-x czyli wewnętrzne polecenie BASH-a, służące do definiowania zmiennych i nadawania im atrybutów. -x to atrybut eksportu (czyli samo co polecenie export). Niektóre przykłady zmiennych środowiskowych: $HOME - ścieżka do twojego katalogu domowego $USER - twój login $HOSTNAME -nazwa twojego hosta $OSTYPE -rodzaj systemu operacyjnego

Zmienne tablicowe BASH pozwala na stosowanie zmiennych tablicowych jednowymiarowych. Przechowują one listę jakichś wartości (rozdzielonych spacjami). W BASH'u nie ma maksymalnego rozmiaru tablic. Kolejne wartości zmiennej tablicowej indeksowane są przy pomocy liczb całkowitych, zaczynając od 0. Składnia: zmienna=(wartość1 wartość2 wartość3 wartośćn)

Składnia: ${nazwa_zmiennej[wskaźnik]} Przykład: #!/bin/bash tablica=(element1 element2 element3) echo ${tablica[*]} #spowoduje wyświetlenie wszystkich elementów tablicy echo ${#tablica[0]} #wyświetli długość danego elementu tablicy echo ${#tablica[@]} #wyświetli ilość elementów tablicy Inne schematy składniowe: Dodawanie elementów tablicy nazwa_zmiennej[wskaźnik]=wartość Usuwanie elementów tablicy: unset nazwa_zmiennej[wskaźnik] Usuniecie całej zawartości tablicy: unset tablica[*]

Strumienie danych Każdy uruchomiony w Linuxie proces skądś pobiera dane, gdzieś wysyła wyniki swojego działania i komunikaty o błędach. Tak więc procesowi przypisane są trzy strumienie danych: 1) stdin (ang. standard input) czyli standardowe wejście, skąd proces pobiera dane, domyślnie jest to klawiatura 2) stdout (ang. standard otuput) to standardowe wyjście, gdzie wysyłany jest wynik działania procesu, domyślnie to ekran 3) stderr (ang. standard error) standardowe wyjście błędów, tam trafiają wszystkie komunikaty o błędach, domyślnie ekran BASH identyfikuje je za pomocą przyporządkowanych im liczb całkowitych (od 0 do 2) tak zwanych deskryptorów plików: 0 to plik z którego proces pobiera dane stdin 1 to plik do którego proces pisze wyniki swojego działania stdout 2 to plik do którego trafiają komunikaty o błędach stderr Zamiast klawiatury jako standardowe wejście można otworzyć plik następującą komendą: < plik. Podobnie można uczynić z wyjściem za pomocą komend: > plik - zapis do pliku, powodujący usunięcie wcześniejszych danych lub >> plik - dopisanie danych na końcu pliku

Instrukcja warunkowa if Składnia: if [warunekA] then polecenie1 elif [warunekB] polecenie2 elif [warunekC] polecenie3 else polecenie4 fi Warunek ma postać [ wyrażenie1 operator wyrażenie2 ]

Instrukcja case Pozwala na dokonanie wyboru spośród kilku wzorców. Składnia: case zmienna in "wzorzec1") polecenie1 ;; "wzorzec2") polecenie2 ;; "wzorzec3") polecenie3 ;; *) polecenie_domyślne esac

Przykłady operatorów -a plik istnieje -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

Pętla for Wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy Składnia: for zmienna in lista do polecenie done Przykład – zmiana nazw plików pisaneych DUZYMI literami na pisane małymi literami: #!/bin/bash for nazwa in * mv $nazwa `echo $nazwa tr '[A-Z]' '[a-z]'`

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 gdzie wpisujemy cyfrę odpowiadającą wybranej pozycji. To co wpisaliśmy zachowywane jest w zmiennej REPLY Pętla działa dotąd dopóki nie wykonane zostaje polecenie break lub return Składnia: select zmienna in lista do polecenie done

Przykład – instrukcja case wewnątrz pętli: #!/bin/bash echo "Co wybierasz?" select y in X Y Z Quit do case $y in "X") echo "Wybrałeś X" ;; "Y") echo "Wybrałeś Y" ;; "Z") echo "Wybrałeś Z" ;; "Quit") exit ;; *) echo "Nic nie wybrałeś" esac break done Wyświetli: Co wybierasz? 1) X 2) Y 3) Z 4) Quit #?

Pętla while Sprawdza, czy warunek jest prawdziwy, jeśli tak – wykonywane są polecenia wewnątrz pętli Składnia: while warunek do polecenie done Przykład: #!/bin/bash x=1; while [ $x -le 10 ]; do echo "Napis pojawił się po raz: $x" x=$[x + 1]

Pętla until Sprawdza czy warunek jest prawdziwy, gdy jest fałszywy wykonywane są polecenia wewnątrz pętli. Pętla until kończy swoje działanie w momencie gdy warunek stanie się prawdziwy. Składnia: until warunek do polecenie done

Pobieranie danych – polecenie read Składnia: read -opcje nazwa_zmiennej Można przypisać wartości kilku zmiennym: read zmienna1 zmienna2 Opcje: -p - wyświetli opis tego, co należy wprowadzić, np: read -p "Wprowadź coś: " zmienna -a - kolejne wartości rozdzielane przez znak spacji będą zapisane w zmiennej tablicowej -e - można nie podawać nazwy zmiennej,wprowadzony tekst trafi do $REPLY read -e

Funkcje Stosuje się je gdy w skrypcie powtarza się jakaś grupa poleceń. Do danej funkcji odwołujemy się podając jej nazwę, a wykonane zostanie wszystko co wpisaliśmy między nawiasy { } Składnia: function nazwa_funkcji { polecenie1 polecenie2 } Funkcje mogą się znajdować w oddzielnym pliku, aby wywołać taką funkcję należy wpisać: . ~/plik_z_funkcjami nazwa_funkcji

Obliczenia arytmetyczne Składnia: $((wyrażenie)) lub $[wyrażenie] Przykład: #!/bin/bash echo $((8/2)) wynik=$[4*5/2] echo "$wynik" Obliczenia wykonywane są na liczbach całkowitych. Inny sposób – polecenie let: liczba1=5 liczba2=6 let wynik=liczba1*liczba2 echo $wynik

Okna dialogowe Składnia: dialog opcje rodzaj_okna Rodzaje okien dialogowych: yesno wybór między tak lub nie menu pokazuje menu, można wybrać tylko jeden element checklist pokazuje menu, można wybrać wiele elementów radiolist pokazuje menu, można wybrać tylko jeden element inputbox wpisuje się do niego dane msgbox wyświetla komunikat infobox informuje o stanie operacji textbox wyswietla zawartość pliku tekstowego gauge pokazuje miarkę Opcje: --clear czyści ekran --title Tytuł, na górze okna dialogowego. --backtitle Podtytuł, w tle okna dialogowego, znajduje się w lewym górnym rogu ekranu.

Okno yesno Składnia: --yesno tekst wysokość szerokość Przykład: #!/bin/bash dialog --title "Okno yesno" \ --backtitle "Tytuł w tle" \ --yesno "Wybierz tak lub nie." 5 30

Okno menu Składnia: --menu tekst wysokość szerokość wysokość_menu element opis Przykład: #!/bin/bash dialog --title "Okno menu" \ --menu "Menu" 9 50 3 \ 1 jeden \ 2 dwa \ 3 trzy \ 4 cztery

Okno checklist Składnia: --checklist tekst wysokość szerokość wysokość_listy Przykład: #!/bin/bash dialog --clear --separate-output --title "Okno checklist" \ --checklist \ "Tu można zaznaczać wiele wpisów naraz:" 10 70 4 \ "1" "pierwszy element" "off" \ "2" "drugi element" "off" \ "3" "trzeci element" "off" \ "4" "tu zaznaczone domyślnie" "on" \ 2>/tmp/input.$$ echo `cat /tmp/input.$$`

Okno radiolist To samo co checklist, ale można wybrać jeden element Składnia: --radiolist tekst wysokość szerokość wysokość_listy

Okno inputbox Składnia: --inputbox tekst wysokość szerokość Przykład: #!/bin/bash dialog --title "Okno inputbox" \ --inputbox "Pobieranie danych od użytkownika" 8 40 "Tu wpisz dane" Exit Status - $? 0 OK 1 Cancel 255 Escape