Systemy operacyjne Programowanie w języku powłoki sh

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

Powłoka interpreter poleceń systemu UNIX

1 Przygotował: mgr inż. Maciej Lasota

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

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

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

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

Wprowadzenie do programowania w powłoce

Powłoka (shell) Powłoka ksh

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

Powłoka, redyrekcja, potok

Powłoka bash. Kurs systemu Unix 1

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Interpreter poleceń oraz zmienne środowiskowe

Bash - wprowadzenie. Bash - wprowadzenie 1/39

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

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

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

Technologie Informacyjne - Linux 2

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

System operacyjny Linux

Tworzenie skryptu: Skrypty powłoki

Zakład Systemów Rozproszonych

Pracownia Komputerowa wykład III

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

Programowanie skryptów powłoki

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

Wyrażenia regularne. Wyrażenia regularne 1/41

Pracownia Komputerowa wykład III

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

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

Technologie Informacyjne - Linux 3

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

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

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

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

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

Wstęp do Informatyki dla bioinformatyków

Konsola i interpreter poleceń

Narzędzia informatyczne w językoznawstwie

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

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

Przekierowanie wejścia wyjścia:

Podstawy użytkowania Linux a

Strona1. Linux. Skrypty powłoki

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

Skrypty powłoki w systemie Linux

Znaki globalne w Linuxie

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Jądro Powłoka System plików Programy użytkowe

Systemy operacyjne. Plan wykładu

Zarządzanie użytkownikami w

Użytkownicy I. Użytkownik. Głównym celem istnienia użytkowników i grup w systemie jest utrzymanie porządku i separacja uprawnień.

Współczesne systemy komputerowe

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

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

Środowisko programisty Zestaw 7

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

pozwalają na umieszczenie wielu komend w jednym pliku (z atrybutem wykonywania) - udostępnia środowisko do konfigurowania systemu i programowania

Moduł 4: Strumienie, potoki, sterowanie procesami

PODSTAWY INFORMATYKI

PODSTAWY INFORMATYKI

Tomasz Greszata - Koszalin

Podstawy programowania skryptów Sh

Pracownia Komputerowa wyk ad III

Ćwiczenie nr 14: System Linux

Pobieranie argumentów wiersza polecenia

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

Podstawy informatyki

System Linux - użytkowanie

Technologie Informacyjne - Linux 1

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

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

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Bash, skrypty. Wojciech Dudek. 15 listopada Uniwersytet Warszawski

Trochę o plikach wsadowych (Windows)

Pracownia komputerowa. Dariusz wardecki, wyk II

- wszystkie elementy - wszystkie elementy

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Tomasz Greszata - Koszalin

SPIS TREŚCI 1. WIADOMOŚCI OGÓLNE ZARZĄDZANIE SYSTEMEM LINUX WIELODOSTĘPNOŚĆ SYSTEMY PLIKÓW I STRUKTURA FOLDERÓW...

Język Python (2) Język Python (2) 1/36

Wstęp do systemów wielozadaniowych laboratorium 02 Praca w systemie plików

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

Linux: potoki, przekierowania i inne operatory sterujące w przykładach

2. System uprawnień w linuxie

Przegląd języków programowania

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

"Klasyczna" struktura systemu operacyjnego:

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ć

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

Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows

Informacje o procesach czyli polecenie "ps".

ZAJĘCIA Komendy Linux WB -> w konsoli tty2 finger exit man pwd pwd finger ls man ls. -> po 2 minusach interpretacja słowa

Linux: System Plików

LABORATORIUM 6-7 WSTĘP DO SIECI TELEINFORMATYCZNYCH SYSTEM OPERACYJNY UNIX

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Transkrypt:

Systemy operacyjne Programowanie w języku powłoki sh [2] Programowanie w języku powłoki sh Powłoka, interpreter poleceń angshell jest programem uruchamianym standardowo po otwarciu sesji użytkownika przez proces login. Powłoka jest aktywna aż do wystąpienia znaku <EOT>, który powoduje jej zatrzymanie i zgłoszenie tego faktu do jądra systemu. Każdy użytkownik otrzymuje własny i odrębny egzemplarz sh. Program sh wypisuje monit $ na ekranie, dając znać o swojej gotowości do przyjęcia polecenia (komendy). Interpreter poleceń funkcjonuje według następującego schematu: 1. wypisuje monit, 2. czeka na wprowadzenie tekstu z klawiatury, 3. analizuje wiersz polecenia i znajduje program, 4. zleca jądru wykonanie programu, 5. przyjmuje odpowiedź od jądra, ponownie wypisuje monit. [3] Inicjalizacja powłoki Inicjalizacja powłoki: 1. przypisywane są wartości zmiennym powłoki, 2. wykonywane są skrypty systemowe definiujące dalsze elementy otoczenia powłoki. shell skrypty systemowe 1. sh, ksh.profile 2. csh.login,.cshrc Rozbudowana lista plików inicjacyjnych dla interpretera zsh: 1. /etc/zprofile 2. /etc/zlogin 3. /etc/zshrc 4. /etc/zshenv... odpowiedniki kropkowe powyższych plików w katalogu domowym.

[4] Użytkownicy w systemie Unix Użytkownicy w systemie Unix superużytkownik (ang. superuser, root), pozostali użytkownicy. Użytkownik w systemie, plik /etc/passwd: nazwa użytkownika, hasło, uid (ang. user identification), gid (ang. group identification), informacja o użytkowniku, katalog domowy użytkownika, nazwa powłoki inicjowanej po otwarciu sesji. tnowak:hasło zakodowane:201:50::/usr/tnowak:/bin/sh [5] Grupy użytkowników Grupa w systemie, plik /etc/group: nazwa grupy, hasło grupy, numer grupy, lista użytkowników należących do grupy. wheel::10:tnowak,tkruk Inne zagadnienia: prawa dostępu do pliku (-rwxr-xr-x, 0755, komenda chmod), bity SUID, SGID (-r-s x x, np. komenda passwd), plik /etc/shadow. [6] Zmienne powłoki Wśród zmiennych powłoki wyróżniamy: zmienne predefiniowane z wartością jawnie przypisywaną, 2

parametry powłoki, w których gromadzone są informacje dotyczące nazwy i argumentów aktualnie wywoływanej komendy. Przykładowe zmienne powłoki sh: HOME katalog standardowy dla komendy cd, IFS (ang. Internal Field Separators) znaki separatorów rozdzielających elementy składniowe występujące w linii komendy, MAIL skrzynka pocztowa z ustawionym powiadamianiem, PATH lista katalogów, w których poszukiwane będą pliki wywoływanych komend, PS1 (ang. Prompt String 1) pierwszy znak zachęty powłoki, standardowo $, PS2 drugi znak zachęty powłoki, standardowo >, SHELL domyślny program do wywoływania jako podpowłoka, TERM rodzaj terminala, identyfikuje zestaw sekwencji sterujących właściwych dla danego terminal (np. ansi, vt100, xterm), [7] Polecenia Postać polecenia $ nazwa_polecenia arg1... arg9 $ echo $PATH Polecenia wbudowane $ PATH=$PATH:/usr/local/bin $ export PATH bezparametrowe set wyświetla wartości wszystkich zmiennych środowiska bezparametrowe export wyświetla wartości wszystkich eksportowanych zmiennych środowiska [8] Parametry powłoki Parametry powłoki $0 nazwa wywołanej komendy (cmd) 3

$1 pierwszy argument (parametr) wywołania $2 drugi argument (parametr) wywołania $9 dziewiąty argument (parametr) wywołania $* argumenty jako jeden łańcuch znaków "$*" = "$1 $2.." $@ argumenty jako osbne łańcuchy znaków "$@" = "$1" "$2".. $# liczba argumentów przekazanych przy wywołaniu lub przez set, $? stan końcowy (ang. exit status) ostatnio wykonywanej komendy, $$ numer procesu aktualnie wykonywanej powłoki, $! numer procesu ostatnio wykonywanego procesu w tle. $0-9 także: opcje przypisane powłoce przy wywołaniu lub przez set, [9] Metaznaki Podczas opracowywania nazw plików oraz przy grupowaniu komend w większe całości stosuje się znaki o specjalnym znaczeniu dla interpretera nazywane metaznakami. * dowolny łańcuch znaków nie zawierający "/",? [ ] jeden dowolny znak, każdy pojedyńczy znak ze zbioru zamkniętego w te nawiasy, [...-...] jak [ ], w zakresie od pierwszego do ostatniego podanego znaku, [!..-...] w zakresie wszystkich oprócz od pierwszego do ostatniego znaku, # komentarz, \ (back slash) przywraca poprzedzonemu metaznakowi jego normalne literalne znaczenie, $ wartość zmiennej, ; koniec komendy, łańcuch w znakach akcentu jest wykonywany jak komenda, klamrowanie apostrofami jednostki tekstu powoduje uniknięcie jakichkolwiek podstawień (substytucji), " " klamrowanie cudzysłowem jednostki tekstu powoduje uniknięcie wszelkich podstawień za wyjątkiem: $ \ [10] Interpretacja komend Interpretacja komend przez powłokę sh odbywa się w następujący sposób: 1. wprowadzenie tekstu polecenia (ciągu znaków), 2. podzielenie ciągu znaków na ciąg słów w oparciu o zawarte w IFS seperatory, 4

3. substytucja 1: zastępowanie zmiennych powłoki tzn. zastępowanie metawyrażeń o postaci ${słowo} ciągami znaków zawartymi w zmiennych wyspecyfikowanych przez słowo np. $ b=/usr/user $ ls -l prog.* > ${b}3 4. substytucja 2: rozszerzanie parametrów tzn. rozszerzenia słów zawierających metaznaki *? [ ] na odpowiednie nazwy plików w katalogu aktualnym, 5. substytucja 3: interpretacja łańcucha ujętego w znaki akcentu jako komendy i jej wykonanie. [11] Grupowanie przyjęto konwencję, że argumenty które nie są nazwami plików należy poprzedzać znakiem minus. komendy mogą być grupowane w nawiasy: nawiasy okrągłe ( ciąg-komend ) służą do grupowania komend, które będą wykonywane jako samodzielny proces. Proces ten może być również wykonywany w tle (&). nawiasy klamrowe { ciąg-komend; } służą do grupowania komend, które będą normalnie wykonywane w ramach bieżącego procesu. końcem komendy są następujące znaki: <NL> ; & [12] Przeadresowywanie wejścia/ wyjścia Po otwarciu sesji do otoczenia użytkownika należą następujące pliki: wejście standardowe (stdin) - strumień 0, wyjście standardowe (stdout) - strumień 1, standardowe wyjście błędów (stderr) - strumień 2. Znakami przeadresowywania są: > plik przekieruj stdout do pliku >> plik < plik dopisz stdout do pliku przekieruj stdin z pliku << EOT czytanie tekstu z stdin w trybie bezpośrednim, aż do wystąpienia słowa EOT n > plik przekierowanie wyjścia strumienia o deskryptorze n do pliku, n >> plik n>&m dopisanie przekierowania wyjścia strumienia do pliku, przekierowanie wyjścia strumienia n do wyjścia strumienia m, n<&m przekierowanie wejścia strumienia n do wejścia strumienia m. Procedury powłoki (skrypty) [13] Komendy powłoki zgrupowane w zwykłym pliku tekstowym mogą być wykonane poprzez: 5

$ sh [opcje] plik_z_komendami [arg...] Po nadaniu plikowi zawierającemu komendy, atrybutu wykonywalności, komendą chmod, np.: $ chmod +x plik_z_cmd można go wykonać jak komendę, bez podawania sh przed jego nazwą. $ plik_z_komendami arg... [14] Struktury sterujące do sterowania przebiegiem procedury powłoki służą instrukcje takie, jak: if, for, while, until, case możliwe jest skrócenie zapisu if, przy użyciu znaków: And-if && (gdy rezultat równy zero) Or-if (gdy rezultat różny od zera) $ cp x y && vi y $ cp x y cp z y Każda komenda umieszcza w $? status z jakim zakończyło się jej wykonanie. Status 0 oznacza pomyślne zakończenie działania procesu. Status niezerowy oznacza wystąpienie błędu podczas wykonywania się komendy. [15] Instrukcja if ogólny zapis jest następujący: przykład if ciąg_komend_1 then ciąg_komend_2 {else ciąg_komend_3} fi if cc -c p.c then ld p.o else echo "compilation error" 1>&2 fi 6

[16] Instrukcja case ogólny zapis jest następujący: przykład case słowo in wzór_1) lista_komend_1;; wzór_2) lista_komend_2;; *) lista_komend_domyślnych;; esac case $# in 0) echo usage: man name 1>&2; exit 2;; [17] Instrukcje iteracyjne (pętle) W powłoce sh instrukcje iteracyjne (pętle) występują w trzech odmianach: instrukcja for, której treść jest wykonywana jednorazowo dla każdego słowa w liście słów, instrukcja while, której treść jest wykonywana tak długo, jak długo jest spełniony warunek w while, instrukcja until, której treść jest wykonywana tak długo, aż nastąpi spełnienie warunku w until. można stosować instrukcje continue i break #!/bin/sh for i in /tmp /usr/tmp do rm -rf $i/* done [18] Przykłady różne $ cat file.dat while read x y z do echo $x $y $z done 7

#!/bin/sh i=1 while [ $i -le 5 ]; do echo $i i= expr $i + 1 done $ who -r. ru-level 2 Aug 21 16:58 2 0 S $ set who -r $ echo $6 16:58 [19] Przykład duży #!/usr/bin/zsh PATH=/usr/bin:/usr/local/bin:/bin WAIT_TIME=5. /export/home/oracle/.zshenv #sprawdz czy jest sens go sprawdzac.. PID= ps -ef grep LISTENER grep -v grep awk -e {print $2 } if test -z "$PID" then exit 0 fi # sprawdz jak dziala lsnrctl status >/dev/null 2>&1 & sleep $WAIT_TIME kill $! 2>/dev/null res="$?" if test "$res"!= "1" then kill $PID kill -9 $PID logger -p user.err Oracle LISTENER ERROR (stunned) - restarted lsnrctl start fi 8