Linuks skrypty Część teoretyczna

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

Interpreter poleceń oraz zmienne środowiskowe

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

1 Przygotował: mgr inż. Maciej Lasota

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

System operacyjny Linux

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

Pracownia Komputerowa wykład III

Powłoka bash. Kurs systemu Unix 1

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

Powłoka (shell) Powłoka ksh

Powłoka interpreter poleceń systemu UNIX

Wprowadzenie do programowania w powłoce

Programowanie w języku Python. Grażyna Koba

Ćwiczenie nr 14: System Linux

1 Podstawy c++ w pigułce.

Środowisko programisty Zestaw 7

Przekierowanie wejścia wyjścia:

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Technologie Informacyjne - Linux 3

Programowanie skryptów powłoki

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Skrypty powłoki w systemie Linux

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

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

1 Podstawy c++ w pigułce.

Systemy operacyjne 11

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?

Technologie Informacyjne - Linux 2

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

Wstęp do Informatyki dla bioinformatyków

Strona1. Linux. Skrypty powłoki

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

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

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

Trochę o plikach wsadowych (Windows)

Pracownia Komputerowa wykład III

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

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

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

Zakład Systemów Rozproszonych

- wszystkie elementy - wszystkie elementy

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

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

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

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

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

Tworzenie skryptu: Skrypty powłoki

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.

Umieszczanie kodu. kod skryptu

Wprowadzenie do Scilab: podstawy języka Scilab

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

Kurs pisania skryptów w powłoce BASH

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

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

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

Podstawy Programowania C++

Cw.12 JAVAScript w dokumentach HTML

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

1. shell co to i co umożliwia, jakie są shell e. 2. skrypty powłoki. crone dr inż. Anna Zatwarnicka Skrypty i crone

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

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

Podstawy programowania w Bash'u

Zakład Systemów Rozproszonych

Ćwiczenie 1. Wprowadzenie do programu Octave

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

Podstawy informatyki

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

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

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

PODSTAWY INFORMATYKI

XML extensible Markup Language 7

Programowanie obiektowe

Technologie informacyjne lab. 4

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

Narzędzia informatyczne w językoznawstwie

Wprowadzenie do programowania shella (bash)

BASH - WPROWADZENIE Bioinformatyka 4

Wstęp do systemu Linux

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

Bash - instrukcje warunkowe, pętle i funkcje

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

System operacyjny Linux

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

JAVA?? to proste!! Autor: wojtekb111111

lekcja 8a Gry komputerowe MasterMind

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Lab 9 Podstawy Programowania

Znaki globalne w Linuxie

Pracownia komputerowa. Dariusz wardecki, wyk II

Blockly Kodowanie pomoc.

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Wstęp do systemu Linux

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

Programowanie w BASH u Skrypt do ćwiczeń

Ćwiczenie 1. Wprowadzenie do programu Octave

Należy ściągnąć oprogramowanie Apache na platformę

Transkrypt:

Linuks skrypty Część teoretyczna Zmienne środowiskowe Interpreter poleceń nazywany inaczej także powłoką systemową pośredniczy pomiędzy użytkownikiem a funkcjami systemu operacyjnego. Powłoka systemowa pobiera dane i polecenia od użytkownika i przekazuje je do wykonania do jądra systemu operacyjnego. Dostępnych jest wiele różnych powłok, z których najpopularniejsze wydają się następujące: interpreter Korna uruchamiany poleceniem ksh, interpreter tcsh oraz najpopularniejszy i najpowszechniej obecnie stosowany bash (ang. Bourne Again Shell). Zmienne środowiskowe to bardzo wygodny i uniwersalny sposób konfigurowania i parametryzowania powłok systemowych i za ich pomocą także innych programów. Dostępne zmienne środowiskowe tworzą tzw. środowisko wykonania procesu środowisko to jest kopiowane do wszystkich nowych procesów, a więc modyfikacje zmiennych wykonane w powłoce są widoczne we wszystkich programach uruchomionych przy użyciu tej powłoki. Polecenie systemowe set pozwala wyświetlić wartości wszystkich zmiennych środowiskowych, a polecenie unset usuwa zmienną środowiskową, oto przykład: unset SYSTEM Jak wspomniano środowisko wykonania procesu jest przekazywane do procesów potomnych jednak nie wszystkie zmienne powłoki muszą być przekazywane do uruchamianych programów. Zmienne, które są przekazywane nazywa się zmiennymi eksportowanymi, a zmienne, które nie są przekazywane, nazywa się zmiennymi lokalnymi. Z reguły nowo tworzone zmienne są początkowo zmiennymi lokalnymi i niezbędne jest jawne wskazanie, że mają być zmiennymi eksportowanymi. Nazywa się to eksportowaniem zmiennych i jest realizowane przez poleceniem: export lista_zmiennych Każdy użytkownik może łatwo (np. poleceniem set) zweryfikować, że w systemie jest zdefiniowanych wiele zmiennych środowiskowych, oto znaczenie podstawowych z nich: HOME ścieżka i nazwa katalogu domowego użytkownika; USER nazwa zalogowanego użytkownika; PATH ścieżki poszukiwań programów; PS1 postać znaku zachęty użytkownika; SHELL pełna ścieżka do domyślnego interpretatora poleceń użytkownika Praca ze skryptami Skrypty powłoki to pliki tekstowe, które zawierają ciągi poleceń dla powłoki systemowej. Współczesne powłoki pozwalają także aby skryty zawierały konstrukcje programistyczne, takie jak instrukcje warunkowe czy pętle, polecenia pozwalające na interaktywną prace skryptu, czy też przekazywanie argumentów ich wywołania. Skryty są bardzo pomocnym rozwiązaniem kiedy istnieje konieczność wykonywania złożonych poleceń i poleceń, które są powtarzane okresowo. Skrypty mogą być parametryzowane argumentami ich wywołania oznacza to, że podczas uruchamiania skryptu można przekazać do niego dowolną ilość dowolnych danych. Do argumentów wywołania można się odwoływać w skryptach za pomocą tzw. zmiennych pozycyjnych, oznaczanych: 1,2,3...9. Każda zmienna pozycyjna przechowuje tekst przekazany za pośrednictwem odpowiadającemu jej argumentu wywołania pierwszy argument dostępny jest w zmiennej pozycyjnej 1 itd.

Do stworzenia skryptu używamy dowolnego edytora tekstu lub tworzymy pusty plik: touch nazwa_skryptu a następnie nadajemy mu prawa do wykonania: chmod 755 nazwa_skryptu Otwieramy skrypt edytorem i wpisujemy komendy powłoki systemowej, które chcemy wykonać jedna po drugiej. Wpisz następującą zawartość: Oto przykład skryptu, który wyświetla wartości pierwszych trzech argumentów jego wywołania: - decyduje, który interpreter poleceń wykona dany skrypt (może być python, perl, node js, i inne) # pierwszy skrypt - komentarz echo argument nr 1: $1 echo argument nr 2: $2 echo argument nr 3: $3 Wywołanie z parametrami./skrypt jeden "dwa i pół" trzy Przykład 2: echo 'To jest tekst' echo "A to drugi" zmienna="cześć" echo "Wartość zmiennej to: $zmienna" echo 'Pojedynczy cudzysłów i $zmienna' echo "Umieszczenie zmiennej wewnątrz tekstu: " echo "część-stała{$zmienna}cośzazmienną, lub " echo "tylko sufiks, ${zmienna}i-coś-za-zmienną" uzytkownik= Zosia echo "Ścieżka to: /home/{$uzytkownik}/pliki " Następnie wykonaj plik wpisując w konsoli./plik (w konsoli przechodzimy do katalogu gdzie jest plik lub wpisujemy sciezke). Zobaczysz coś takiego: To jest tekst A to drugi Wartość zmiennej to: cześć Pojedynczy cudzysłów i $zmienna Polecenie echo wyświetla tekst, jeżeli jest on w podwójnym cudzysłowie - będzie parsowany przez powłokę (zmienne zostaną zamienione na ich wartości) jeżeli pojedyncze - tekst nie będzie parsowany przez powłokę. Zmienną deklarujemy: zmienna = "wartość"

Zmienną można też wyświetlić bezpośrednio: echo $zmienna Interakcja z użytkownikiem: read zmienna polecenie które czeka na wpisaną przez użytkownika wartość i wczytuję ją do zmienna. Przykład: echo -e "Hi, please type the word: \c " read word echo "The word you entered is: $word" Operacje arytmetyczne: Polecenie let jest poleceniem używanym w celu wykonywania operacji na wartościach arytmetycznych. Używając go można porównywać dwie wartości i wykonywać działania takie jak dodawanie, odejmowanie czy mnożenie. Tego typu operacje matematyczne są często używane w programach w celu zarządzania strukturami kontrolnymi lub wykonywaniem koniecznych obliczeń. Polecenie let może być oznaczone przy użyciu słowa kluczowego let lub podwójnego nawiasu. Typowy sposób wykorzystania polecenia składa się ze słowa let po którym następują dwie wartości numeryczne, oddzielone operatorem arytmetycznym lub relacyjnym w poniższy sposób: $ let 5 + 7 To samo można zapisać przy pomocy podwójnego nawiasu: $ ((5 + 7)) Polecenie let automatycznie zakłada, że operatory są arytmetyczne lub relacyjne. Nie trzeba więc umieszczać w cudzysłowie operatorów powłoki. Polecenie to również automatycznie oblicza wartość zmiennych i przekształca ją na wartość arytmetyczną. Oznacza to, że można wpisywać operacje arytmetyczne jako proste wyrażenia matematyczne. W następnym przykładzie polecenie let mnoży 4 przez 8. Wynik przesłany jest do standardowego wyjścia i zostaje wyświetlony na ekranie. $ let 4*8 36 Jeżeli zostawia się odstępy pomiędzy elementami wyrażenia, trzeba umieścić je w cudzysłowie: $ let 4*8 Ważną cechą polecenia let jest fakt, że wynik operacji można umieścić w zmiennej np. $ let iloczyn = 5 *23 $ echo $iloczyn 115

Instrukcja warunkowa: Składnia tej instrukcji jest następująca: if warunek then instrukcje wykonywane jeśli warunek zostanie spełniony else instrukcje wykonywane jeśli warunek nie zostanie spełniony fi W polu warunek można używać następujących operacji: PORÓWNANIA LICZBOWE -gt: większy od -lt: mniejszy od -ge: większy, równy od -le: mniejszy, równy od -eq: równy -ne: różny od PORÓWNANIA TEKSTOWE -z: sprawdza czy ciąg jest pusty -n: sprawdza wartość ciągu =: równy!=: różny Str: sprawdza czy ciąg jest zerowy OPERACJE LOGICZNE -a: Logiczne i (zamiast -a można stosować &&) -o: Logiczne lub (można stosować też )!: Logiczne nie TESTY NA PLIKACH -f nazwapliku: Plik istnieje i jest zwykłym plikiem -s: Plik nie jest pusty -r: Plik jest możliwy do odczytu -w: Plik może być modyfikowany -x: Plik może być uruchamiany -d: Jest katalogiem -h: Jest dowiązaniem symbolicznym -c: Nazwa odnosi się do urządzenia Pętle. Skrypty powłoki mogą także zawierać pętle podstawowe dwie z nich to pętla for oraz while. Pętla for wykonywana jest z góry określoną ilość razy, a jej ogólna składnia jest następująca: for zmienna in lista do instrukcje do wykonania done Wykonanie pętli powoduje przypisywanie zmiennej zmienna kolejnych wartości wymienionych na liście lista; ilość iteracji, jest zatem zależna od długości podanej listy. Jako listę można pętli for można podawać wzorce uogólniające powłoki. Poniższy przykład skryptu prezentuje zastosowanie pętli for do usunięcia wszystkich plików z rozszerzeniem.tmp z katalogu bieżącego: for FILE in *.tmp do rm -v $FILE done

Ilość iteracji powyższej pętli bezie zatem determinowana ilością plików z rozszerzeniem *.tmp, które utworzą listę wartości dla zmiennej FILE. Realizacja pętli numerycznej z zastosowaniem pętli for jest możliwa z użyciem programu seq(1), który wypisuje kolejne liczby, np.: for N in `seq 1 10`... spowoduje dziesięciokrotne wykonanie pętli. Pętla while pozawala na realizację pętli, dla których ilość iteracji nie jest znana z góry, jej składnia dla skryptów powłoki jest następująca: while warunek do instrukcje do wykonania done Warunek może być dowolnym poleceniem i najczęściej jest konstruowany tak jak w przypadku instrukcji warunkowej z zastosowaniem programu test. Przykładem zastosowania pętli while może być skrypt wypisujący na ekranie wartości wszystkich argumentów wywołania skryptu (niezależnie od ich liczby). Pętla taka będzie wykorzystywała polecenie shift(1), które powoduje przesunięcie argumentów oto skrypt: while [ -n $1 ] do echo $1 shift done Warunkiem wykonania pętli jest sprawdzenie, czy pierwszy argument wywołania skryptu ma niezerową długość jeśli skrypt został uruchomiony bez żadnych argumentów, to pętla nie zostanie wykonana. Jeśli natomiast skrypt został wykonany z argumentami, to w pierwszym wykonaniu pętli zostanie wyświetlona wartość pierwszego argumentu, a następnie nastąpi przesunięcie argumentów w lewo poleceniem shift (drugi argument stanie się pierwszym, trzeci drugim itd.). Pętla zakończy się jeśli zostaną wyświetlone i przesunięte wszystkie argumenty (zmienna pozycyjna $1 będzie miała wówczas zerową długość). Obie zaprezentowane pętle mogą zostać przerwane poleceniem break(1). Funkcje - bardzo przydatne ponieważ pozwalają nam na wielokrotne używanie kodu oraz dzielenie go na mniejsze części - odpowiadające tylko za jedną rzecz np. wysyłanie e-maila. Funkcja może również zwracać wartość a więc przekazywać nam wynik obliczeń lub informować czy polecenia przez nią wykonywane zostały zakończone poprawnie. Używamy do tego instrukcji return. Zwrócona wartość znajduje się w zmiennej $?. Można także przekazać parametry do funkcji. Przykład skryptu z funkcjami: function dodaj { wynik=`expr $1 + $2` return $wynik - zwracanie wyniku }

dodaj 1 2 - przekazanie parametrów echo "Wynikiem dodawania jest $?" Komenda cut służy do przetwarzania tekstu. Możesz użyć jej aby wydobyć jakiś tekst z pliku poprzez wybranie kolumn. Utwórzmy plik tekstowy test.txt o zawartości: Lorem ipsum. To jest tekst przykładowy.. Przykłady: cut -c1-3 test.txt wyodrębnia kolumny od 1 do 3 czyli będzie: Lor To cut c-8 test.txt Lorem ip To jest cut c- test.txt cała linia Opcja f i d: -f określa, które słowo mamy wyodrębnić, a opcja d jaki jest znak rozdzielający słowa między sobą w danym pliku. $ cut -d':' -f1 /etc/passwd wyszczególnia nazwę użytkownika. Podstawienie pod zmienną komendy poprzez nawiasy: () oraz backstik: ``. files="$(ls)" web_files=`ls public_html` echo "$files" # potrzeba cudzysłowów aby zachować układ linii w pliku echo "$web_files" X=`expr 3 \* 2 + 4` # expr oblicza wyrazenie arytmetyczne. echo "$X" Bez cudzysłowów znak nowej linii zostaje zastąpiony spacją. Część praktyczna zadania ćwiczeniowe: I. Za pomocą skryptu stwórz w katalogu domowym studenta cztery katalogi: kat1, kat2, kat3, kat4 II. W katalogu nr 1 z pomocą skryptu stwórz plik tekstowy i zapisz w nim kilka linijek tekstu, następnie zamknij plik. Ponownie go otwórz i przepisz tekst na konsolę. Na koniec wyświetl liczbę słów, linii i bajtów dla danego pliku. Tę samą czynność zrób dla katalogu nr 2 (możesz wykorzystać funkcję z parametrami) III. W pliku testowy.txt zamień wszystkie litery a na k. (Pomoc na stronie http://landoflinux.com/linux_bash_scripting_substring_tests.html) IV. Napisz skrypt proszący o nazwę szukanego słowa oraz pliku tekstowego do przeszukania V. Utwórz katalog img. Skopiuj do niego z ftp wszystkie pliki *.JPG; Wyobraź sobie, że są to pliki, które właśnie skopiowałeś z karty pamięci aparatu i chcesz je posortować w katalogach o nazwie zgodnej z datą Wiesz, że: W pakiecie ImageMagick znajduje się program identify, służący do podglądu metadanych zdjęć, w tym danych exif

Dane exif zawierają datę utworzenia zdjęcia Zainstaluj wspomniany pakiet i uruchamiając identify -verbose nazwa-zdjecia.jpg sprawdź jakie dane są wyświetlane. Odnajdź wpis zawierający datę wykonania zdjęcia. Za pomogą polecenia grep przefiltruj wyjście tego programu tak, aby jedyną wyświetlaną linią była ta zawierająca datę. Za pomocą polecenia cut spróbuj wyciąć datę, użyj parametrów dznak (znak oddzielający) oraz fliczba (czyli numer kolumny). Za pomogą składni zamiany w ciągach możesz zastąpić dwukropki rozdzielające pola daty myślnikami: ${DATA//\:/-} Masz już wszystkie potrzebne informacje. Napisz skrypt, który dla wszystkich plików *.JPG w katalogu img sprawdzi datę ich utworzenia, jeżeli to konieczne, utworzy katalog o nazwie takiej jak data, a następnie przeniesie ten plik do niego. Po wykonaniu zadania wyświetl wynik polecenia ls R w katalogu img i wyślij plik sort.sh na serwer ftp. VI. Wyobraź sobie, że pracujesz w firmie programistycznej jako administrator serwera testowego dla developerów. Wszyscy programiści mają na tym serwerze swoje konta i należą do grupy users. Na serwerze jest uruchomiony serwer www, który dla każdego z programistów udostępnia wszystkie jego projekty testowe. Wszystkie projekty przechowywane są w katalogach /home/nazwaużytkownika/www/nazwa-projektu/. Napisz skrypt, który przyjmuje dwa parametry: nazwę użytkownika oraz nazwę projektu i: 1. tworzy plik konfiguracyjny serwera na podstawie wzorca zamieszczonego niżej i zapisuje go w pod nazwą /etc/konfiguracja-www/projekty/nazwauzytkownika_nazwa-projektu.conf 2. Tworzy katalog bazowy dla projektu według wzorca: /home/nazwa-użytkownika/www/nazwa-projektu/. Wzorzec pliku konfiguracyjnego: <VirtualHost *:80> ServerName nazwa-uzytkownika.nazwa-projektu.firma.pl DocumentRoot /home/nazwa-użytkownika/www/nazwa-projektu </VirtualHost> Uwaga: Katalog /etc/konfiguracja-www/projekty/ może nie istnieć, w takiej sytuacji należy go utworzyć przed wykonaniem zadania. Powyższa konfiguracja jest bardzo uproszczona i służy wyłącznie jako przykład. Następnie napisz skrypt, który dla wszystkich użytkowników z grupy users utworzy projekty przekazane jako kolejne parametry skryptu. Skrypt wewnętrznie powinien użyć skryptu stworzonego powyżej.