powłoka (shell) HI6YUDVXOJF4KEIVGNMAS7LRVEDVXR3V6BFV3TQ

background image

Rozdział 3

Powłoka (shell)

3.1

Charakterystyka ogólna

Po zarejestrowaniu się w systemie użytkownik ma dostęp do systemu poprzez interpretator

poleceń zwany powłoką (ang. shell). Z tego poziomu może uruchamiać programy aplikacyjne

bądź ogólnie dostępne programy systemowe.

Powłoka w systemie UNIX zapewnia komunikację miedzy użytkownikiem a systemem. Jest

ona w stosunku do jądra systemu zwykłą aplikacją, często dopasowywaną do indywidualnych

potrzeb i preferencji użytkownika.

W działającym systemie zazwyczaj dostępnych jest kilka różnych powłok, np. Bourne Shell

sh

, Berkeley C Shell — csh, czy bardzo ostatnio popularny Bourne Again Shell — bash. Różnice

miedzy nimi polegają głównie na sposobie programowania w języku powłoki, różnią się również

możliwościami oferowanych usług i udogodnień związanych z pracą w systemie.

Powłoka jest inicjowana automatycznie po zarejestrowaniu się użytkownika w systemie. Skoro

jest to zwykła aplikacja, to jej nowy egzemplarz można uruchomić w dowolnej chwili poleceniem

np. sh.

Powłoka przyjmuje polecenie od użytkownika, dekoduje je i przekazuje do jądra w celu wy-

konania. Pracę powłoki można przedstawić algorytmicznie jako ciąg następujących czynności:

1. wysłanie znaku gotowości na terminal (zazwyczaj: $, % lub #);

2. przyjęcie polecenia od użytkownika;

3. zdekodowanie polecenia, odszukanie w katalogach odpowiadającego mu programu;

4. przekazanie polecenia do jądra, w celu uruchomienia odpowiedniego procesu (lub procesów)

realizującego polecenie i oczekiwanie na jego zakończenie;

28 października 2001 roku— wersja 0.2

38

background image

5. przyjęcie odpowiedzi od jądra i przekazanie tych wyników użytkownikowi, powrót do punk-

tu pierwszego .

Czynności te wykonywane są w pętli aż do napotkania polecenia kończącego działanie powłoki

lub odebrania znaku Ctrl-D, oznaczającego koniec pliku (wejściowego).

W niniejszej pracy skoncentrowano się głównie na shellu Bourne’a, ponieważ jest to powłoka

najczęściej spotykana, część przykładów podano również dla bash’a, gdyż jest to w tej chwili

chyba najwygodniejsza powłoka.

3.2

Programowanie w języku powłoki

Powłoka umożliwia konstrukcję bardziej złożonych struktur programowych niż podane we wcze-

śniejszym rozdziale. Są to:

operowanie zmiennymi;

tworzenie procedur powłoki (tzw. skryptów );

używanie struktur sterujących;

wykorzystywanie poleceń wewnętrznych.

Tworzenie procedur powłoki, używanie struktur sterujących oraz wykorzystywanie poleceń we-

wnętrznych opisano szczegółowo w rozdziale ??.

3.2.1

Grupowanie poleceń

Polecenia można zagnieżdżać za pomocą nawiasów okrągłych () lub grupować w nawiasach

klamrowych



.

Nawiasy okrągłe służą do grupowania poleceń, które będą wykonywane jako samodzielny

proces, np. proces wykonywany w tle, wówczas znak & lub przeadresowujące wejście/wyjście są

obowiązujące dla całej grupy poleceń. Stan końcowy (exit status) jest wynikiem powstałym po

wykonaniu ostatniego polecenia.

Nawiasy klamrowe służą do grupowania poleceń wykonywanych w shellu bieżącym. Znaki



traktowane są przez powłokę jak polecenia, tzn. po nich koniecznie musi wystąpić znak spacji,

a ostatnie polecenie w klamrach musi zostać zakończone średnikiem. Nawiasy klamrowe mogą

również służyć do oddzielenia zmiennej od innych znaków.

Przykład 3.2.1

Poniższa sekwencja poleceń spowoduje wyświetlenie napisu: To jest test.

28 października 2001 roku— wersja 0.2

39

background image

a=’To jest ’

echo "$



a



test"

Ciąg poleceń zawarty w nawiasach okrągłych jest wykonywany jako samodzielny, podrzędny

proces powłoki. Zmiany w otoczeniu powstałe w tym procesie nie będą więc oddziaływały na

aktualny proces powłoki. Natomiast polecenia zawarte w nawiasach klamrowych wykonywany

jest w aktualnym shellu. Efekty powstałe poprzez zastosowanie nawiasów () i



przedstawia

przykład ??.

Przykład 3.2.2

$

pwd

/home/students

$

(cd /bin ; ls mkdir)

mkdir

$

pwd

/home/students

$

cd /bin ; ls mkdir;



mkdir

$

pwd

/bin

3.2.2

Zmienne powłoki

Nazwy zmiennych stanowią ciągi znaków zaczynające się od litery i mogą składać się z liter, cyfr

i znaków podkreślenia (_). Nazwy zmiennych muszą zawierać co najmniej jeden znak. Przypisa-

nie wartości zmiennej wykonuje się w następujący sposób:

zmienna

=wartość

Domyślnym typem zmiennych jest typ napisowy i w zasadzie nie używa się innych typów do

określenia zmiennych. Dodatkowo shell bash oferuje komendę typset, za pomocą której można

deklarować typ zmiennej. Oto wybrane możliwości tej komendy:

-i

- typ integer;

-u

- wielkie litery;

-l

- małe litery;

-x

- zmienna eksportowalna;

28 października 2001 roku— wersja 0.2

40

background image

-r

- tylko do czytania.

Przykład 3.2.3

Przykłady przypisania wartości zmiennym:

$ os=LINUX

$ sys=586

$ user=‘who am i‘

dodatkowo w bash:

$ typeset -i sys=586

$ typeset -u os=Linux

$ typeset +u os

Aby odwołać się do wartości zmiennej należy poprzedzić ją znakiem $.

Do wyświetlania wartości zmiennych globalnych służy polecenie env, natomiast do wyświetlenia

zmiennych lokalnych służy polecenie set. Poleceniem echo można wyświetlić wartości pojedyn-

czych zmiennych.

Dodatkowo bash oferuje do wyświetlania zawartości zmiennych polecenie print, a do podsta-

wienia wyniku polecenia jako wartości zmiennej oferuje konstrukcję: $(polecenie ).

Przykład 3.2.4

$

os=LINUX

$

sys=586

$

echo $os na $sys

LINUX na 586

$

print $os

LINUX

Przykład 3.2.5

Ustawianie ścieżki przeszukiwań dla użytkownika zgłaszającego się do systemu. Inna ścieżka

przypisana będzie użytkownikowi root, a inna pozostałym użytkownikom systemu.

if [ "$USER" != "root" ]; then

PATH=$HOME/bin:$PATH

else

PATH=/etc:/usr/etc:$PATH

fi

28 października 2001 roku— wersja 0.2

41

background image

Zmienne predefiniowane

Powłoka posiada szereg zmiennych o wartościach zdefiniowanych pierwotnie (predefiniowanych).

Należą do nich między innymi zmienne PS1 i PS2 (monity systemowe), HOME (nazwa katalogu

osobistego), PATH (zbiór katalogów przeszukiwanych przez system operacyjny w celu znalezienia

programów) i wiele innych. Wartość tych zmiennych może być zmieniana przez użytkownika.

Jeśli pewne zmienne są używane w każdej sesji użytkownika, najwygodniej zapisać je w pliku

.profile

, który powinien znajdować się w katalogu osobistym użytkownika. Plik ten definiuje

prywatne środowisko użytkownika, a jest wykonywany zawsze w momencie uruchomienia sesji.

Plik ten może zawierać oprócz definicji zmiennych również polecenia, które będą wykonywane

zawsze po zarejestrowaniu się użytkownika.

Inne zmienne predefiniowane przydatne przy wykonywaniu skryptów shell’a przedstawia roz-

dział ??.

Zakres ważności zmiennych

Zakresem ważności zmiennych jest standardowo aktualny proces powłoki. Jeżeli zakres ten ma

zostać rozszerzony, to zmienna musi zostać przesłana do procesów podrzędnych poleceniem:

export zmienna

Instrukcja readonly

Instrukcja readonly służy do określenia zmiennych, których wartości nie mogą być zmieniane.

Zmiennych deklarowanych jako readonly nie można usunąć ze środowiska. Atrybut readonly

nie jest przenoszony do shelli potomnych. Wydanie polecenia readonly bez argumentów spo-

woduje wyświetlenie listy zmiennych z ustawionym atrybutem readonly.

Przykład 3.2.6

$

readonly HOME

$

HOME=.

HOME: read-only variable

Dodatkowe informacje dotyczące zmiennych zawiera rozdział ??.

28 października 2001 roku— wersja 0.2

42

background image

3.3

Substytucja tekstów

Zasady zastępowania zmiennych powłoki występujących w linii polecenia ich wartościami (sub-

stytucja parametrów

), przedstawia rozdział ??. Rozdział 2.2.3 omawia zasady rozszerzania nazw

plików zawierających metaznaki * ? [] (substytucja nazw ).

Przed wykonaniem polecenia powłoka dokonuje substytucji parametrów, następnie substy-

tucji nazw i dopiero tak rozszerzone argumenty przekazywane są do wykonania wywołanemu

poleceniu.

Jeśli substytucja parametrów lub substytucji nazw ma nie zostać dokonana, to odpowiedni

łańcuch znaków należy ująć w znaki cudzysłowu, wzgl. pojedynczy znak w łańcuchu poprze-

dzić symbolem lewego ukośnika \. Substytucja tekstów zawartych w apostrofach, cudzysłowach

i akcentach w literaturze nosi nazwę mechanizmów klamrowania (ang. quoting mechanisms).

Mechanizm ten używa następujących znaków:

\

— lewy ukośnik — zabiera znaczenie występującemu po nim znakowi.

— apostrof — blokuje znaki specjalne do wystąpienia następnego apostrofu.

"

— cudzysłów — blokuje specjalne znaczenie wszystkich znaków poza $ (substytucja

zmiennej) i ‘ (substytucja wyników polecenia).

— akcent — łańcuch zawarty między dwoma akcentami traktowany jest jak komenda i

jest wykonywany.

Przykład 3.3.7

$ echo \

> ^D

$ echo ’\’

\

$ echo \’

$ _

Przykład 3.3.8

Wypróbuj poniższe polecenia:

$ echo ’Jesteśmy w katalogu $HOME’

$ echo "Jesteśmy w katalogu $HOME"

$ echo ‘Jesteśmy w katalogu $HOME‘

28 października 2001 roku— wersja 0.2

43

background image

$ echo ’Dzisiaj jest ‘date‘’

$ echo "Dzisiaj jest ‘date‘"

Tylko w drugim przypadku z każdej pary nastąpi substytucja, odpowiednio nazwy katalogu

domowego i bieżącej daty.

Przykład 3.3.9

W systemie V i BSD polecenie echo wywołuje się z innymi parametrami, aby nie przenosiło

kursora do nowej linii.

BSD:

echo -n Wciśnij [t] aby kontynuować; read odp

SysV:

echo Wciśnij [t] aby kontynuować \c; read odp

Oto fragment skryptu, uniezależniający działanie polecenia echo:

if [ "’echo -n ’" = "-n" ]; then

n=""

c="\c"

else

n="-n"

c=""

fi

Wywołanie: echo $n komunikat $c

28 października 2001 roku— wersja 0.2

44


Wyszukiwarka

Podobne podstrony:
powłoka (shell)
Powłoka (Shell) BASH
Ćw 3 wytwarzanie powłok metalicznych na podłożu metalicznym i niemetalicznym
iR Shell 3 9 User Guide
5 Kolejność ruchów do masażu powłok i narządów jamy brzusznej
8 Spawalnicze metody nakładania powłok
06 Powloki konwersyjne i barwienie metali
Outline 610 Shell Programming
PORÓWNANIE WYBRANYCH TEORII ANALIZY WYTRZYMAŁOŚCIOWEJ KOMPOZYTOWYCH PŁYT I POWŁOK
Nanoszenie powlok id 313546 Nieznany
Badanie właściwości aplikacyjnych i eksploatacyjnych powłok polimerowych - sprawozdanie, metody bada
powłoki natryskiwane, MBiM
007 Podstawowe rodzaje wykończeń i powłok ochronnych
ORGANIZM CZŁOWIEKA W LICZBACH, Sprawdziany i Odpowiedzi gimnazjum, Sprawdziany z odpowiedziami z bio
Wzor laplacea dla powlok
powloki
Powłoki ochronne
21 odnawianie powłok ochronnych NXNLJBZXDCSRRJAO27O2VEQRFXDJXAJ32FSLLFY

więcej podobnych podstron