Strona1. Linux. Skrypty powłoki

Podobne dokumenty
Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

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

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

1 Przygotował: mgr inż. Maciej Lasota

Interpreter poleceń oraz zmienne środowiskowe

System operacyjny Linux

Skrypty powłoki w systemie Linux

Powłoka (shell) Powłoka ksh

Pracownia Komputerowa wykład III

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

Programowanie skryptów powłoki

- wszystkie elementy - wszystkie elementy

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

Wprowadzenie do programowania w powłoce

Technologie Informacyjne - Linux 3

Środowisko programisty Zestaw 7

Powłoka interpreter poleceń systemu UNIX

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

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Tworzenie skryptu: Skrypty powłoki

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

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

Powłoka bash. Kurs systemu Unix 1

1 Podstawy c++ w pigułce.

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

Ćwiczenie nr 14: System 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

PODSTAWY INFORMATYKI

Pracownia Komputerowa wykład III

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

Kurs pisania skryptów w powłoce BASH

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

1 Podstawy c++ w pigułce.

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

Przekierowanie wejścia wyjścia:

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

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Wstęp do Informatyki dla bioinformatyków

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

Systemy operacyjne 11

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

Programowanie w BASH u Skrypt do ćwiczeń

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

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Linuks skrypty Część teoretyczna

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

Wstęp do systemu Linux

Systemy operacyjne Programowanie w języku powłoki sh

Podstawy programowania w Bash'u

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Technologie Informacyjne - Linux 2

Wprowadzenie do programowania shella (bash)

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

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

Podstawy użytkowania Linux a

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

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

Blockly Kodowanie pomoc.

Laboratorium Ubuntu Linux.

Podstawy programowania skryptów Sh

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

Wstęp do systemu Linux

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ć

Ćwiczenie 1. Wprowadzenie do programu Octave

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

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

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

Podstawy JavaScript ćwiczenia

Trochę o plikach wsadowych (Windows)

Znaki globalne w Linuxie

PODSTAWY INFORMATYKI

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Programowanie w języku Python. Grażyna Koba

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

Podstawy Programowania.

Ćwiczenie 1. Wprowadzenie do programu Octave

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

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

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Pracownia Komputerowa wyk ad III

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

Pracownia komputerowa. Dariusz wardecki, wyk II

Zakład Systemów Rozproszonych

Programowanie komputerowe. Zajęcia 1

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

Metody numeryczne Laboratorium 2

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

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

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

Linux: System Plików

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

Podstawy Programowania

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Transkrypt:

Strona1 Linux Skrypty powłoki

Strona2 Spis treści. Spis treści.... 2 Wprowadzenie.... 3 Polecenie echo, znaki cytowania oraz komentarze.... 3 Operatory arytmetyczne.... 4 Deniowanie zmiennych w skryptach powłoki.... 4 Zmienne systemowe / środowiskowe.... 5 Pobieranie danych wejściowych od użytkownika.... 5 Instrukcja if.... 5 Operatory logiczne.... 6 Łączniki operatorów logicznych.... 6 Przykład skryptu z instrukcją if.... 6 Instrukcja case.... 7 Przykład zastosowania pętli w skryptach powłoki.... 7 Zastosowanie funkcji.... 7 Parametry wejściowe.... 8 Status wyjścia.... 9 Przykłady różnych skryptów.... 10

Strona3 Wprowadzenie. Powłoka (shell) jest interpretatorem poleceń (wydanych przez użytkownika, lub pobranych z pliku) odpowiednik command.com w systemie Windows. Polecenia wpisywane z klawiatury zostają zamienione właśnie przez powłokę na język zrozumiały dla jądra systemu. Linux posiada kilka powłok np. bash, sh, csh, tcsh. Nazwa powłoka, oraz jądro systemu zaczerpnięto ze składowych orzecha Z jęz. ang. orzech składa się z jądra (kernel) i skorupy (shell). Skrypty powłoki to pliki ASCI składające się z poleceń samej powłoki, oraz poleceń sterujących np. if, for, repeat, while itd. Umożliwiają pobranie danych od użytkownika, lub z pliku, następne ich przetworzenie, oraz wyświetlenie wyniku na monitorze, lub dowolnym urządzeniu, czy zapisaniu wyniku do pliku. Aby nasz plik mógł nosić miano skryptu, musi mieć prawo wykonania! chmod +x nasz_plik Pierwsza linia w skryptach powinna wyglądać następująco: lub #!/bin/sh Zapis ten informuje, że do przetworzenia skryptu zostanie użyta powłoka bash lub sh. Polecenie echo, znaki cytowania oraz komentarze. Polecenie echo służy do wyświetlania tekstu, lub wartości zmiennych. Opcje polecenia echo: -n nie wyświetlaj nic, tylko przejdź do następnej lini -e interpretuj komendy po znaku \ \a dzwonek (bell) \b backspace (kasuje ostatni znak) \c przechodzi do następnej linii \n nowa linia \r powrót karetki \t tabulator

Strona4 \\ znak \ (backslash) Cudzysłów w skryptach występuje w trzech rodzajach: " - podwójny cudzysłów ' - pojedynczy cudzysłów (apostrof) ` - odwrócony cudzysłów (odwrócony apostrof) 1."Podójny cudzysłów" - Cokolwiek jest zamknięte w podwójny cudzysłów pozbawiane jest znaczenia tych znaków (z wyjątkiem \ i $). 2. 'Pojedynczy cudzysłów' - Zamknięty ciąg w pojedynczy cudzysłów pozbawiane jest znaczenia tych znaków bez wyjątków. 3. `Odwrócony cudzysłów` (tam gdzie znak tyldy) przydatny wtedy gdy w ciągu znaków przywołujemy jakieś polecenie powłoki np.: echo "Today is `date +%m/%d/%y`" Komentarz w skrypcie oznaczamy za pomocą znaku #. Przykład: vi pierwszy_skrypt.sh Zawartość pliku: # to przykład komentarza linia nie będzie interpretowana podczas działania skryptu clear echo zostaniesz poinformowany w jakim katalogu aktualnie jesteś echo e oto bierzacy katalog: \n\a `pwd` Nadajemy prawo wykonywania utworzonemu plikowi: chmod +x nazwa_pliku, czyli chmod +x pierwszy_skrypt.sh Operatory arytmetyczne. Dodawanie expr 1+3 Odejmowanie expr 5-4 Dzielenie expr 6/2 Reszta z dzielenia expr 20%3 Mnożenie expr 1\*10 Deniowanie zmiennych w skryptach powłoki. a="jakiś tekst" echo "Zmienna a przechowuje następujący tekst: $a"

Strona5 TODAY=`date +%m-%d-%y` echo "Today is $TODAY" Jeżeli chcemy aby nasza zmienna była dostępna również po wykonaniu skryptu, dla procesów potomnych, musimy denicję zmiennej poprzedzić słowem export, które powoduje, że zmienna ta jest dostępna dla kolejnych procesów po zakończeniu działania naszego skryptu. export TEST= Zmienna TEST dostępna globalnie, po zakończeniu skryptu ; Zmienne systemowe / środowiskowe. W skryptach można używać także zmiennych środowiskowych. Aby wyświetlić listę wszystkich zmiennych systemowych wpisz polecenie: env more lub set more. Przykładowe zmienne środowiskowe: $HOME wskazuje na katalog domowy zalogowanego użytkownika, $USER, lub $LOGNAME login użytkownika, $UID id użytkownika, $BASH powłoka użytkownika, $HOSTNAME nazwa maszyny,. Pobieranie danych wejściowych od użytkownika. Do pobrania danych od użytkownika posłuży nam wyrażenie read. Składnia: Read zmienna1,zmienna2, zmiennan Przykład: echo Podaj Twoje imię: read kto echo witaj $kto! Instrukcja if. Składnia: if warunek polecenie/a elif warunek 2 polecenie/a polecenie/a Składnia warunku w instrukcji if

Strona6 [ wyrażenie1 operator wyrażenie2 ] Między nawiasami kwadratowymi a warunkiem musi być spacja! Operatory logiczne. -eq jest równe (==) -ne jest różne (!=) -lt jest mniejsze (<) -le jest mniejsze, bądź równe (<=) -gt jest większe (>) -ge jest większe, lub równe (>=) Operatory po stronie lewej stosujemy dla liczb, po prawej dla napisów. Sprawdzenie, czy zmienna tekstowa nie jest pusta? if [ -n $zmienna ] pamiętaj aby analizowaną zmienną ująć w znakach cudzysłowu. Łączniki operatorów logicznych. Używamy do wykorzystania dwóch lub więcej warunków w jednym czasie. Operator Znaczenie! wyrażenie Logiczne NIE - negacja wyrażenie1 -a wyrażenie2 Logiczne AND wyrażenie1 -o wyrażenie2 Logiczne OR Przykład skryptu z instrukcją if. #!/bin/sh clear echo "skrypt sluzy do zamykania, restartowania systemu!" echo "jezeli chcesz wylaczyc system podaj 1" echo "jezeli chcesz zrestartowac system podaj 2" echo "podaj cyfre:" read cyfra if [ $cyfra -eq 2 ] shutdown -r now elif [ $cyfra -eq 1 ] halt echo "nie wybrales zadnej dostepnej opcji!!!"

Strona7 Instrukcja case. Przykład instrukcji case: case $liczba in 10) echo to jest liczba 10 ;echo przykład kolejnego polecenia oddzielonego średnikiem ;; 20) echo to jest liczba 20 echo przykład kolejnego polecenia w nowym wierszu ;; *) echo inna liczba esac Gwiazdka oznacza opcję default wyświetli ten tekst jeśli żaden z powyższych warunków nie został spełniony. Przykład zastosowania pętli w skryptach powłoki. for i in 1 2 3 do echo $i done for i in `nd /home/pkania -name *mp3` do rm $i done Pętla until instrukje wykonywane są dopóki warunek jest fałszywy. Jeżeli warunek stanie się prawdziwy pętla jest przerywana. Przykład: skrypt sprawdza co 2 sekundy, czy root jest zalogowany. until who grep root > /dev/null do sleep 2 done echo e \\a echo root się zalogował Zastosowanie funkcji. Składnia: function function_name{ commands commands } Przykład: function utworz_katalog(){ mkdir $1 cd $1

Strona8 echo `pwd` } Wywołanie funkcji w skrypcie: utworz_katalog /tmp/test Funkcje możesz zapisać w osobnym pliku. Aby się do nich odwołać w dowolnym skrypcie możesz użyć polecenia source nazwa_pliku_z_funkcjami. Source działa jak include. Parametry wejściowe. Podczas wywoływania skryptu możemy podawać tzw. parametry wejściowe. Parametry te są przechowywane w zmiennych o nazwach od $0 do $9. $0 to nazwa wywoływanego skryptu, kolejne zmienne od $1 do $9 reprezentują parametry wpisane po nazwie skryptu, które są oddzielane znakiem spacji. W ten sposób nasze skrypty stają się bardziej uniwersalne. Praktyczny przykład zastosowania parametru wejściowego znajdziesz poniżej w rozdziale Przykładowe skrypty. $* - podaje wszystkie argumenty wejściowe. $# - podaje liczbę zastosowanych parametrów. $$ - podaje numer procesu wywołanego skryptu. Przykład poglądowy: Treść pliku przyklad.sh: echo nazwa skryptu: $0 echo Liczba parametrów: $# echo Nr procesu: $$ echo Parametr1: $1 echo Parametr2: $2 echo Parametr3: $3 Wywołaj powyższego skrypt w ten sposób:./przyklad.sh 123 345 567 Zaobserwuj otrzymany wynik. Sprawdzenie, czy podano jakikolwiek parametr. Jeżeli jakikolwiek parametr jest bezwzględnie wymagany, w kodzie skryptu możesz to sprawdzić w następujący sposób: if [ $# -ne 0 ] echo podałeś parametr. echo nie podałeś żadnego parametru.

Strona9 Powyższy kod sprawdza, czy jakikolwiek parametr został podany podczas wywołania skryptu. Status wyjścia. Jeżeli wykonamy jakieś polecenie zwracany jest tzw. status wyjścia. Jeżeli polecenie zakończyło się bezbłędnie zwróconą wartością będzie zero (0), jeżeli wartość zwrócona jest większa od zera (>0), polecenie nie wykonało się poprawnie. Aby zobaczyć status ostatnio wydanego polecenia wpisz: echo $? Wartość zmiennej $? możesz wykorzystać w swoich skryptach, aby sprawdzić, czy dane polecenie wykonało się prawidłowo. Przykłady: 1) Wydaj polecenie: pwd, następnie echo $?. Zobaczysz 0 (zero) polecenie wykonało się prawidłowo. 2) Wydaj polecenie: rm plik_ktorego_nie_ma, następnie echo $?. Zobaczysz cyfrę 1 (oznaczającą kod błędu polecenia rm) polecenie nie zostało prawidłowo wykonane. Zastosowanie praktyczne w instrukcji warunkowej oraz wykonanie względne (&&, ). if <polecenie> <lista_poleceń 1> <lista poleceń 2> Powyższe możemy zapisać również jako: if <polecenie>; <lista_poleceń 1>; <lista poleceń 2>; Znak ; (średnika) informuje powłokę, gdzie kończy się polecenie i zaczyna nowe. Powłoka wykonuje dane polecenie. Jeżeli kod błędu tego polecenia = 0 to wykonywana jest lista poleceń 1, w przeciwnym razie wykonywana jest lista poleceń 2. Część jest opcjonalna. Praktyczny przykład: if test f plik.txt rm plik.txt

Strona10 To samo uzyskamy wpisując: test f plik.txt && rm plik.txt && - wykonaj drugie polecenie, jeżeli pierwsze zakończy się bezbłędnie. - wykonaj drugie polecenie jeżeli pierwsze zakończy się błędnie. Przykłady różnych skryptów. Skrypt zamieniający duże litery na małe w nazwach plików w danym katalogu: for i in * do lower=`echo $i tr [:upper:] [:lower:]` mv $i $lower done Skrypt sprawdzający, czy dany plik istnieje (z zastosowaniem polecenia test, więcej informacji na temat tego przydatnego polecenia: man test, a poniżej znajdziesz tabelę z wybranymi opcjami tego polecenia): if test -e ~/data.sh echo -e "plik data.sh istnieje" echo -e "plik data.sh nie istnieje" Test Znaczenie -s plik Nie pusty plik -f plik Plik istnieje lub jest to plik, a nie katalog -d katalog Katalog, nie plik -w plik czy plik jest zapisywalny -r plik czy plik jest tylko do odczytu -x plik czy plik jest wykonywalny Zamiast deniować nazwę poszukiwanego pliku bezpośrednio w skrypcie można użyć również tzw. parametru wejściowego, który wskazuje na nazwę poszukiwanego pliku np.:./szukaj.sh dokument.txt. Wtedy powyższy skrypt będzie wyglądał następująco: #sprawdzam, czy parametr został podany przy wywołaniu skryptu if [ -n "$1" ] if test -e $1

Strona11 echo -e "plik $1 istnieje" echo -e "plik $1 nie istnieje" echo "Nie podano parametru z nazwą pliku" Skrypt dodający użytkownika (z pytaniem o jego katalog domowy): echo "Skrypt administracyjny - dodanie uzytkownika." echo "Autor: Piotr Kania" echo "wpisz login uzytkownika:" read login echo -e "Czy tworzyć katalog domowy?\nwpisz TAK lub NIE:" read d if [ $d == "tak" -o $d == "TAK" ] userdir="-m -d /home/$login" spr_login="`cut -d : -f1 /etc/passwd grep --line-regexp $login`" if [ $spr_login == $login ] echo "Użytkownik o loginie $spr_login już istnieje." echo "wykonuję polecenie useradd $login $userdir" echo "`useradd $login $userdir`" Zaawansowany skrypt do tworzenia kopii zapasowych: SHELL=/bin/bash USER=jboss HOME=/home/jboss PATH=/usr/bin:/bin:/srv/jboss_std:/srv/PostgreSQL/8.3/bin LOG=/root/kopia_PROGRAMU.log KATALOG_ARCH=/srv/archiwum DZIS=$(date +%Y-%m-%d) DZIS_Z=$(date +%Y-%m-%d_OLD_%H:%M:%S) if [ -e $KATALOG_ARCH/$DZIS ] zip -9 -r $KATALOG_ARCH/$DZIS_Z $KATALOG_ARCH/$DZIS rm -r $KATALOG_ARCH/$DZIS cd /srv/admnarz/./backup_create.sh -noverify -novacuum #znajdz kopie, ktore zostaly utworzone wczesiej niz 5 dni temu i je usun nd $KATALOG_ARCH/ -mtime +5 -type d -exec rm -rf {} \; nd $KATALOG_ARCH/ -mtime +5 -type f -exec rm f {} \; if [ -e $KATALOG_ARCH/$DZIS/PROGRAM.dump ] echo -e "######################################" >> $LOG

echo -e $DZIS >> $LOG echo -e "kopia OK" >> $LOG echo -e "#####################################" >> $LOG echo -e $DZIS >> $LOG echo -e "kopia BAD" >> $LOG Strona12