Tworzenie skryptu: Skrypty powłoki

Podobne dokumenty
pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

1 Przygotował: mgr inż. Maciej Lasota

System operacyjny Linux

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

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Programowanie skryptów powłoki

Pracownia Komputerowa wykład III

Powłoka (shell) Powłoka ksh

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

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

Wprowadzenie do programowania w powłoce

Skrypty powłoki w systemie Linux

- wszystkie elementy - wszystkie elementy

Interpreter poleceń oraz zmienne środowiskowe

Technologie Informacyjne - Linux 3

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

Programowanie w BASH u Skrypt do ćwiczeń

Przekierowanie wejścia wyjścia:

PODSTAWY INFORMATYKI

Pracownia Komputerowa wykład III

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

Powłoka interpreter poleceń systemu UNIX

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

PODSTAWY INFORMATYKI

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

Strona1. Linux. Skrypty powłoki

Środowisko programisty Zestaw 7

Powłoka bash. Kurs systemu Unix 1

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Wstęp do Informatyki dla bioinformatyków

Systemy operacyjne 11

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Podstawy programowania w Bash'u

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

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

Wstęp do systemu Linux

Bash - instrukcje warunkowe, pętle i funkcje

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

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

Wstęp do systemu Linux

Pracownia Komputerowa wyk ad III

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

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

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

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

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

Linuks skrypty Część teoretyczna

Systemy operacyjne 10

Kurs pisania skryptów w powłoce BASH

Podstawy programowania skryptów Sh

Technologie Informacyjne - Linux 2

Bash i algorytmy. Elwira Wachowicz. 20 lutego

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

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

Trochę o plikach wsadowych (Windows)

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

11. Wstęp do skryptów w Linuxie

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

System operacyjny Linux

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

2.5 Podstawy programowania w bash'u

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

Laboratorium Ubuntu Linux.

Ćwiczenie nr 14: System Linux

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

Formy dialogowe w środowisku Gnome

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

Pętla for. Wynik działania programu:

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

Podstawy Programowania C++

lekcja 8a Gry komputerowe MasterMind

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

TEMAT : System operacyjny MS DOS pliki wsadowe

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ć

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

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

Narzędzia informatyczne w językoznawstwie

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Podstawy Programowania.

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

1 Podstawy c++ w pigułce.

Wprowadzenie do Scilab: podstawy języka Scilab

Metody numeryczne Laboratorium 2

Wprowadzenie do programowania shella (bash)

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

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

Bash, skrypty. Wojciech Dudek. 15 listopada Uniwersytet Warszawski

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

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Znaki globalne w Linuxie

Programowanie w języku Python. Grażyna Koba

JAVA?? to proste!! Autor: wojtekb111111

Umieszczanie kodu. kod skryptu

Podstawy informatyki

Blockly Kodowanie pomoc.

Transkrypt:

Skrypty powłoki Często wykonujemy powtarzający się zestaw poleceń Wygodniej jest zapisać je w pliku i poddać interpretacji przez powłokę systemu, niż wpisywać je za każdym razem z klawiatury Pliki tekstowe, napisane z pewnymi regułami składni, nazywają się skryptami powłoki (shell scripts) Tworzenie skryptu: W wolnym edytorze tworzymy plik tekstowy z treścią skryptu, np. pico mojskrypt Skrypt możemy urochomić albo przez podanie polecenia: bash mojskrypt Albo nadajemy mu atrybut wykonywalności (chmod +x mojskrypt) i wykonujemy jak program:./mojskrypt Dokonujemy edycji skryptu jak każdego innego pliku tekstowego Wybór powłoki Skrypty najczęściej pisze się w składni Bourne shell a (sh lub bash) W skrypcie można zadeklarować, która powłoka ma go interpretować: pierwsza linia skryptu musi mieć postać: #!/bin/sh dla Bourne Shella lub #!/bin/bash dla Bourne-Again-Shella Debugging skryptów Z linii komend: bash opcja skrypt Przy pomocy instrukcji (w tekście skryptu): set opcja gdzie opcja: n - polecenia skryptu nie są wykonywane, a jedynie wyświetlane -v -wyświetlenie i wykonanie linii -x wyświetlenie poleceń po interpretacji (wykonanie podstawień itd.) -e -zatrzymanie interpretera, jeśli którekolwiek polecenie zwróci błąd -u zwróci błąd przy użyciu niepodstawionej zmiennej set +opcja wyłącza daną opcję Argumenty skryptu bash mojskrypt ala ma kota $1 =ala $2 =ma $3 =kota $0 =mojskrypt (nazwa skryptu) $# =3 (liczba argumentów) shift przesuwa parametry w lewo (pierwszy tracony) $1 =ma $2 =kota $3 =- $* - wszystkie argumenty jako jeden ciąg znaków $$ - numer aktualnego procesu, czyli skryptu $? status wyjścia ostatnio wykonywanej komendy 1

Zmienne Lokalne widziane tylko w tym skrypcie np. a=5 Globalne widziane też przez procesy potomne np. g=4 export g Odwołanie zmiennej: $a, $g (lepiej dać ${a}, ${g} jednoznaczna interpretacja) gl=10 ;./nprogram... zmienna dziedziczona tylko przez program nprogram Niektóre zmienne globalne PATH ścieżka stępu TERM typ terminala MAIL ścieżka mailboxa PAGER "stronicowacz", np. more EDITOR defaultowo wywoływany edytor --------------------------------------------------------- Wyświetlanie zmiennej na ekranie: echo $zmienna lub echo ${zmienna} Wczytanie zmiennej: read zmienna Parametry funkcji echo -n nie jest wysyłany znak nowej linii (wew. echo w bash) -e jest potrzebne w LINUXie; w Solarisie /usr/bin/echo bez tego włącza interpretację znaków specjalnych takich jak: \a czyli alert, usłyszysz dzwonek \b backspace \c pomija znak kończący nowej linii \f form feed czyli wysuw strony \n znak nowej linii \r powrót karetki \t tabulacja pozioma \v tabulacja pionowa \\ backslash \0nnn znak, którego kod ASCII ma wartość ósemkowo \0xnnn znak, którego kod ASCII ma wartość szesnastkowo Znaki specjalne \z wzięcie znaku z słownie # - odtąd końca linii komentarz * - pasowuje wolny ciąg w nazwie pliku? pasowuje 1 w. znak w nazwie pliku [a-z, abc] 1 znak spośród podanych ; - sekwencyjne wykonanie poleceń & - polecenie działa w tle, startuje następne - wyjście jednego jako wejście drugiego < > - przekierowanie danych, && - sekwencyjne, warunkowe Znaki specjalne, cd (ttt) wykonanie ttt w wewnętrznym (nowym) interpreterze poleceń `ttt` - wynik działania ttt jest zmienną, np. a=`ls -al` ( ` - znak pod "~") 'ttt' ttt jest brane słownie (' apostrof) "ttt" ttt wzięte słownie, ale po interpretacji $, `...` i \ Instrukcje warunku test wyrażenie [ wyrażenie ] zwraca 0 (prawda) lub 0 (fałsz) Operatory:! not -a and -o - or 2

if test... if [...] if inne_wyrażenie instrukcje Instrukcja if wyrażenie1 wyrażenie2 wyrażenie1 el wyrażenie2 wyrażenie3 if cd. Testowanie wyrażeń numerycznych (liczb) Testowanie napisów a eq b (tzn. a = b ) a gt b (tzn. a > b ) a ge b (tzn. a b ) a lt b (tzn. a < b ) a -le b (tzn. a b ) a -ne b (tzn. a b ) napis (prawda, gdy tekst napis niezerowy) -z napis (prawda, gdy zerowy) -n napis (prawda, gdy dłuższy od zera) nap1 = nap2 (prawda, gdy identyczne) nap1!= nap2 (prawda, gdy nie identyczne) Testowanie plików -s plik istnieje i jest niezerowy -f plik istnieje i jest zwykłym plikiem -d plik istnieje i jest katalogiem -r plik istnieje i mamy prawo czytania -w plik istnieje i mamy prawo zapisu -x plik istnieje i mamy prawo wykonania p1 nt p2 p1 nowszy niż p2 p1 ot p2 p1 starszy niż p2 Zapis skrócony ( na nie, && na tak) a=3; b=4 test $a eq $b echo 'a nie jest rowne b' if [ $a eq $b ] echo ' ' echo 'a nie jest rowne b' ------------------------------------------------------------ [ $a ne $b ] && echo 'a nie jest rowne b' if [ $a ne $b ] echo 'a nie jest rowne b' 3

case zmienna in wzorzec1) instrukcje1 wzorzec2) instrukcje2... *) instrukcje (dla spoza zakresu) esac Instrukcja case Pętla for for zmienna in wart1 wart2...wartn #po podstawieniu zmienna = wart1...wartn instrukcje Przykłady z folderów dane1, dane2 i wyniki skasować pliki z rozszerzeniem bak for i in dane1 dane2 wyniki rm $i/*.bak zmienić prawa stępu wszystkich plików w folderze for i in `ls` chmod go-rwx $i Inne pętle while warunek instrukcje #wykonywane gdy warunek true until warunek instrukcje #wykonywane póki warunek false Przerwanie pętli break przerywa działanie i wychodzi z pętli continue przerywa bieżący cykl i przechodzi na początek pętli ----------------------------------------------------------- trap polecenie nr wykonuje polecenie po otrzymaniu sygnału nr (kill nr PID) Obliczenia arytmetyczne - expr Uwaga! wynik=3 wynik1=$wynik+1 echo $wynik1 wynik2 =`expr $wynik + 1` echo $wynik2 4

expr 2 + 3 5 expr 2-3 -1 expr 10 / 3 3 expr 3 \* 8 24 expr 3 + 2 \* 8 19 ale: expr 2+3 2+3 Przykławe zadania 1. Napisać skrypt usuwający wszystkie pliki *.o z folderów pk1, pk2...pk5. Przed usunięciem nazwa pliku powinna zostać wypisana na ekranie terminala i powinno pojawić się pytanie o potwierdzenie skasowania (t/n) 2. Napisać skrypt przenoszący wszystkie pliki o rozszerzeniu podanym przez read podanego jako argument1 folderu. Jeśli podany folder nie istnieje należy go najpierw stworzyć. 3. Napisać skrypt, który we wszystkich podfolderach wyszukuje plików o nazwach podanych przez argumenty skryptu. Po znalezieniu należy wypisać komunikat: Plik o nazwie... znajduje się w folderze... Uwaga! Akcję powtarzać dla wszystkich argumentów 4. Napisać skrypt zbierający informacje o każdym podfolderze znajdującym się w folderze podanym jako argument, obejmujące: nazwę podfolderu i liczbę znajdujących się w nim plików (ls... wc l). 5. Jeśli podana jako argument nazwa jest nazwą folderu, to wylistować zawartość folderu, podając typy plików (le), w przeciwnym wypadku podać pełną informację o pliku (ls l) i typ pliku (instrukcja le) 6. Napisać skrypt sprawdzający, czy istnieje podany jako argument plik i wypisujący odpowiedni komunikat na ekranie. Jeśli plik istnieje powinien pojawić się napis: plik o podanej nazwie istnieje, w przeciwnym razie plik taki powinien zostać utworzony tak, by jego pierwszą linię stanowił napis: Plik utworzono: i bieżąca data/czas. 7. Skrypt działa z argumentem1 start/stop. Użyj instrukcji case i w przypadku start: uruchom program wczytany jako argument2 i w pliku log zapisz komunikat: program nnn uruchomiono: date W przypadku stop: zatrzymaj w/w program sygnałem 15 i zapisz w logu: Program zatrzymano: date. Uwzględnij za mało lub złe argumenty. 8. Znajdź w których folderach podanych w ścieżce stępu występuje program o nazwie podanej przez argument1. Odpowiednim komunikatem Podaj: plik... (nie) występuje w folderze... Przydatna funkcja: tr 9. Jako cel skryptu utwórz skrypt (listę poleceń) skasowania ze wszystkich podfolderów bieżącego plików *.tmp starszych niż plik c.time. 10. Poczynając od swojego folderu mowego wyszukaj najstarszego pliku w drzewie. Użyj komendy nd i nie tylko. 5