Podstawy programowania w Bash'u

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

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Wprowadzenie do programowania w powłoce

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

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Technologie Informacyjne - Linux 3

Programowanie skryptów powłoki

Środowisko programisty Zestaw 7

Tworzenie skryptu: Skrypty powłoki

1 Podstawy c++ w pigułce.

System operacyjny Linux

Pracownia Komputerowa wykład III

Programowanie w języku Python. Grażyna Koba

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

Programowanie w BASH u Skrypt do ćwiczeń

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

Kurs pisania skryptów w powłoce BASH

1 Podstawy c++ w pigułce.

Skrypty powłoki w systemie Linux

Wstęp do Informatyki dla bioinformatyków

Strona1. Linux. Skrypty powłoki

Systemy operacyjne 11

Interpreter poleceń oraz zmienne środowiskowe

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

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

Powłoka bash. Kurs systemu Unix 1

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Umieszczanie kodu. kod skryptu

PODSTAWY INFORMATYKI

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

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

Powłoka (shell) Powłoka ksh

Cw.12 JAVAScript w dokumentach HTML

Laboratorium Ubuntu Linux.

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

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

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

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Podstawy JavaScript ćwiczenia

Metody numeryczne Laboratorium 2

Podstawy Programowania C++

PODSTAWY INFORMATYKI

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

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Programowanie w Turbo Pascal

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

Pascal - wprowadzenie

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

Ćwiczenie nr 14: System Linux

Ćwiczenie 1. Wprowadzenie do programu Octave

Warunki logiczne instrukcja if

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Bash - instrukcje warunkowe, pętle i funkcje

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

JAVAScript w dokumentach HTML (1)

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

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

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ć

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Programowanie w Bashu

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

Struktura pliku projektu Console Application

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Podstawy programowania skryptów Sh

Powłoka interpreter poleceń systemu UNIX

Ćwiczenie 1. Wprowadzenie do programu Octave

Wstęp do systemu Linux

Wprowadzenie do Scilab: podstawy języka Scilab

4. Funkcje. Przykłady

Linuks skrypty Część teoretyczna

Programowanie komputerowe. Zajęcia 1

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

Systemy operacyjne 10

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

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

Wstęp do systemu Linux

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

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

- wszystkie elementy - wszystkie elementy

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

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

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

Programowanie strukturalne i obiektowe

2.5 Podstawy programowania w bash'u

Konstrukcje warunkowe Pętle

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

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

Języki skryptowe w programie Plans

lekcja 8a Gry komputerowe MasterMind

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

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Transkrypt:

Podstawy programowania w Bash'u I. Czym jest bash? II. Pierwszy program! III. Zmienne IV. Cytowanie V. Modyfikacja wyjścia VI. Wejście VII. Zmienne specjalne. VIII. Testy IX. Instrukcje warunkowe X. Pętle XI. Słowa Zastrzeżone XII. Tablice XIII. Funkcje XIV. Autor I. Czym jest bash? Bash jest powłoką systemową Unix, jedną z najpopularniejszych powłok systemów uniksowych. Została stworzona przez Briana Foxa i Cheta Rameya w 1987 roku. Powłoka umożliwia pracę interaktywną. Umożliwia także jak większość języków programowania definiować funkcje, zawiera instrukcje sterujące (if, while itp.). Bash zapisuje historię wykonywanych poleceń w pliku.bash_history w katalogu domowym użytkownika. ( domyślnie po otworzeniu Konsoli, bądź terminala jesteśmy w katalogu domowym, wtedy piszemy "cat.bash_history" i widzimy wszystkie polecenia wydane przez nas ) II. Pierwszy program! 1. Tworzymy nowy plik touch helloworld gdzie helloworld to nazwa naszego pliku. Nie musimy dodawać żadnego rozszerzenia! 2. Edytujemy plik w jakimś edytorze pico helloworld edytor jest dowolny może to być pico, ale tekże gedit lub mcedit 3. Przychodzimy do pisania właściwej treści pliku: #1 echo "Hello World"; #2 # moj pierwszy program w bash'u #3

Omówienie programu: 1 - jest to niezbędna linijka aby nasz program zadziałał. #! wskazuje na powłokę w której nasz skrypt ma sie wykonać. U nas jest to /bin/bash 2 - polecenie echo służy do wyświetlania komunikatów albo danych na standardowe wyjście ( ekran ) 3 - wolno stojący # (hash) oznacza komentarz wszystko po nim jest omijane przez powłokę. 4. Nadajemy naszemu skryptowi prawa wykonania chmod +x helloworld 5. I uruchamiamy go./helloworld spowoduje to wyświetlenie na ekranie napisu Hello World, przez polecenie echo. III. Zmienne. a) Deklarowanie zmiennych: Zmienne definiujemy inaczej niż w Pascalu, C++ itp. Otóż nie podajemy typu zmiennej, tylko podajemy nazwę i jej wartość "nazwa = wartość;" np.: users = 30; Aby wyświetlić zmienną na ekranie używamy tak jak poprzednio polecenia echo, jednak nazwę zmiennej poprzedzamy tak jak w php znakiem dolara $ np.: echo "Ilość uzytkownikow jest rowna $users"; Wartością zmiennej może być liczba, tekst, lub polecenie powłoki (patrz rozdział IV) Przykładowy program ze zmienną : #deklarujemy zmienne users=21; #1 admin="prajmus" #2 echo "Jest $users uzytkownikow, a adminem jest $admin"; # 3

1 - zmienna przybierająca jako wartość liczbę 2 - zmienna przybierająca jako wartość tekst 3 - przykład bardziej rozbudowanego polecenia echo b) Operacje na zmiennych: Operacje na zmiennych możemy wykonywać na trzy sposoby: $((obliczenia)) ; $[obliczenia], lub przez polecenie let (np. let zmienna = obliczenia) #operujemy na zmiennych1 girls=5 boys=4 together=$[girls+boys] echo "razem jest" $together lub #operujemy na zmiennych2 girls=5 boys=4 together=$((girls+boys)) echo "razem jest" $together lub #operujemy na zmiennych3 girls=5 boys=4 let together=girls+boys echo "razem jest" $together Dostępne operacje na zmiennych: + dodawanie - odejmowanie * mnożenie / dzielenie % modulo(reszta z dzielenia)

IV. Cytowanie Ten rozdział można określić rozszerzeniem rozdziału IIIa, ponieważ też zajmujemy się tu deklarowaniem zmiennych. Otóż w bash'u dostępne są trzy rodzaje cytowania (cytowania ponieważ chodzi tu o cudzysłowie): 1. przez przez cudzysłów "tekst" 2. przez pojedynczy apostrof 'tekst' 3. przez odwrócony apostrof `tekst` (znajduje się na klawiszu tylda pod ESC) 1. Między cudzysłowami umieszcza się tekst oraz wartości zmiennych oddzielone spacją (można także umieszczać polecenia konsoli) 2. Wszystko co znajduje się pomiędzy apostrofami jest traktowane jako tekst, czyli wartości zadeklarowanych przez nas zmiennych nie zostaną wyświetlone. 3. Odwrotny apostrof umożliwia cytowanie poleceń konsoli (może być zagnieżdżony w cudzysłów) przykład 1. #cudzyslow gdzie="katalogu" echo "jestem w $gdzie `pwd`" przykład 2. #apostrof gdzie="katalogu" echo 'jestem w $gdzie `pwd`' #niestety nie pokaze sie ani wartosc zmiennej ani nasza pozycja ;/ V. Modyfikowanie wyjścia. Krótko na ten temat. Po poleceniu echo zawsze powstaje nowa linijka można jednak temu zapobiec przez dodanie -n echo -n "czesc " echo "to ja" spowoduje wypisanie "czesc to ja " inne parametry: (zaczerpnięte z http://www.dief.republika.pl/echo.html ) # -e włącza interpretacje znaków specjalnych takich jak: * \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 VI. Wejście Do wczytywania danych służy polecenie read read (-opcje) nazwa zmiennej Programik: #wczytywanie danych echo "jak masz na imie: " read imie echo "czesc $imie" Oczywiście można wczytywać kilka zmiennych naraz (read jeden dwa trzy) a także nadpisywać już istniejące zmienne. VII. Zmienne specjalne Myślę że to będzie ostatni rozdział, ponieważ chcę aby były tu podstawy. Uruchamiając program możemy podać dodatkowo parametry np../nazwa_programu parametr1 parametr2 itp Parametry te są zapisywane w specjalnych zmiennych od $0 do $9 w $0 znajduje się nazwa skryptu, natomiast w $1...$9 podane parametry przykład: #parametry echo $0 $1 uruchommy program w następujący sposób:./program czesc powinniśmy dokładnie to samo co wpisaliśmy ujrzeć na ekranie monitora VIII. Testy Zanim będę mógł omówić pętle, musze przedstawić koncepcję testu logicznego (prawda lub fałsz). W powłoce 0 oznacza prawdę, a każda inna wartość fałsz. Polecenie test: jest to polecenie wbudowane w powłokę; zwraca 0 jeśli warunek jest prawdziwy, lub 1 jeżeli

fałszywy. #test test 20 -lt 10 # -ln omówi ę za momencik echo $? #jest to zmienna specjalna oznaczająca kod powrotu ; każde polecenie taki zwraca Jako rezultat wykonania naszego programu powinniśmy ujrzeć: 1 Teraz trochę o tym -ln. Otóż jest to argument stosowany przez polecenie test. Argumentów jest oczywiście dużo więcej. Postaram się najciekawsze przedstawić. Testy plików -d plik plik jest katalogiem? -f plik plik jest zwykłym plikiem? -L plik plik jest dowiązaniem symbolicznym? -r plik plik istnieje i daje sie odczytać? -w plik plik istnieje i daje sie zapisać? -x plik plik istnieje i daje sie uruchomić? -s plik plik istnieje i jego wielkość jest większa od 0 pl1 -nt pl2 pl1 -ot pl2 Testy ciągów znaków ci1 = ci2 ci1!= ci2 plik pl1 jest nowszy od pl2 plik pl1 jest starszy od pl2 ciąg ci1 jest taki sam jak ci2 ciąg ci1 jest różny od ci2 -z ci1 ciąg ci1 jest równy 0(długość) -n ci1 ciąg ci1 jest większy od 0 (dłuższy) Testy numeryczne a -eq b a -ne b a -gt b a -ge b a -lt b a -le b Łączenie i negowanie testów t1 -a t2 t1 -o t2 a jest równe b a nie jest równe b a jest większe od b a jest większe lub równe b a jest mniejsze od b a jest mniejsze lub równe b iloczyn logiczny ( i t1 i t2 muszą mieć wartość true) suma logiczna (t1 lub t2 musi mieć wartość true)! test negacja testu (test w tym wypadku to nie polecenie tylko nasz test logiczny

Zamiast polecenia test możemy również użyć nawiasów kwadratowych i pomiędzy nimi umieścić nasz test #test [ 20 -lt 10 ] #nalezy pamietac o spacji po [ i przed ] echo $? Jest to ten sam program co w pierwszym przykładzie, zapisany nieco inaczej. IX. Instrukcje warunkowe Są to jak mówi nazwa instrukcje, które sprawdzają warunki. Pierwszym przykładem instrukcji warunkowej jest instrukcja if. Budowa: if polecenie #jeśli test zwróci 0 instrukcje fi A oto przykład: if [ `whoami` = "root" ] #znów przypomn ę o spacjach than echo "masz władze" fi Inna postać instrukcji if to: if polecenie instrukcje1 else instrukcje2 fi

Rozbudowany przykład: if [ `whoami` = "root" ] echo "masz władze" else echo "twoje prawa s ą ograniczone" fi Jeżeli uruchomimy program ze swojego konta ujrzymy: "twoje prawa są ograniczone", jednak jako root zobaczymy już, że mamy władze ;P Istnieje jeszcze jedna forma instrukcji if: if polecenie1 instrukcje1 elif polecenie2 instrukcje2 elif...... else instrukcjen fi Pozwala ona na tworzenie jeszcze bardziej rozbudowanych programów. Przykład: echo "podaj liczbe:" read liczba if [ $liczba -lt 0 ] echo "twoja liczba jest mniejsza od 0" elif [ $liczba -gt 0 -a $liczba -lt 10 ] echo "liczba jest wieksza niz 0 ale mniejsza od 10" else echo "liczba jest większa od 10" fi

Prosty program wiadomo co robi :). Istnieje jeszcze jedna instrukcja warunkowa. Jest to case Budowa: case ciąg_znaków(lub zmienna) in wyrażenie1) ciało1 wyrażenie2) ciało2... *) inne ciało (jeżeli nie było prawidłowej wartości) esac Case sprawdza ciąg_znaków i szuka takiego samego wyrażenia, jeżeli takie istnieje to wtedy wykonuje sie ciało wyrażenia. przykład: echo "podaj liczbe 1-3:" read liczba case $liczba in 1) echo "podałe ś jeden" 2) echo "podale ś dwa" 3) echo "podałe ś trzy" *) esac echo "nie zastosowałe ś si ę do warunków zadania" Ten program chyba też nie wymaga wyjaśnień. X. Pętle

Pętla while powtarza ona wykonanie poleceń dopóki warunek jest prawdziwy. Budowa: while warunek do polecenia done Przykład: i=0 while [ $i -lt 4 ] do echo $i i=$[$i+1] done Po wykonaniu tego prostego skryptu ujrzymy cyfry od 0 3 każda w innej linijce Bardzo podobna do pętli while jest pętla until, tyle że wykonuje ona polecenia dopóki warunek jest fałszywy. Budowa: until warunek do polecenia done Pętla for służy do iterowania wartości z podanej listy. for zmienna in lista do polecenia done Program:

for users in Kuba Ja Prajmus do echo "$users jest na ircu" done Do tematu pętli warto jeszcze dodać dwa polecenia. Jest to break i continue/ break umieszczone w pętli powoduje jej zakończenie continue umieszczone w pętli powoduje przejście do kolejnej iteracji. XI. Słowa zastrzeżone W bash'u istnieją słowa, których nie możesz użyć jako nazwy zmiennych są to (alfabetycznie):! [ ] { } case do done elif else esac fi for function if in select time until while XII. Tablice Tablice są to specjalne zmienne, które mogą przechowywać kilka wartości. Deklarujemy je następująco: n_zmiennej=(wartosc1 wartosc2 wartosc3...) Wartości są oddzielane spacja. Aby odwołać się do któregoś jej elementu należy wpisać: {n_zmiennej[index]}

Indeksowanie tablic zaczyna sie od zera, czyli w naszym przypadku wartosc1 będzie miała index 0, wartosc2 1 itd. Przykładowy program: tablica=(my home) echo -n "${tablica[0]} " #ten sam efekt uzyskamy wpisując ${tablica} echo ${tablica[1]} Na ekranie ujrzymy napis "my home" Możemy to zrobić nieco szybciej wypisując naraz cała tablice. Aby to wykonać trzeba w miejsce indexu wpisać @ lub *. tablica=(my home) echo ${tablica[@]} Aby wyświetlić długość któregoś z elementów, lub ilość elementów w tablicy należy przez nazwą zmiennej postawić # np. echo ${#tablica[0]} (wyświetli 2 bo tyle liter ma słowo "my") Nadpisywanie, dodawanie i usuwanie elementów tablicy tablica=(my home) echo ${tablica[@]} tablica[2]=prajmus #dodaje element prajmus na koniec tablicy echo ${tablica[@]} tablica[2]=pprraajjmmuuss #zamienia wartość elementu o podanym indexie echo ${tablica[@] unset tablica[2] #usuwa podany element echo ${tablica[@]} unset tablica[@] #usuwa cala tablice echo ${tablica[@]}

XIII. Funkcje Funkcja jest to wydzielona część programu wykonująca konkretne operacje. Definiujemy je dzięki słowu function(które jednak nie jest konieczne), a wywołujemy podając jej nazwę, np.: function home #równie dobrze możemy napisać tylko home { echo "my home" } home #wywołanie funkcji Możliwe jest także tworzenie funkcji z parametrami. Wywołuje się je następująco: nazwa_funkcji "parametr1" "parametr2". Parametry w funkcji odbiera sie tak jak w programie wykorzystując zmienne $1-$9. Jednak w przeciwieństwie do programów zmienna $0 nie przechowuje nazwy funkcji. XIV. Autor Jakub 'prajmus' Borowski, uczeń I LO Collegium Gostomianum w Sandomierzu Strona Domowa: http://prajmus.cba.pl Adres e-mail: prajmus@gmail.com numer gg: 2224871 Jeżeli masz jakieś uwagi na temat artykułu napisz.