Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
LINUX - UNIX - język poleceń (Skrypty) 1. Interpreter zleceń Interpreter zleceń służy do komunikacji użytkownika z systemem. Interpreter taki najczęściej nazywany jest shell-em (pośrednictwem użytkownika). Większość systemów Unix oferuje kilka standardowych pośrednictw: Bourne ShellBourne Shell (sh) został napisany przez Stephena Bourne w Bell Laboratories i jest najstarszym shell-em Unixa. Bourne Shell jest również domyślnym shell-em w większości systemów Unix. Cecha ta spowodowała, że sh stał się standardem de facto. Bourne shell nie zawiera jednak żadnych dodatkowych udogodnień, ani jeżeli chodzi o edycję linii zlecenia, ani dodatkowych konstrukcji języka skryptów. C ShellC Shell (csh) został stworzony przez Billa Joya w University of California w Berkeley. Nazwa shell-a wzięła się z podobieństwa składni do języka do języka C. Shell ten zawiera wiele udogodnień w stosunku do Bourne Shell-a takich jak rozbudowanie składni, historia zleceń itp. Korn ShellKorn Shell (ksh) został napisany przez Davida Korna w Bell Laboratories. Jest to rozszerzona wersja shell-a Bourne'a wyposażona dodatkowo o elementy edycji linii zleceń, historię zleceń itp. BASH ShellBASH Shell (Bourne Again Shell) został stworzony przez Briana Foxa i Cheta Rameya i udostępniony na zasadach licencji GNU. Jest on powłoką wykorzystywaną w wielu systemach linuxowych jako domyślna. Jest w pełni kompatybilny z powłoką sh oraz zawiera wiele ciekawych rozwiązań przejętych od powłok Korn i C (ksh i csh). 2. Podstawowe zlecenia systemu UNIX:cat - połączenie, skopiowanie i wydrukowanie zawartości zbioru cd - zmiana bieżącego katalogu chgrp - zmiana grupy zbioru chmod - zmiana praw dostępu do zbioru chown - zmiana właściciela zbioru chsh - zmiana standardowego shell-a użytkownika cp - kopiowanie zawartości zbioru date - wydrukowanie lub ustawienie daty i czasu echo - wydrukowanie tekstu na terminalu head - drukuje początek zbioru lnk - łączenie zbiorów ls - listowanie zawartości kartoteki man - system pomocy systemu UNIX (man nazwa_polecenia) mkdir - tworzenie nowego katalogu more - “stronicowanie” wydruków mv - przeniesienie zawartości zbioru pg - “stronicowanie” wydruków ps - wydrukowanie informacji o procesach w systemie pwd - wydrukowanie bieżącej kartoteki rm - usuwanie zbioru rmdir - usuwanie katalogu tail - drukuje końcówkę zbioru wc - zliczanie znaków, słów, linii who - wypisanie listy użytkowników zalogowanych w systemie sleep - "usypia" proces 3. Elementy linii zlecenia shell-aNajprostsza linia zlecenia ma postać: zlecenie [opcje] [parametry]. Przykładem takiego zlecenia może być: ls -l *.c. Zlecenie ls wydrukuje zawartość kartoteki w "długim" formacie (opcja -l). Wydrukowane zostaną zbiory kończące się na .c (parametr *.c). Kilka zleceń może być łączone w jedną linię za pomocą znaku średnika ; np: ls *.c ; who ; ps W linii występują trzy zlecenia ls, who oraz ps oddzielone znakiem średnika. Tak połączone zlecenia będą wykonywane sekwencyjnie. Oznacza to, że najpierw wykona się zlecenia ls, po jego zakończeniu who, a na końcu ps. Programy mogą być też wykonywane niesekwencyjnie. W tym przypadku każdy program wykonuje się bez czekania na zakończenie procesu poprzedzającego. Aby wykonać zlecenia w tle należy oddzielać je znakiem & np: ls *.c & who & ps W tym przypadku zlecenie who rozpocznie się bez czekania na zakończenie procesu ls. Podobnie jest ze zleceniem ps. 4. Strumienie danychKażdy program ma skojarzone co najmniej trzy strumienie standardowe: strumień wejścia (stdin), strumień wyjścia (stdout) oraz strumień błędu (stderr). Predefiniowanym standardowym strumieniem wejściowym jest klawiatura terminala, zaś predefiniowanymi strumieniami wyjścia i błędu jest ekran. Shell-e umożliwiają przekierowania strumieni w linii zlecenia. Przekierowania wejścia dokonuje się podobnie jak w systemie DOS lub Windows przez znaki < lub << i np: program < zbior - program czyta dane ze zbioru o nazwie zbior. program << tekst - program czyta dane z następnych linii zlecenia aż do napotkania linii zawierającej tekst zapisany po znaku << (w tym przypadku słowa tekst). Jeżeli po znaku << damy znak - to linie podawane na standardowe wejście będą pozbawiane wiodących znaków tabulacji. Przekierowanie wyjścia ma postać: program > zbior - wyniki są umieszczane w zbiorze. Jeżeli zbiór istniał, to jego poprzednia zawartość będzie zastąpiona. program >> zbior - wyniki są dopisywane na końcu zbioru. Jeżeli zbiór nie istniał, zostanie utworzony. Czasami wykorzystwana jest także konstrukcja postaci: program <&cyfra oraz program >&cyfra W tym przypadku wejście lub wyjście jest skierowane do strumienia o podanym numerze. Standardowe wejście ma numer 0, standardowe wyjście 1, zaś strumień błędu 2 np: ls >&2 - przekierowuje strumień wyjścia do strumienia błędu. Istotnym jest, że przy przekierunkowywaniu strumieni można wskazać, który strumień mamy na uwadze, np: cat 2>err - przekierunkowanie strumienia błędu do zbioru Bardzo często wykorzystywanym mechanizmem jest przetwarzanie potokowe. Aby skierować strumień wyjściowy na wejście następnego procesu należy połączyć je znakiem | np: who | wc standardowe wyjście zlecenia who jest podawane na wejście zlecenia wc. Bardzo istotnym elementem języka shell-a jest mechanizm wzorców służący do specyfikowania zbiorów, które mają być parametrami zlecenia. W skład wzorca mogą wchodzić następujące elementy: * - zastępuje dowolny (w tym pusty) ciąg znaków ? - zastępuje dokładnie jeden znak [ ... ] - zastępuje określone znaki Przykładem wyrażenia może być np: rm [a-s]i?abc*.[jm] Powyższe zlecenia skasuje wszystkie zbiory, które rozpoczynają się małą literą z zakresu od „a” do „s”, następnie występuje litera „i” następnie dowolna jedna litera, następnie człon trójliterowy „abc”, następnie dowolny łańcuch znaków, następnie kropka „.” i na końcu jedna z liter „j” lub „m”. 5. ŚrodowiskoPodobnie jak w systemie DOS czy Windows, shell w systemie UNIX posiada swoje własne środowisko. Składa się ono ze zmiennych środowiska lub zmiennych shell-a. Zmienne środowiska są dostępne z poziomu shell-a oraz są eksportowane do środowisk procesów potomnych. Zmienne shell-a są dostępne tylko z poziomu samego interpretera i nie są dziedziczone przez procesy potomne. Przypisanie wartości zmiennej shell-a uzyskuje się przez wykonanie zlecenia: ZMIENNA=wartość Aby zmienna shell-a stała się zmienną środowiska musi zostać wyeksportowana. Uzyskuje się to przez zlecenie: export ZMIENNA - wyeksportowanie zmiennej o nazwie ZMIENNA Nazwy zmiennych środowiska/shell-a nie muszą składać się wyłącznie z dużych liter. Podczas logowania do systemu są ustawiane następujące zmienne środowiska: HOME - nazwa kartoteki bazowej użytkownika LOGNAME - nazwa użytkownika PATH - ścieżki poszukiwań programów SHELL - ścieżka do shella TERM - rodzaj terminala, i inne Wartości zmiennych środowiska/shell-a są dostępne przez konstrukcję: $ZMIENNA. Aby przykładowo wyświetlić wartość zmiennej o nazwie ZMIENNA należy wykonać zlecenie: echo $ZMIENNA Jeżeli zmienna nie występuje to pojawi się błąd! Zmienna może być usunięta ze środowiska za pomocą zlecenia unset np: unset ZMIENNA Jeżeli zmienna istnieje można wykorzystywać ją do zmiany wartości np: PATH=$HOME/bin:$PATH:. W tym przypadku do wartości zmiennej środowiskowej PATH dołożono „z przodu” wartość $HOME/bin, a na końcu dołączono katalog bieżący. Jeżeli nazwa zmiennej mogłaby połączyć się z resztą tekstu można użyć znaków {} np: echo poczatek${ZMIENNA}koniec. Do pracy ze zmiennymi można wykorzystać także inne konstrukcje podstawienia: ${zmienna:-wartość} - jeżeli zmienna istnieje i ma przypisaną niepustą wartość wynikiem konstrukcji jest ta wartość. W przeciwnym razie jest podstawiana „wartość”. ${zmienna:=wartość} - jeżeli zmienna nie istnieje lub jest pusta przypisuje się jej „wartość”, która jest także wynikiem podstawienia. Jeżeli zmienna ma przypisaną wartość wynikiem jest ta wartość a przypisanie nie następuje. ${zmienna:?wartość} - podobnie jak :-, lecz jeżeli zmienna nie występuje lub jej wartość jest pusta, to występuje błąd. ${zmienna:+wartość} - jeżeli zmienna występuje i ma przypisaną niepustą wartość to wynikiem jest „wartość”. W przeciwnym wypadku podstawienie nie występuje Poza zmiennymi środowiska/shell-a występują także zmienne parametryczne. Wartości parametrów wywołania skryptu podstawiane są pod kolejne parametry $1, $2, $3, ... ... |
Menu
|