System operacyjny UNIX

background image

System operacyjny UNIX



1 Informacje wstępne

System operacyjny UNIX

Prof. dr hab. Grzegorz Kamieniarz

Zakład Fizyki Komputerowej

Wydział Fizyki UAM

LITERATURA:

[1]

J.C. Armstrong, D. Taylor,

”UNIX dla każdego”

, Helion, Gliwice 2000

[2]

S. Moritsugu,

”Poznaj UNIX”

, MIKOM, Warszawa 2000

[3]

M.K. Johnson, E.W. Troan,

”Oprogramowanie użytkowe w systemie LINUX”

,

WNT, Warszawa 2000

[4]

Z. Królikowski, M. Sajkowski,

”System operacyjny UNIX ...”

, NAKOM, Poznañ

2000

Dla kogo przeznaczony jest ten kurs?

Kurs ten jest przeznaczony dla studentów
Wydziału Fizyki UAM uczęszczających na
wykład

"System Operacyjnu UNIX"

, który

jest prowadzony przez prof. dr hab. Grzegorza
Kamieniarza.

Podstawowa obsługa

Klikając na przycisk treść, w górnej części ekranu po
lewej stronie, ujrzysz spis wszystkich rozdziałó
oraz podrozdziałów wchodząc w pełen widok.

Nawigacja po systemie odbywa się za pomocą
przycisków:

- przechodzi do kolejnej strony kursu

Czego można się dowiedzieć z kursu ?

Uczestnicząc w tym kursie dowiesz się o

background image



2 Charakterystyczne cechy systemu UNIX

podstawowych właściwościach systemu
operacyjnego UNIX. Nauczysz siê wykonywania
operacji na plikach, poznasz edytory vi oraz sed
i emacs. Zapoznasz się z powłokami systemu i
skryptami powłokowymi. Poznasz obsługę
programów telnet i ftp. Nauczysz się
wyszukiwać informacje czy drukować w
systemie. Kurs porusza jeszcze kilka innych
ważnych zagadnień. Szczegółową zawartość
kursu możesz znaleźć w spisie treści

- przechodzi do poprzedniej strony kursu

- wraca na początek rozdziału

Podstawowe kolory używane w kursie:

- oznacza pole z przykładem

- oznacza pole z uwagami

- nagłówek tabeli

Czas trwania kursu?

Kurs ten jest odpowiednikiem kursu
stacjonarnego trwającego 30 godzin przez
jeden semestr.

Zalecane wymagania systemu

Aby w jak najbardziej efektywny sposób można by
korzystać z kursu zaleca się następujące parametry
systemu:

A.

Przeglądarkę Microsoft Internet Explorer 5.5

B.

Stałe łącze internetowe o szybkości przynajmniej

56Kbps lub 128Kbps. Oczywiście kurs również
dostępny, gdy szybkość łącza będzie mniejsza. Jednak
może to spowodować, że czas ściągania dokument
lub ładowania grafiki może być stosunkowo długi

C.

Zalecana rozdzielczość ekranu to 1024x768 pixeli.

-

wielodostępność

- liczba użytkowników zależy głównie od mocy obliczeniowej sprzętu i

wynosi zazwyczaj od 16 do kilkuset

-

wieloprocesowość

(wielozadaniowość) – jednostkami aktywnymi w systemie są procesy

pracujące współbieżnie, przy wykorzystaniu różnych mechanizmów synchronizacji i
komunikacji

-

hierarchiczny system plików

, z jednolitym potraktowaniem plików zwykłych, katalogów i

plików opisujących urządzenia zewnętrzne

-

wykonywanie operacji wejścia/wyjścia niezależnie od typu urządzeń zewnętrznych

-

duża liczba programów narzędziowych

, tj. kompilatorów języków programowania (C,

Pascal, Fortran 77, Basic, Cobol) wraz z otoczeniem wspomagającym uruchamianie
programów

background image

-

duża liczba programów usługowych

-

przenoszenie oprogramowania systemowego dzięki zapisowi w języku C

Każde polecenie jest programem w systemie UNIX.

Flaga – argument wywołania programu w systemie UNIX, który modyfikuje jego działanie

(argumenty zawsze należy poprzedzić znakiem '-' myślnikiem).

Katalog domowy – katalog, do którego przenosi nas system bezpośrednio po zalogowaniu.

Informacje o użytkownikach.

Do uzyskania informacji o użytkownikach mogą służyć poniższe polecenia:

whoami

– wyświetla nazwę użytkownika pod jaką jesteśmy aktualnie zalogowani,

who am i

– to polecenie działa podobnie jak powyższe, jednak będzie podanych więcej informacji,

np. nr linii terminalowej,

id

– wyświetla: nazwę konta, liczbowy numer naszego identyfikatora, listę grup do których

użytkownik należy,

users

– lista aktualnie pracujących użytkowników,

who

– nazwy zalogowanych użytkowników, linie terminalowe,

w

– nazwy zalogowanych użytkowników, linie terminalowe oraz używane przez nich programy,

passwd

– polecenie służące do zmiany hasła (należy podać stare hasło, później dwukrotnie nowe).

background image



2.1 Zmienne Środowiskowe



2.2 Dostępne powłoki

Tabela: Zmienne środowiskowe

zmienna

znaczenie

HOME

Katalog użytkownika (domowy)

SHELL

Rodzaj powłoki (shell)

TERM

Rodzaj emulacji terminala

PATH

Lista katalogów przeszukiwanych po wywołaniu polecenia

MAIL

Plik do przechowywania poczty

LOGNAME

Nazwa konta

TZ

Strefa czasowa

UWAGA:

wielkość liter ma znaczenie w systemie UNIX

env, printenv

– powoduje wyświetlenie wszystkich zmiennych środowiskowych.

podobnie polecenie:

echo $nazwa

(

nazwa

to nazwa zmiennej środowiskowej, którą chcemy wyświetlić).

Tabela. Dostęp do powłoki

Nazwa

Polecenie

Opis

Bourne

sh

Dostępne we wszystkich wersjach

C

csh

Składnia podobna do języka C

Korn

ksh

Następca powłoki Bourne

Bash

bash

Cechy powłoki C i Korna

Tesh

tesh

Podobna do powłoki C

background image



3 Wyświetlanie zawartości katalogów i zarządzanie miejscem na dysku



3.1 Polecenie du



3.2 Polecenie df

Wyświetlanie zawartości katalogów odbywa się za pomocą polecenia ls.

Składnia:

ls [opcje] [argumenty]

Tabela: Opcje polecenia ls

Opcja

Objaśnienie

-1

wyświetlanie listy plików w 1 kolumnie

-a

Wyświetlanie plików łącznie z ukrytymi

-C

Wyświetla listy plików w wielu kolumnach

-d

Informacja o katalogu bez jego zawartości

-F

Informacja o typie pliku (/ - katalog, * - program wykonalny, @ - dowiązanie)

-l

Dokładne informacje na temat plików i katalogów

-m

Lista plików oddzielona przecinkami

-r

Wyświetlanie w kolejności odwrotnej od zadanej

-R

Wszystkie podkatalogi wraz z zawartością

-s

Wielkość plików w blokach

-t

Lista wg czasu ostatniej modyfikacji

-x

Lista plików i katalogów ułożona wierszami

Wyświetlenia wielkości katalogu bieżącego i wszystkich katalogów znajdujących się poniżej odbywa
się za pomocą polecenia

du [opcje]

przy czym wielkość katalogów podana jest w blokach.

Tabela: Opcje polecenia du

Opcja

Objaśnienie

-s

Wyświetlenie tylko wielkości bieżącego katalogu

-a

Wyświetlenie wielkości pojedynczych plików

background image



3.3 Kompresja plików



4 Prawa własności plików i katalogów oraz ich modyfikacja

Ilość wolnego miejsca w całym systemie podaje polecenie

df

, ale wyświetlona informacja nie jest

bezpośrednia i wymaga od użytkownika pewnych podliczeń.

Tabela: Wartości wyświetlane poleceniem

file system

Kbytes

used

available

capacity

mounted

Nazwa

urządzenia /

dysku

Wielkość

przestrzeni

dyskowej

Przestrzeń

zajęta (w

KB)

Przestrzeń

dostępna (w

KB)

Procent

zajętości

Miejsce

zamontowania

urządzenia w

systemie plików

Kompresji plików można dokonać za pomocą polecenia

compress nazwa_pliku

,

które powoduje dodanie do nazwy pliku przyrostka.

Z

. Operację odwrotną wykonuje się za pomocą

polecenia

uncompress nazwa_pliku

,

przy czym podanie rozszerzenia.

Z

jest opcjonalne.

Informację o stopniu kompresji uzyskuje się po wywołaniu

compress –v nazwa_pliku

.

Prawa własności lub uprawnienia określone są ciągiem 10 znaków wyświetlonych w pierwszej
kolumnie po wywołaniu

ls –l nazwa_pliku

.

Ciąg znaków składa się z 4 części, które mają następujące znaczenie: typ pliku, uprawnienia
właściciela (twórcy pliku), grupy (do której należą osoby określone przez administratora systemu)
oraz pozostałych użytkowników.

background image



4.1 Zestawienie najczęściej spotykanych praw dostępu

Kolejnych 9 znaków dzieli się na 3 grupy trzyznakowe – kolejno dla właściciela pliku, grupy i
pozostałych użytkowników. Na każdym poziomie dostępu istnieją 3 rodzaje uprawnień (praw
dostępu) do plików:

Prawo do odczytu oznaczane literą

r

– umożliwia użytkownikowi tylko odczytanie zawartości pliku.

Po skopiowaniu tego pliku do katalogu, w którym użytkownik ma prawo zapisu, kopia pliku może
być modyfikowana

Prawo do zapisu oznaczane literą

w

– pozwala modyfikować plik

Prawo do uruchamiania reprezentowane literą

x

. Każdy plik, dla którego jest ono ustawione, może

być przez system traktowany jako program, jeżeli mieści się w katalogu wymienionym w zmiennej

PATH

.

Prawa powyższe są wyłączone znakiem

-

.

Tabela: Typy plików oraz ich reprezentacje

Znak

Objaśnienie – typ pliku

Znak

Objaśnienie – typ
pliku

d

Katalog

p

Potok

b

Plik specjalny blokowy

s

Gniazdo

c

Plik specjalny znakowy

-

Plik

l

Dowiązanie symboliczne

Prawa dostępu do katalogów są podobne do praw dostępu dla plików. Katalog jest przecież plikiem,
którego zawartością jest lista plików i katalogów w nim zawartych.

Tabela: Zestawienie najczęściej spotykanych praw dostępu

Uprawnienia

Znaczenie

- - -

Całkowity brak dostępu

r - -

Prawo do odczytu

r – x

Prawo do odczytu i uruchomienia (dla programów i skryptów
powłoki)

r w -

Prawo do odczytu i zapisu (dla plików)

r w x

Pełne uprawnienia (dla programów)

Tabela: Zestawienie najczęściej spotykanych ustawień praw dostępu do katalogów

Uprawnienia

Znaczenie

- - -

Całkowity brak dostępu

r – x

Prawo do odczytu, bez możliwości usuwania plików i tworzenia
nowych

r w x

Pełne uprawnienia

background image



4.2 Modyfikacja praw dostępu

Prawa dostępu można także określić w sposób numeryczny. Wykorzystujemy do tego celu system
dwójkowy, bo prawa działają na zasadzie przełącznika o dwóch stanach. Może on być włączony lub
wyłączony. Odpowiednim stanom przypisujemy wartości binarne

1

i

0

. Prawa dostępu w zapisie

symbolicznym oraz ich odpowiedniki w zapisie binarnym i dziesiętnym podane są w Tabeli.

Tabela: Prawa dostępu do plików i katalogów w wersji symbolicznej, binarnej i

dziesiętnej

Zapis symboliczny

Zapis binarny

Zapis dziesiętny

- - -

000

0

- - x

001

1

- w -

010

2

- w x

011

3

r - -

100

4

r – x

101

5

r w –

110

6

r w x

111

7

Modyfikacja praw dostêpu realizowana jest za pomocą polecenia

chmod ciąg_znaków nazwa_pliku

,

którego nazwa jest skrótem pochodzącym od angielskich słów change mode. Zmienić uprawnienia mo
metodą symboliczną lub numeryczną.

W przypadku zapisu symbolicznego, pierwszym argumentem polecenia

chmod

jest ciąg znaków zbudowany

zgodnie z Tabelą notacji symbolicznej

Prawa dostępu w trybie numerycznym ustawione są w sposób bezwzględny dla wszystkich poziomów (klas
użytkowników), dlatego pierwszy argument polecenia

chmod

musi zawierać 3 cyfry.

Tabela: Notacja symboliczna polecenia

chmod

Dowolna kombinacja znaków

Jeden znak

Dowolna kombinacja znak

u

użytkownik

+

dodaj

r

odczyt

g

grupa

-

odbierz

w

zapis

o

pozostali

=

ustaw

x

uruchamianie

a

wszyscy

Tabela: Najczêściej stosowane prawa dostêpu w trybie symbolicznym i numerycznym

Zapis symboliczny

Wartości

Stosowalność

- - - - - - - - -

000

wszystkie pliki

r - - - - - - - -

400

pliki

background image



4.3 Polecenie umask



5 Operacje na plikach i katalogach

.

r - - r - - r - -

444

pliki

r w - - - - - - -

600

pliki

r w - r - - r - -

644

pliki

r w – r w – r - -

664

pliki

r w – r w – r w -

666

pliki

r w x - - - - - -

700

programy i katalogi

r w x r - x - - -

750

programy i katalogi

r w x r - x r – x

755

programy i katalogi

Standardowe prawa dostępu nowo tworzonych plików można zmodyfikować za pomocą polecenia

umask [argument]

.

Polecenie wykonane bez argumentu podaje wartość maski – tzn. 3 cyfry przyjmujące wartości od 0
do 7. Polecenie działa na zasadzie filtru i uwzględnia fakt, że prawo do uruchomienia ma duże
znaczenie dla katalogów. W przypadku plików, prawo do wykonywania potrzebne jest tylko dla
programów, a to zachodzi stosunkowo rzadko. Tworząc zatem plik będący programem, należy
samodzielnie określić jego status, nadając mu prawo do wykonywania.

Jeżeli polecenie

umask

daje ciąg cyfr

m

1

m

2

m

3

(gdzie 0

m

i

7), to tworzymy ciąg cyfr

d

1

d

2

d

3

, gdzie d

i

= 7 - m

i

. Nowy ciąg cyfr określa prawa dostępu do katalogów. Jeżeli tworzony

jest zwykły plik, to system to rozpoznaje i nadaje mu uprawnienia

p

1

p

2

p

3

, gdzie p

i

= d

i

– 1 dla d

i

0, a w przeciwnym wypadku p

i

= d

i

= 0.

UWAGA:

Ustawienie maski można zmienić wywołując polecenie z argumentem

umask

m

1

m

2

m

3

.

Tworzenie nowego katalogu odbywa się za pomocą polecenia

mkdir nazwa_nowego_katalogu

.

W danym katalogu możliwe jest utworzenie nowego katalogu, jeżeli ma on prawo do zapisu.
Polecenie to nie ma żadnych opcji.

background image



6 Wyświetlanie zawartości plików

Polecenie

cp

(skrót copy) pozwala utworzyć kopię danego pliku i zapisać ją pod inną nazwą.

Składnia polecenia

cp plik nowy_plik

,

albo

cp lista_plików nowy_katalog

.

Polecenie

cp

nie stosuje się do katalogów.

Polecenie

mv [argumenty]

zmienia nazwę pliku, przenosi plik(i) do innego katalogu, kasując plik wyjściowy, przy czym jego
argumenty są takie same, jak dla polecenia

cp

.

Polecenie

rmdir

[argument]

usuwa pusty katalog, którego nazwa jest argumentem polecenia i nie ma możliwości odtworzenia
usuniętego katalogu.

Polecenie

rm [argumenty]

usuwa nieodwracalnie pliki, które wymienione są jako argumenty. Zabezpieczeniem jest opcja

–i

(od słowa interakcja), która wymusza potwierdzenie wykonania operacji.

UWAGA:

opcja

–i

zapobiega możliwości automatycznego nadpisania

pliku.

Do tego celu służy kilka poleceń.

Polecenie

file nazwa_pliku

,

podaje informację o typie pliku (bez otwierania go).

Polecenie

background image

head [opcje] nazwa_pliku

wyświetla pierwszych 10 linii pliku o podanej nazwie. Dodanie opcji

–n

spowoduje wyświetlenie

dokładnie n wierszy.

Polecenie

tail [opcje] nazwa_pliku

wyświetla 10 ostatnich linii pliku o podanej nazwie. Dodanie opcji

–n

spowoduje wyświetlenie

dokładnie n ostatnich wierszy

Polecenie

cat [opcje] nazwa_pliku

wyświetla cały plik o podanej nazwie. Dodanie opcji

–s

redukuje następujące po sobie puste linie

do jednej.

Polecenie

more [opcje] nazwa_pliku

rozpoznaje wielkość ekranu i wyświetla pliki o podanej nazwie strona po stronie. Dodanie opcji
modyfikuje jego działanie.

Jest to program interakcyjny i po wyświetleniu danej strony czeka na polecenia. Może nim być
naciśnięcie klawisza spacji, co spowoduje wyświetlenie następnego ekranu. Szerszy zestaw poleceń
podany jest w Tabeli.

Tabela: Opcje programu

more

Opcja

Opis działania

-s

Redukuje liczbę pustych linii

+n

Zaczyna wyświetlanie od wiersza o numerze n

+/wzorzec

Wyświetla od linii zawierającej wzorzec

-d

Wyświetla komunikaty pomocnicze w ostatnim wierszu ekranu

-c

czyści ekran przed wyświetleniem kolejnego

Tabela: Polecenia interakcyjne programu

more

Opcja

Opis działania

[spacja]

Wyświetla kolejny ekran

n[return]

Wyświetla n kolejnych linii pliku

h

Wyświetla list dostępnych poleceń

d

Przewija plik w dół o połowę strony

q

Wyjście z programu

background image



7 Przekierowania, filtry i potoki



7.1 Potok

ns

Przewija plik o n linii do przodu

nf

Przewija plik o n ekranów do przodu

b lub ^b

Przewija plik o 1 ekran do tyłu

=

Wyświetla numer aktualnej linii

/wzorzec

Przegląda plik w poszukiwaniu wzorca

n

Poszukuje kolejnego wystąpienia wzorca

v

Uruchamia edytor

vi

od bieżącej linii

:f

Wyświetla nazwę pliku oraz numer bieżącej linii

Omawiając poprzednie polecenia zakładało się, że są one wypisywane z klawiatury w wierszu
poleceń, a wynik jest wyświetlany na ekranie, który stanowi standardowe urządzenie wyjścia.
Można jednak zmienić zarówno standardowe urządzenie wejścia, jak i wyjścia za pomocą

mechanizmu przekierowań

. Do tego celu służy zestaw poleceń

>

,

<

,

>>

, których znaczenie jest

następujące:

<

oznacza przekierowanie strumienia danych wejściowych;

>

oznacza przekierowanie strumienia danych wyjściowych;

>>

przekierowuje dane wyjściowe i dopisuje do wskazanego pliku, którego nazwa jest

argumentem polecenia.

PRZYKŁAD:

ls –l nazwa_katalogu >
nazwa_pliku

ls –l nazwa_katalogu >>
nazwa_pliku

mail adres_internetowy <
nazwa_pliku

Potok

, to zestaw poleceń powiązanych jednym lub większą liczbą znaków przetwarzania

potokowego

|

. W potoku wynik działania jednego polecenia, przekazywany jest jako dane

wejściowe dla kolejnego polecenia.

background image



7.2 Filtr

PRZYKŁAD:

ls –l nazwa_katalogu |
more

who | sort | more

Filtr

, to polecenie, które pobiera dane ze standardowego wejścia (strumień wejściowy danych dla

programu), przetwarza je i przekazuje wyniki na standardowe wyjście (strumień wyjściowy
programu). Nazwa ”filtr” bierze się stąd, że polecenia tego typu są wykorzystywane do ”filtrowania”
danych wejściowych. Mogą też być przeznaczone do działania w obrębie potoku lub w powiązaniu z
mechanizmem przekierowań.

PRZYKŁADY:

Polecenie

wc [opcje] nazwa_pliku

podaje 3 liczby, które oznaczają kolejno liczbę linii, słów i znaków w pliku o podanej nazwie. Opcje

-l

,

-w

,

-c

ograniczają informację odpowiednio do liczby wierszy, słów i znaków pliku.

Polecenie

uniq [opcje] nazwa_pliku

filtruje plik i nie wyświetla powtarzających się linii. Porównuje każdą odczytaną linię z poprzednią.
Jeżeli okaże się identyczna, to jej nie wyświetla. Obsługuje kilka opcji:

·

-u

powoduje wyświetlenie jedynie tych wierszy, które nie powtarzają się

·

-d

powoduje wyświetlenie tych wierszy, które powtarzają się

·

-c

wyświetla wiersze powtarzające się oraz określa liczbę ich wystąpień.

Polecenie

sort [opcje] nazwa_pliku

odczytuje informacje z pliku i zapisuje je w kolejności alfabetycznej. Obsługiwane opcje
wymienione są w tabeli.

Tabela: Opcje polecenia

sort

Opcja

Działanie polecenia

-b

pomijanie spacji

-d

sortowanie w porządku słownikowym

background image



8 Symbole wieloznaczne i wyrażenia regularne



9 Wyszukiwanie informacji

-f

sortowanie bez uwzględniania wielkości liter

-n

sortowanie według porządku liczbowego

-r

odwrotny porządek sortowania

Symbole wieloznaczne w nazwach plików interpretowane przez powłokę:

(a)

*

zastępuje dowolny ciąg znaków o dowolnej długości (łącznie z zerem)

(b)

?

zastępuje dowolny pojedynczy znak

(c)

zakres znaków

- para nawiasów kwadratowych, pomiędzy którymi znajdują się albo

wyszczególnione konkretne znaki (jeden za drugim), albo dwa znaki rozdzielone
myślnikiem określającym właściwy zakres.

- jest to bardziej szczegółowa wersja znaku?

Wyrażenie regularne, to każde słowo traktowane jako wzorzec do porównania wewnątrz plików
albo wyrażenie zbudowane według specjalnej konwencji.

Tabela: Konwencja zapisu wyrażeń regularnych

Zapis

Znaczenie

c

znak c

\c

znak c jest traktowany jako litera c

^

początek wiersza

$

koniec wiersza (jeżeli jest on ostatnim znakiem)

.

dowolny pojedynczy znak

[xy]

dowolny pojedynczy znak z podanego zbioru

[^xy]

dowolny pojedynczy znak spoza podanego zbioru

c*

zero lub więcej wystąpień znaku c

Program

grep

wywołujemy poleceniem

background image



10 Edytory vi

grep [opcje] wzorzec nazwa_bloku

wyświetla on te linie z pliku, w których znajduje się tekst zgodny z wzorcem

Program

find

poszukuje plików od zadanego miejsca w systemie plików (a określonego pierwszym

argumentem polecenia)

find katalog [opcje]

Tabela: Niektóre opcje programu

grep

Opcje

Znaczenie

-c

wyświetla jedynie liczbę odnalezionych wierszy

-i

podczas wyszukiwania ignoruje wielkość liter

-l

wyświetla nazwy plików, w których zostały odnalezione wiersze z tekstem
pasującym do wzorca

-n

wyświetla dodatkowo numery wierszy

UWAGA:

Jeżeli wzorcem jest wyrażenie regularne, to należy je umieścić pomiędzy apostrofami.

Tabela: Opcje programu

Opcja

Znaczenie opcji

-atime n

plik otwierany n dni wcześniej

-ctime n

plik utworzony n dni wcześniej

-exec polecenie

wykonanie danego polecenia

-mtime n

plik modyfikowany n dni wcześniej

-name wzorzec

poszukiwanie nazwy pliku zgodnie z wzorcem

-print

wyświetlenie nazw znalezionych plików

-type c

poszukiwanie plików typu c:

d

– katalog,

f

- plik,

l

-dowiązanie

-user identyfikator

właścicielem pliku jest użytkownik o podanym identyfikatorze

UWAGA:

n może być podane jako: -n, n, +n

Uruchomienie edytora następuje poleceniem

vi [opcje] nazwa_pliku

background image

które otwiera dany plik, a jego zamkniecie i zapisanie na dysk następuje poleceniem

ZZ

. Niektóre

opcje:

+n

otwiera plik w

n

-tej linii,

+/wzorzec

otwiera na pierwszej linii pasującej do wzorca

Po otwarciu pliku edytor znajduje się w trybie poleceń i umożliwia:

- wywołanie trybu wstawiania

- wprowadzenie poleceń edycyjnych

- zmianę pozycji kursora

- wywołanie polecenia

ex

- wywołanie powłoki

- zapisanie i zakończenie edycji

Składnia poleceń edycyjnych:

[n] operator [m] obiekt,

gdzie

operatorami

są:

c

– rozpoczęcie zmiany,

Tabela: Polecenia edytora

vi

wywołujące tryb wstawiania

Polecenie

Opis polecenia

a

dodaje tekst na prawo od kursora

A

dodaje tekst na końcu linii

c

rozpoczyna operację zamiany

C

zmienia do końca linii

i

wstawia tekst z lewej strony kursora

I

wstawia tekst na początku danej linii

o

otwiera linię poniżej bieżącej

O

otwiera linię powyżej bieżącej

R

zaczyna nadpisywać tekst

s

zastępuje znak wpisanym tekstem

S

zastępuje całą linię tekstem

Esc

kończy tryb wstawiania

background image



10.1 Polecenia wiersza stanu


d

– rozpoczęcie usuwania,

y

– rozpoczęcie przywracania (kopiowania)

obiektem

jest dowolny z następujących bloków tekstowych:

- słowo – zawiera znaki aż do znaku odstępu lub znaku interpunkcyjnego. Obiekt z wielką

pierwszą literą rozpoznaje tylko znaki odstępu;

- zdanie – ciąg znaków aż do . , ! ? z następującymi dwoma spacjami

- akapit – tekst aż do następnej pustej linii

Jeżeli obiektem jest bieżąca linia, to powtarzamy operator: cc, dd, yy

PRZYKŁADY:

2cw

zamiana dwóch nastêpnych s³ów

d}

usunięcie tekstu do następnego akapitu

d^

usunięcie tekstu wstecz do początku linii

5yy

kopiowanie 5 linii do bufora

Zwykle polecenia nie są powtarzane na ekranie. Jednak wiersz stanu na dole ekranu jest używany
do powtórzenia wprowadzenia następujących poleceń:

/

poszukiwanie wzorca w przód

?

poszukiwanie wzorca wstecz

:

wywołanie polecenia edytora ex

!

wywołanie polecenia UNIXa

Polecenia te należy zakończyć naciśnięciem klawisza RETURN

background image

10.2 Polecenia przenośne kursora



10.3 Polecenia edycyjne

h

,

j

,

k

,

1

1 znak w lewo, w dół, w górę, w prawo

w

,

W

,

b

,

B

do przodu, do tyłu o słowo

)

,

(

początek następnego, bieżącego zdania

}

,

{

początek następnego, bieżącego akapitu

0

,

$

pierwszy, ostatni znak w danej linii

^

pierwszy znak w linii nie będący odstępem

+

,

-

pierwszy znak następnej, poprzedniej linii

nH

n linii od góry ekranu

nL

n linii od dołu ekranu

/wzorzec

poszukiwanie wzorca do przodu

?wzorzec

poszukiwanie wzorca do tyłu

/

powtarza ostatnie poszukiwanie w przód

?

powtarza ostatnie poszukiwanie wstecz

n

powtarza poprzednie wyszukiwanie

G

przechodzi do ostatniej linii w pliku

nG

przechodzi do linii numer n

mx

zaznacza bieżącą pozycję znakiem x

‘x

przenosi do początku linii zawierającej x

cw

zamienia słowo

cc

zamienia literę

yy

kopiuje bieżącą linię do bufora

nyy

kopiuje n linii do bufora

„xyy

kopiuje bieżącą linię do bufora x

„xp

wkleja zawartość bufora x

„Xd

usuwa i dodaje do bufora x

ZZ

zakończenie pracy i zapis do pliku

:w

zapisanie do pliku

:w file

zapisanie do pliku file

:q

zakończenie pracy

:q!

zakończenie pracy bez zapisania zmian

:r file

wczytanie pliku file poniżej kursora

:s/stare/nowe

zastępuje pierwsze wystąpienie słowa w danym wierszu słowem
nowym

background image



10.4 Dostęp do poleceń systemu UNIX

s:/stare/nowe/g

zamienia wszystkie wystąpienie słowa w bieżącym wierszu

:1,$
s/stare/nowe/g

zamienia wszystkie wystąpienia

:set nonumber

wyłączenie numeracji wierszy

:set number

włączenie numeracji wierszy

:ab a bcd

definicja skrótu wyrażenia bcd

C

zamienia od bieżącej pozycji do końca linii

dd

usuwa bieżącą linię

ndd

usuwa n linii

D

usuwa do końca linii

dw

usuwa słowo

d}

usuwa do następnego akapitu

d^

usuwa wstecz do początku linii

d/wzorzec

usuwa do wystąpienia wzorca

p

wstawia po kursorze ostatnio usunięty tekst

P

wstawia przed kursorem ostatnio usunięty tekst

rx

zamienia znak na x

Rtekst

nadpisuje poczynając od kursora

s

zastępuje znak

S

zastępuje całą linię

u

cofa ostatnie polecenie

U

przywraca bieżącą linie

.

powtarza ostatnie polecenie

~

zmienia wielkość litery

:!polecenie

uruchamia polecenie systemu UNIX i powraca do edytora vi

!!polecenie

bieżący wiersz zastąpiony jest wynikiem działania polecenia systemu

UNIX

!}polecenie

bieżący akapit zastąpiony jest wynikiem działania polecenia systemu

UNIX

:n,m!polecenie

zamienia linie n-m wynikiem polecenia UNIX

:r!polecenie

wczytuje do pliku po bieżącej linii wynik polecenia

background image



11 Charakterystyka powłoki csh

Powłoka jest interfejsem pozwalającym na kontakt użytkownika z systemem UNIX.

UWAGI:

- Sprawdzenie rodzaju powłoki dostępnej w systemie.

Należy jej szukać w katalogu

/bin

lub

/usr/local/bin

, wydając polecenie ls z argumentem

- Zmiany powłoki domyślnej dokonuje się za pomocą polecenia

chsh

(change shell).

- Jeżeli nie działa

chsh

, to można uruchomić powłokę

C

poleceniem

csh

.

- Wyświetlenie parametrów środowiska pracy odbywa się poprzez wykonanie polecenia

env

(

printenv

)

- Zmienne środowiskowe można samemu definiować

(w

csh

:

setenv nazwa_zmiennej wartość

)

w wierszu poleceń lub w plikach konfiguracyjnych

- Polecenie set ustala parametry konfiguracyjne powłoki

C

(np.

set history=100

)

Pliki konfiguracyjne powłoki csh:

-

.login

– jest przetwarzany tylko podczas logowania się do systemu

-

.cshrc

– jest przetwarzany podczas każdego uruchomienia powłoki

C

Tabela: Zmienne środowiskowe pow

Zmienna

Opis zmiennej

HOME

Informacja o ścieżce dostępu do katalogu domowego. Jej wartość
sprawdzić poleceniem:

env HOME

lub

echo $HOME

SHELL

Określa rodzaj powłoki

TERM

Zawiera domyślny typ terminala. Jeżeli ma wartość unknown, można jej nada
wartość poleceniem

setenv TERM vt100

, (Visual Terminal 100 firmy DEC),

który jest najpowszechniej emulowanym typem terminala

USER

Określa identyfikator użytkownika

PATH

Określa przeszukiwane katalogi po wywołaniu poleceń o kolejność poszukiwania.
Separatorem nazw jest symbol

:

MAIL

Lokalizuje skrzynkę odbiorczą poczty

LOGNAME

Synonim zmiennej

USER

NAME

Zawiera imię i nazwisko użytkownika, podawane przez niektóre programy

background image



12 Mechanizmy obsługiwane przez powłokę C



12.1 Historia poleceń

- Składnia definicji aliasu:

alias nazwa polecenia

( np.

alias ll ‘ls –l’

)

- Historia poleceń

- Aliasy

- Konfiguracja znaku zachęty

Powłoka C pamięta tylko ostatnie wydane polecenie. Aby uaktywnić mechanizm historii poleceń, nale
wykonać polecenie

set history=n

,

gdzie

n

jest liczbę zapamiętanych poleceń.

Umieszczenie tego polecenia w pliku konfiguracyjnym

.cshrc

powoduje obsługę tego polecenia na sta

Jeżeli mechanizm jest aktywny, to polecenie

history

bez argumentów wyświetlania

n

ostatnich polece

System będzie pamiętał

n

ostatnich poleceń z poprzedniej sesji, jeżeli zmienna

savehist

będzie mia

nadaną wartość

set savehist=n

.

Tabela: Polecenia obsługi historii poleceń w powł

Polecenie

Funkcja danego polecenia

!!

Powtórzenie ostatniego polecenia

!$

Powtórzenie ostatniego wyrazu ostatniego polecenia

!*

Powtórzenie ostatniego polecenia z wyjątkiem pierwszego wyrazu

^a^b

Zastąpienie tekstu a tekstem b w poprzednim poleceniu

!n

Wykonanie n-tego polecenia z listy historii poleceń

background image



12.2 Aliasy



12.3 Konfiguracja znaku zachęty

UWAGI:

W powłoce Korn lista poleceń pamięta domyślnie 128 poleceń, które można wyświetlić
poleceniem history. Polecenie

r

bez argumentów powoduje powtórne wykonanie ostatniego

polecenia, natomiast

r numer

lub

r nazwa_polecenia

, wykonuje odpowiednie polecenia jeszcze

raz.

Składnia polecenia definiującego aliasy:

alias nazwa polecenia

Polecenie

alias

bez argumentów wyświetla wszystkie zdefiniowane aliasy, a polecenie

alias nazwa

wyświetla alias o podanej nazwie. Jeżeli alias definiuje polecenie złożone z więcej niż jednego
słowa, należy je umieścić w cudzysłowie. Aliasy zapisane w pliku

.cshrc

będą zapamiętane przez

powłokę.

Aliasy wyłącza się poleceniem

unalias nazwa

.

UWAGA:

W powłoce Korn aliasy definiowane są poleceniem

alias nazwa=polecenia

.

Na stałe definiowane są w pliku

.profile

.

Dokonuje się jej poleceniem

set prompt=”wartość”

.

Występująca w definicji „wartość” może zawierać wartości zmiennych środowiskowych – np.
określającą nazwę bieżącego katalogu

cwd

w postaci

$cwd

.

Tabela: Wartości specjalne dostępne w konfigurowaniu znaku zachęty

Wartość

Znaczenie

background image



13 Zarządzanie zadaniami

`cmd`

Wynik wykonania polecenia cmd

\!

Numer bieżącego polecenia

$zmienna

warytość zmiennej

zmienna

$zmienna:t

Ostatni wyraz wartości zmiennej

Każdy uruchomiony program nazywamy zadaniem lub procesem. Działający program można
zatrzymać poleceniem

^z

i ponownie uruchomić poleceniem

fg

. Zatrzymany program można

uruchomić w tle poleceniem

bg

. Każdy program można umieścić w tle kończąc polecenie znakiem

&

.

Informacje o uruchomionych zadaniach

- Polecenie

jobs

– wyświetla procesy zatrzymane lub ponownie uruchomione w tle przez

powłokę oraz podaje ich numery

[

w nawiasach kwadratowych

]

- Polecenie

ps

(processor status)

Polecenie

nohup polecenie [argumenty] &

wbudowane w powłoce C – przekazuje wykonanie polecenia do tła.

Domyślnie wyjście jest kierowane do

nohup.out

.

Tabela: Opcje polecenia

ps

.

Opcja

Znaczenie

-a

Wyświetla procesy związane z terminalami podłączonymi do systemu

-l

Rozszerzona informacja o procesach

-u

Informacja o procesach użytkownika

-x

Wszystkie procesy w systemie

Tabela: Wartości określające stan procesu

Wartość

Znaczenie

R

Program działający (ang. running)

S

Uśpiony (ang. sleeping) – nie działający przez mniej niż 20 sek.

I

Bezczynny (ang. idle) – nie działający przez więcej niż 20 sek.

T

Proces wstrzymany

background image



14 Drukowanie w systemie UNIX



14.1 System drukowania BSD

Kończenie działania procesów poleceniem

kill #procesu

.

Numer

Nazwa

Znaczenie

1

SIGHUP

Zakoñcz pracê

2

SIGINT

Przerwanie

9

SIGKILL

Bezwarunkowe zakończenie pracy

15

SIGTERM

Programowy sygnał zakończenia

Drukowanie w systemie UNIX jest utrudnione ze względu na różnice formatu danych, jakie przesyłaj
systemy do drukarek oraz różnice w realizacji zarządzania drukowaniem. Systemy kolejkowania plik
wydruku inaczej działają w systemach BSD niż w Systemie V lub AIX.

Informację o nazwach drukarek (które są argumentami poleceń drukowania) oraz o ich mo
znajdują się w pliku konfiguracyjnym

/etc/printcap

. Format tego pliku jest skomplikowany, a informacje

trudne do zrozumienia. Linie zaczynające się od znaku

#

są komentarzami, a każda pozycja w pliku opisuj

cechy drukarki, jest oddzielona separatorem

:

. Drukarka domyślna jest zdefiniowana w pliku

/etc/printcap

na pozycji o nazwie

lp

.

W niektórych systemach (np. HP-UX, IRIX) dostępne są polecenia

lpstat

,

lpinfo –a

(mniej czytelne),

które wyświetlają listę drukarek dostępnych w systemie, a polecenie

lpstat –d

określa drukarkę domyślną!

UWAGA:

Sposobem na ułatwienie pracy jest zdefiniowanie drukarki domyślnej w zmiennej środowiskowej
PRINTER, co można zrealizować w powłoce

C

poleceniem

setenv PRINTER nazwa_drukarki

Wykorzystywany jest także w systemach ULTRIX i Linux. Składa się z:

- Polecenia

lpr [opcje] file

, które powoduje wydruk pliku o nazwie

file

. Faktycznie dodaje

background image



14.2 System drukowania w Systemie V

zadanie (job) do kolejki wydruków, kopiując plik do odpowiedniego katalogu oraz przypisuje mu

numer identyfikacyjny

ID

. Katalogi wydruku mieszczą się zwykle w katalogu

/var/spool

, po

jednym dla każdej drukarki. Następnie demon

lpd

przesyła pliki do urządzeń drukujących.

- Programu

lpd

, odpowiedzialnego za przesyłanie do drukarki danych z katalogu wydruku

- Polecenia

lpq

, które wyświetla listę zadań oczekujących w kolejce drukarki domyślnej

lub drukarki określonej opcją

–Pdr

.

W przypadku składni

lpq user_id

, wyświetlone zostaną zlecenia wydane przez użytkownika

o identyfikatorze

user_id

- Polecenia

lprm

, które usuwa zadania z kolejki należące do danego użytkownika. Składnia

polecenia jest następująca

lprm [-Pdr] identyfikator_zadania

- Program

lpc

służący administratorowi do zarządzania drukarkami.

Tabela: Przydatne opcje polecenia lpr

Opcja

Znaczenie

-h

pomija stronę tytułową

-i

przesuwa wydruk o 8 spacji w prawo

-L

tryb pejzażowy (landscape)

-Pdr

wysyła zadanie do drukarki o nazwie dr

-R

drukowanie stron w odwrotnej kolejności

Przejęty jest także w systemach HP-UX i IRIX. W skład tego systemu drukowania określają następuj

- Polecenie

lp [opcje] file

, które inicjuje drukowanie. Danemu zleceniu (request) drukowania przypisany jest

unikalny numer (request

ID

), który służy do identyfikacji zlecenia

- Katalogi wydruku, w których przechowywane są informacje dotyczące zleceń. Same pliki przeznaczone do

wydrukowania pozostają na swoim miejscu. Można je jednak skopiować do obszaru kolejkowania, wywo
polecenie

lp

z opcją

–c

. Katalogi wydruku maja takie same nazwy jak nazwy odpowiadających im drukarek i

mieszczą się w katalogu

/usr/spool/lp/request

- Polecenie

cancel [opcje] [drukarka]

, które unieważnia wskazane zlecenie drukowania wykonane za

pomocą

lp

. Obsługuje opcje:

ID

– oznaczającą identyfikator zlecenia;

-u user

. Ta ostatnia anuluje zlecenie

skojarzone z użytkownikiem

user

- Polecenie

lpstat

, które wyświetla zawartość kolejki, podając zarówno

ID

, jak i nazwę drukarki. Wywo

bez parametrów, wyświetla wszystkie zlecenia należące do danego użytkownika i jest równowa

lpstat –u $USER

. Składnia

lpstat –p nazwa_drukarki

powoduje wyświetlenie statusu określonej drukarki

background image



15 Komunikacja z użytkownikami

- Demon

lpsched

zarządzający kolejką wydruków i przesyłający zlecenia na odpowiednia drukark

- Polecenia przeznaczone dla administratora

(np. accept i reject zezwalające lub zabraniające dodawania nowych

zleceń do kolejki, enable i disable określające status konkretnych

drukarek, lpadmin, lpmove, lpusers)

- Polecenie

pr

służy do formatowania wydruków. Jest również przydatne do formatowania tekst

wyświetlanych na ekranie. Ma składnię

pr [opcje] pliki

.

Formatuje jeden lub większą liczbę plików zgodnie z opcjami i wysyła na standardowe wyjście. Ka
zawiera nagłówek składający się z numeru strony, nazwy pliku, daty i czasu.

Tabela: Przydatne opcje polecenia lp.

Opcja

Znaczenie

-ddr

wysyła zadanie do drukarki dr

-nliczba

określa liczbę kopii do wydrukowania

-Pn

drukuje stronę n lub zakres

-ttytuł

drukuje tytuł na stronie tytułowej

Tabela: Przydatne opcje polecenia

Opcja

Znaczenie

-n

umieszczenie

n

kolumn na stronie

+n

rozpoczęcie drukowania od

n

-tej strony

-f

wyłączenie druku nagłówka i stopki

-hnagłówek

na każdej stronie drukuje nagłówek

-wn

ustawienie szerokości strony w trybie pejzażowym na

n

znaków

-m

drukowanie wszystkich plików naraz po jednym w każdej kolumnie

UWAGA:

alias print ‘pr | lpr’

lub

alias print ‘pr | lp’

automatycznie wydrukuje plik, podając na każdej stronie w nagłówku jego nazw
strony

alias pq ‘lpq $USER -Pdr’

lub

alias pq ‘lpstat –u $LOGNAME -pdr’

wyświetli zadania drukowania oczekujące w kolejce danej drukarki zlecone przez użytkownika

background image

- polecenie

mesg

wyświetla informację, czy inni użytkownicy mają prawo zapisu do bie

potrzebne do bezpośredniej (interaktywnej) komunikacji. Jeżeli zostanie dodany argument

y

nadane lub odebrane.

- polecenie

write nazwa_użytkownika[@adres]

- polecenie

finger

służy do sprawdzenia, którzy użytkownicy zalogowani są do systemu. Polecenie bez argumentu

podaje użytkowników pracujących w aktualnym systemie. Ogólniej, polecenie ma składnię:

finger [ID]@host.domena

- program

talk ID[@host.domena]

dzieli ekran na dwie części. W górnej części użytkownik mo

informacje, a w dolnej wyświetla się informacja od wywołanego użytkownika. Obaj użytkownicy mog

- polecenie

wall

umożliwia administratorowi przesłanie wiadomości do wszystkich pracuj

terminalu każdego użytkownika pojawia się specjalny komunikat poprzedzający wiadomość.

informacja dnia: W trakcie rozpoczynania sesji na terminalach użytkownika, wyświetlana jest tre
w której administrator wpisuje ważne informacje.

- programy obsługujące pocztę

mail

oraz

Mail

(wygodniejszy, nazywany też Berkley Mail).

przypadku wysyłania listu:

Mail [opcje] adres

Polecenie bez argumentu udostępnia skrzynkę pocztową.

UWAGA:

mesg n

nie ogranicza administratora

Polecenie

Znaczenie

delete #

zaznacza wiadomość

#

do usunięcia

help

informacja o dostępnych poleceniach

headers

wyświetla bieżącą stronę nagłówków

print #

wyświetla wiadomość

#

quit

kończy program

reply

umożliwia odpowiedź na bieżący list

save katalog

zapisuje wiadomość w katalogu

undelete #

odwołuje polecenie delete

mail adres

pozwala wysłać pocztę

1) Większość poleceń można skrócić do pierwszej litery. Litera

N

w nagłówku informuje,

nie została dotąd odczytana. Znacznikiem bieżącej wiadomości jest

>

.jjlkjlkjl

2) wiadomości przeczytane, ale nie usunięte, są przenoszone do pliku

mbox

przeznaczone do usunięcia lub zapisane w pliku są kasowane. Pozostałe wiadomo
katalogu

/usr/mail

background image



16 Programy telnet i ftp

- program

elm

lub

pine

ułatwiają obsługę poczty – mają wbudowany interfejs użytkownika

UWAGI:

3) w linii poleceń można dodać opcje np.

-s subject

, aby wysłać list z tematem wiadomo

przy korzystaniu z mechanizmu przekierowania)

4) podczas wpisywania wiadomości dostępne są polecenia, których listę wyświetla sekwencja

Najważniejsze z nich:

~v

uruchamia edytor vi

~r file

wczytuje plik do bufora

~w file

zapisuje wiadomość do pliku

~p

wyświetla zawartość bufora

~!polecenie

wywołuje polecenie powłoki

~h

pozwala edytowaæ nag³ówek wiadomości

- polecenie

telnet host.domena

rozpoczyna sesję na zdalnym komputerze.

Można przejść do wiersza poleceń programu wykonując

^]

.

- polecenie

ftp host.domena

służy do kopiowania plików w sieci Internet.

Tabela: Dostępne polecenia programu telnet

Polecenie

Opis

close

zamknięcie bieżącego połączenia

open

połączenie ze zdalnym komputerem

quit

wyjście z programu telnet

UWAGA:

Naciśnięcie klawisza

^]

i wydanie polecenia

close

zamyka połączenie. Można też

zamknąć sesję na zdalnym komputerze.

Tabela: Przydatne polecenia programu

Polecenie

Opis działania

ascii

tekstowy tryb transmisji plików

background image



17 Programowanie w języku powłoki sh

binary

binarny tryb transmisji plików

bye

zakończenie programu ftp

cd dir

przejście do katalogu dir w systemie zdalnym

close

zamknięcie bieżącego połączenia

dir

lista plików w systemie zdalnym

get

kopiowanie plików ze systemu zdalnego

lcd dir

zmiana katalogu w systemie lokalnym

ls

lista plików w systemie zdalnym

mget

kopiowanie plików do systemu lokalnego z użyciem symboli wieloznacznych

mput

kopiowanie plików do systemu zdalnego z użyciem symboli wieloznacznych

open

nawiązanie połączenia z komputerem

put

kopiowanie do systemu zdalnego

pwd

wyświetlenie ścieżki dostępu do kat. bieżącego w systemie zdalnym

UWAGA:

Wiele węzłów umożliwia anonimowy dostęp do archiwów ftp. Jako nazwę konta należy
podać

guest

lub

anonymous

, a jako hasło – własny adres emailowy.

Powłoka Bourne’a jest standardem we wszystkich systemach.

Zmienne powłoki

Zmienne są interpretowane jako łańcuchy znaków, nawet, jeśli zawierają liczby. Nadanie wartości
zmiennym powłoki następuje poprzez:

- $ kolor=niebieski

$ echo $kolor

- $ echo Lubisz kolor ${innykolor:-zielony} czy ${kolor}?

-

$ echo kocham kolor ${desen=ciemno}$kolor oraz

${odcien}${innykolor}

- Polecenie

read

$ read miasto kraj podpis

Poznan Polska Wasz\ poznaniak

$ echo

Moim ulubionym miastem jest

$miasto

, a ojczyzną jest

$kraj

.

$podpis

background image

- Przekazanie wartości przez argumenty wywołania skryptu:

skrypt arg1 arg2 arg3.

Wówczas nazwy

arg1

,

arg2

,

arg3

dostępne są w skrypcie jako wartości zmiennych

$1

,

$2

,

$3

. Zmienna

$0

zawiera nazwę pliku (skryptu), który został uruchomiony, a zmienna

$*-

zawiera wszystkie argumenty traktowane jako pojedynczy łańcuch znaków

Arytmetyka w języku powłoki

- Polecenie

expr

- Polecenie

test

- służy do przeprowadzania porównań liczb, łańcuchów znaków oraz sprawdzania stanu

systemu plików.

Operatory polecenia test dla porównań liczb:

-eq -ne -lt -le -gt -ge

.

Operatory polecenia

test

do obsługi łańcuchów znaków:

a) operatory jednoargumentowe

§ $ test –z $tekst

§ $ test –n $tekst

gdzie wyniki działania pierwszego polecenia (zawierającego operator

–z

) zwraca

logiczną prawdę, jeżeli zmienna tekst ma d³ugośæ zero lub jest niezdefiniowana, a
wynik drugiego zwraca logiczn¹ prawdê, jeśli ³añcuch tekst ma niezerow¹ d³ugośæ

b) operatory dwuargumentowe

§ $ test alfabet = Alfabet

§ $ alfabet != Alfabet

$ expr 2+2

$ expr 2 / 2

$ expr 2-2

$ expr 2 % 2

$ expr 2 „*” 2

$ zmienna=`expr ${zmienna:-2} + 1`

PRZYKŁAD:

- $ test 3 –eq 4

- $ test $wart –eq –l $tekst

- $ test `we –l plik` -ge 1000

background image



17.1 Instrukcje warunkowe

Operatory dwuargumentowe polecenia

test

· $ test plik1 –nt plik2

· $ test plik1 –ot plik2

· $ test $zmienna –eq 0 –a ! –e plik

Tabela: Operatory (jednoarg.) polecenia

test

do obsługi systemu plików.

Operator

Warunek na zwrócenie logicznej prawdy

-d

Plik jest katalogiem

-e

Plik istnieje

-f

Plik istnieje i jest zwykłym plikiem

-g

Plik istnieje i należy do określonej grupy

-r

Plik istnieje i można go odczytać

-s

Plik istnieje i zawiera jakiś dane

-w

Plik istnieje i ma prawo zapisu

-x

Plik istnieje i jest wykonywalny

UWAGA:

Polecenie

test

istnieje również w innej

równoważnej formie z użyciem nawiasów
kwadratowych

[]

.

PRZYKŁAD:

test –f plik º [ -f plik ]

Składnia instrukcji

if

:

if

blok poleceń powłoki

then

blok poleceń powłoki

fi

Istnieje skrócona forma instrukcji

if

w przypadku łączenia dwóch

background image



17.2 Instrukcje iteracyjne

UWAGA:

poleceń. Jeśli dwa polecenia są rozdzielone symbolem

&&

, to

drugie jest wykonywane tylko w sytuacji, gdy pierwsze zwraca
logiczną prawdę. Odwrotnie, łącząc dwa polecenia symbolem

||

,

drugie wykonywane jest w sytuacji, jeśli pierwsze zwraca
logiczny fałsz.

Istnieją dwa typy pętli – określone i nieokreślone. Pętla jest określona, jeśli liczba powtórzeń jest
znana przed wejściem do niej. Pętla nieokreślona, to taka, dla której blok poleceń jest wykonywany
dopóki pewien warunek jest spełniony.

instrukcja

for

$ for zmienna in lista

$ do

$ blok poleceń

$ done

gdzie lista zawiera dowolne wartości, jak zestaw liczb lub dane wyjściowe zwrócone przez
polecenie.

PRZYKŁADY:

$ for var in ‘ls’

$ do

$ if

$ [ -f $var]

$ then

$ echo $var to zwykły plik

$ fi

$ done

#!/bin/sh

background image

j=0

for i in $*

do

j=`expr $j + 1`

echo “argument $j wynosi $i”

done

#!/bin/sh

j=0

for i

do

j=`expr $j + 1`

echo “argument $j wynosi $i”

done

DIR=$cwd

for FILE in `find $DIR –print`

do

if [ -f$FILE ]; then

compress $FILE

done

UWAGA:

Instrukcja for wykonuje się na wierszu
poleceń i powtarza pętlę dla wszystkich
argumentów polecenia wywołującego
skrypt.

background image



instrukcja

while

realizuje pętlę nieokreśloną i ma składnię

while

wyrażenie

do

blok poleceń

done

PRZYKŁAD:

j=0

for i

do

j=`expr $j + 1`

echo $I argument wynosi $j

done

UWAGA:

Instrukcja

while

może też tworzyć pętle określone, wprowadzając

licznik pętli.

PRZYKŁAD:

i=0

while

[ $i –lt 100 ]

do

i=`expr $1 +

1`

polecenia

done

background image

17.3 Skrypty powłoki Bourne'a



18 Przeadresowanie wejścia – wyjścia

#!/bin/sh

echo “Wczytaj miasto kraj podpis: \c”

read miasto kraj podpis

echo “\n Moim ulubionym miastem jest $miasto,\a ojczyzna -
$kraj. \n

$podpis”

#!/bin/sh

echo “Wczytaj miasto kraj podpis: \c”

read miasto kraj podpis

echo “\n Moim ulubionym miastem jest $1, a ojczyzna - $2. \n
$3”

echo “\nNazwa pliku: $0\nArgumenty skryptu: $*”

!/bin/sh

if [ $# -ne 3 ]; then

echo “Sorry wrong number of arguments”

exit

fi

echo “\n Moim ulubionym miastem jest $1,

a ojczyzna - $2. \n $3”

echo “\nNazwa pliku: $0\nArgumenty skryptu: $*”

background image

Za pomocą przeadresowania można zmienić kierunek

stdin

,

stdout

i

stderr

lub dowolnego deskryptora pliku

określonego przez użytkownika. Deskryptor pliku jest liczbą (nazywaną też liczbowym uchwytem) s
identyfikacji plików otwartych do przetwarzania. Ponieważ można otworzyć do 20 plików, ich deskryptory przyjmuj
wartości w zakresie

0 – 19. Trzy pierwsze są zarezerwowane odpowiedni dla

stdin

,

stdout

i

stderr

.

Składnia przeadresowania:

deskryptor_pliku_1 operator nazwa_pliku

deskryptor_pliku_1 operator deskryptor_pliku_2

W powyższym przykładzie wszystkie błędy zostaną przekazane do pliku

błędy

. Można też łączyć

stderr

w jeden strumień wyjściowy i przesłać do pliku:

grep Kamieniarz < spis_publikacji 2>&1 > nowy_spis

Tabela. Deskryptory plik

Nazwa

I/O

Deskryptor

stdin

Wejście

stdout

Wyjście podstawowe

stderr

Wyjście diagnostyczne

określona przez użytkownika

Wejście- wyjście

Tabela. Operatory przeadresowania

Operator

Czynność

<

Otwarcie określonego pliku jako standardowe wejście

>

Otwarcie określonego pliku jako standardowe wyjście

>>

Dołączenie standardowego wyjścia do pliku

<&

Użycie deskryptora 2 na wejściu kiedy używany jest deskryptor 1

>&

Połączenie deskryptora 1 z deskryptorem 2

>>&

Dołączenie deskryptora 1 do deskryptora 2

|

Przekazanie w potoku standardowego wyjścia na standardowe wejście

PRZYKŁAD:

grep Kamieniarz < spis_publikacji >nowy_spis

grep Kamieniarz < spis_publikacji >nowy_spis 2 > b³êdy

background image



19 Typy zmiennych powłoki



19.1 Zmienne specjalne

Możliwe jest przesłanie wyjścia diagnostycznego do innego polecenia. Służy do tego przeadresowanie do
standardowego wyjścia (2>&1), a następnie przesłanie go w potoku:

polecenie_1 argumenty 2>&1 | polecenie_2\

Powłoka Bourne’a umożliwia także zachowanie danych przekazanych w potoku. Służy do tego polecenie
zapisuje standardowe wejście do pliku oraz przesyła je na standardowe wyjście

who | tee user_list

UWAGA:

Polecenie przeadresowania tworzy nowy plik, jeżeli on nie istnieje. Jeżeli plik istnieje,

to zostanie nadpisany. Aby tego uniknąć, można korzystać z mechanizmu dołą

>>

.

Wyróżniamy:

1.

Zmienne specjalne

, którym nadawane są wartości w momencie uruchomienia powłoki.

2.

Zmienne środowiskowe

do nadzorowania środowiska użytkownika.

3.

Zmienne programowe

tworzone przez użytkownika dla potrzeb przetwarzania.

Polecenie

shift

przesuwa w lewo każdy argument skryptu od

$1

do

S#

. Umożliwia w ten sposób dost

Tabela. Zmienne specjalne

Zmienna

Działanie

$#

Liczba argumentów pozycyjnych

$0

Nazwa programu (skryptu)

$1, $2, ...

Argumenty pozycyjne przekazane do skryptu

$*

Rozwijanie argumentów skryptu do ”$1 $2 ...”

$@

Rozwijanie argumentów skryptu do ”$1” ”$2” ...

$?

Kod powrotu ostatniego polecenia

$$

Numer bieżącego procesu powłoki

$!

Numer procesu ostatniego zadania wsadowego

background image



19.2 Zmienne środowiskowe

powyżej

$9

. Może być użyte w instrukcji

while

.

Przykład:

while [ ”$1” ]

do

process $1

shift

done

while [ ”$1” -a ”$2”

do

process $1 $2

shift; shift

done

Środowisko użytkownika tworzą pliki

a)

/etc/profile

– zdefiniowany przez administratora i przetwarzany

podczas otwierania sesji

b)

.profile

– wykonywany podczas otwierania sesji i ustawia środowisko

danego użytkownika. Mieści się w katalogu domowym

${HOME}

.

W pliku

${HOME}/.profile

można umieścić zmienne globalne.

PATH=${PATH}:${HOME}/bin

PS1=”#$ ”

PS2=”input> ”

Tabela. Podstawowe zmienne środowiskowe pow

Zmienna

Opis

CDPATH

Ścieżka przeszukiwań dla polecenia cd

HOME

Ścieżka katalogu domowego ustawiona w momencie otwierania sesji

MAIL

Nazwa pliku pocztowego

PATH

Ścieżka przeszukiwań katalogów z poleceniami

PS1

Podstawowy znak zachęty

PS2

Pomocniczy znak zachęty wyświetlany po uruchomieniu podpowłoki (domyślnie >)

IFS

Wewnętrzny separator pól (spacja, tabulacja, nowa linia) do dzielenia polecenia na cz

PWD

Nazwa katalogu bieżącego (z podaniem pełnej ścieżki)

MAILCHECK

Odstępy czasu sprawdzania nadchodzącej poczty w sekundach

TMOUT

Czas nieaktywności, po którym powłoka kończy sesję (określany w sekundach)

background image



19.3 Zmienne programowe tworzone przez użytkownika



TERM=vt100

export PATH PS1 PS2 TERM

Zmienna albo jest ustawiona (przypisana jej jest jakaś wartość) albo nie jest ustawiona (nigdy nie przypisano jej
wartości). Polecenie

unset

usuwa zmienną ustawioną. Zmiennej można przypisać wartość pustą lub pusty napis.

UWAGA:

Powłoka odróżnia zmienną ustawioną i zmienną pustą.

Tabela. Rozwijanie nazw zmiennych powłokowych

Operator

Opis

${nazwa_zmiennej}

Zwrócenie wartości zmiennej o podanej nazwie

${nazwa_zm:=wartość}

Zwrócenie jej wartości, jeżeli zmienna istnieje i nie
jest pusta. W przeciwnym wypadku przypisana jest
jej podana wartość i ta wartość jest zwracana

${nazwa_zm:+wartość}

Jeżeli zmienna istnieje i nie jest pusta, zwracana jest
podana wartość. W przeciwnym wypadku zwracana
jest wartość pusta

${nazwa_zm:-wartość}

Jeżeli zmienna istnieje i nie jest pusta, to zwracana
jest jej wartość. W przeciwnym wypadku zwracana
jest podana wartość, ale bez przypisania jej wartości
zmiennej.

${nazwa_zm:=komunikat}

Zwrócenie wartości zmiennej ustawionej, jeżeli nie
jest pusta. W przeciwnym wypadku wyświetlona jest
nazwa zmiennej i komunikat, a następnie kończy się
działanie skryptu.

UWAGA:

Dwukropek w operatorach jest opcjonalny. Pominięcie dwukropka

spowoduje nierozróżnianie zmiennej pustej.

PRZYKŁAD:

cd $temp; rm –rf *

cd ${temp:=/tmp}; rm –rf *

background image

20 Zagadnienia dodatkowe



20.1 Cytowanie (quoting)



20.2 Konstrukcje sekwencyjne

a) Cytowanie (quoting)

b) Konstrukcje sekwencyjne

c) Konstrukcja warunkowa

case

d)

Zarządzanie zadaniami

e) Testowanie skryptów

Jest to technika nadzorowania podstawiania wartości zmiennych oraz generowania nazw plików.

Tabela. Znaki cytowania

Znak

Opis

brak cytowania

Każde słowo wydzielone za pomocą znaku odstępu jest interpretowane przez
powłokę.

apostrofy ‘napis’

Cały napis jest przesyłany do polecenia jako pojedynczy argument.
Wszystkie znaki są chronione.

cudzysłowy ”napis”

Wszystkie znaki są chronione z wyjątkiem

$

,

\

oraz

`

(znak akcentu). Je

zostaną napotkane, to wykonane zostanie związane z nimi działanie.

lewy ukośnik \c

Znak występujący po

\

jest chroniony przed interpretacją powłoki. Je

jest ostatnim znakiem w wierszu, to wskazuje na kontynuację polecenia.

`polecenie`

Polecenie jest wykonane przez podpowłokę, a uzyskany wynik podstawiany
jest w danym miejscu.

Tabela. Symbole nadzorujące sekwencje polece

Symbol

Znaczenie

;

Ogranicznik polecenia – w jednym wierszu można umieścić więcej niż jedno

background image



20.3 Konstrukcja warunkowa case

polecenie

( )

Grupowanie poleceń do wykonania w podpowłoce

{ }

Grupowanie poleceń do wykonania w bieżącej powłoce

` `

Podstawianie poleceń – pozwala na przypisanie zmiennym wyników sekwencji
poleceń

&&

Sprawdzenie kodu powrotu i w przypadku prawdy wykonanie polecenia

||

Jw., lecz wykonanie polecenia w przypadku zwrócenia wartości ”fałsz”

PRZYKŁADY:

var=`grep ”line” chapter? | line`

( polecenie_1; polecenie_2 | grep
arg ) | wc

{ polecenie_1; polecenie_2 | grep
arg; } | wc

polecenie_1 && polecenie_2

polecenie_1 || polecenie_2

polecenie_1 || { polecenie_2;
polecenie_3; }

case $zmienna in

wartość_1)

czynność_1 ;;

wartość_2)

czynność_2 ;;

wartość_3 | wartość_4)

czynność_3 ;;

*)

czynność_domyślna ;;

background image



20.4 Zarządzanie zadaniami



20.5 Testowanie skryptów



21 Programowanie w powłoce C

esac

nohup polecenie &

nice polecenie &

nohup nice polecenie &

at 6pm polecenie

kill $!

– anulowanie ostatniego zadania przesłanego do tła

Istnieje kilka sposobów interaktywnego sprawdzenia skryptu:

sh –v nazwa_skryptu

– wyświetlanie każdego przeczytanego wiersza przed jego wykonaniem

sh –x nazwa_skryptu

– wyświetla każde wykonane polecenie po dokonaniu wszystkich podstawień

Środowisko użytkownika tworzą pliki, które są przetwarzane podczas otwierania i zamykania sesji
obsługiwanej przez powłokę.

Tabela: Pliki konfiguracyjne powłoki C.

Nazwa pliku

Zawartość

.cshrc

Polecenia wykonywane podczas otwierania sesji oraz każdego
uruchomienia powłoki

.login

Zestaw poleceń wykonywanych tylko podczas uruchomienia powłoki
C obsługującej sesję (tzw. Login shell)

Sekwencja poleceń wykonywanych podczas zakończenia powłoki C

background image



21.1 Podstawowe zmienne powłoki



21.2 Przykłady

.logout

obsługującej sesję

Tabela: Podstawowe zmienne pow

Nazwa

Opis

cwd

Pełna nazwa bieżącego katalogu

home

Ścieżka katalogu domowego ustawiona w momencie otwarcia sesji

mail

Nazwa pliku pocztowego

path

Ścieżka przeszukiwanych katalogów z poleceniami

prompt

Podstawowy znak gotowości po otwarciu sesji; pomocniczym znakiem zachęty jest znak

history

Liczba uprzednio wydanych poleceń dostępnych w mechanizmie historii polece

ignoreeof

Zapobiega kończeniu działania powłoki za pomocą klawisza

^D

(trzeba wyda

exit

)

noclobber

Zapobiega zamazywaniu istniejących plików przy przeadresowaniu

noglob

Zapobiega rozwijaniu nazw plików za pomocą metaznaków

Przykład zawartości pliku

${HOME}/.cshrc

:

1)

Polecenia
określające
podstawowe
zmienne
powłoki C

-

set noclobber

-

set history=100

-

set prompt=”%\! ”

-

set path=${path}:${home}/bin:.

-

echo “Dobrego dnia”

2)

Aliasy poleceń

-

alias dir ‘ls -l’

-

alias tulip ‘ssh tulip.man.poznan.pl’

background image



21.3 Zmienne specjalne powłoki C

W pliku

${HOME}/.logout

można umieścić takie polecenia, jak:

1)

clear

#wyczyść ekran

2)

echo “Do zobaczenia”

#pożegnanie

3) nohup nice find $HOME –name core –ctime +7 –exec /bin/rm –f {} \;&

Zmienne powłoki umożliwiają zapamiętanie i przetwarzanie informacji w programie powłoki. Mogą

być definiowane przez użytkownika drogą przypisania:

set zmienna=wartość

.

Powłoka C obsługuje tablice zmiennych:

set table=(Adam Jan Maria)

Przykład zawartości pliku

${HOME}/.login

:

1)

Określenie własności terminala – np. polecenie

stty erase

‘^H’

przypisujące funkcję kasowania klawiszowi Backspace;

2)

Ustawienie zmiennych środowiskowych za pomocą polecenia

setenv

– np.

setnv PRINTER

prince, które określa

drukarkę domyślną;

Przykład:

set t_d=/usr/tmp

set month=01

Tablica: Zmienne specjalne powłoki C

Zmienna

Przeznaczenie

${#argv}

Liczba argumentów pozycyjnych

$0

Nazwa skryptu

$argv[n]

Argumenty pozycyjne

$1

,

$2

,...

background image



21.4 Przeadresowanie w powłoce C



21.5 Konstrukcje sterujące

$*, $argv[*]

Wszystkie argumenty opozycyjne

$1 $2

...

$$

Numer procesu bieżącej powłoki

Powłoka C nie łączy standardowego wyjścia stdout ze standardowym wyjściem błędów stderr oraz
zamazuje pliki istniejące podczas przeadresowania. Aby przydzielić stderr do stdout, a następnie
przeadresować oba wyjścia do pliku, trzeba użyć sekwencji znaków

>&

:

polecenie argumenty >& plik_wyjściowy

sed ‘s/shell/Shell/g’ plik1 >& plik2

.

Taka sama konwencja dotyczy dopisywania do pliku za pomocą polecenia

>>

:

polecenie argumenty >>& plik_wyjściowy

,

gdzie plik wyjściowy będzie zawierał informację przekazaną po wykonaniu polecenia zarówno na
stdout, jak i na stderr.

Mając ustawioną zmienną noclobber, można wymusić zapis do istniejącego pliku umieszczając

!

za

symbolem przeadresowania (

>!

,

>&!

), lub symbolem dołączania (

>>!

,

>>&!

). Jeżeli zmienna

noclobber nie jest ustawiona, to znak

!

jest ignorowany.

Aby przeadresować

stderr

na

stdout

i następnie oba wyjścia skierować w potoku na wejście

innego polecenia, trzeba dodatkowo użyć znaku

&

polecenie argumenty |& następne_polecenie

UWAGA:

Powłoka C realizuje prostą arytmetykę liczb całkowitych przy pomocy standardowych

operatorów arytmetycznych języka C. Do przypisania wartości zmiennym powłoki

używa się operatorów przypisania języka C.

Instrukcja

if

if ( warunek ) then

# w tej samej linii

background image

lista poleceń

[ else

# część opcjonalna

lista poleceń ]

endif

Instrukcja

for

foreach nazwa_zmiennej ( wartość1 wartość2 ... )

lista poleceń z $nazwa_zmiennej

end

PRZYKŁAD:

if ( $var + 1> $max ) then

@ var1 += 5

@ var2 --

endif

UWAGA:

Polecenie wbudowane

@

służy do przypisania

zmiennej wartości wyrażenia.

PRZYKŁAD:

Przetwarzanie plików w
podkatalogach dr1,
dr2, dr3

foreach dir ( dr1 dr2 dr3 )

cd $dir

foreach file ( * )

if ( -f $file ) then

process $file

endif

end

cd ..

end

background image



21.6 Skrypty w powłoce C

Instrukcja

while

while ( warunek )

lista poleceń

end

PRZYKŁAD:

set month=1

while

(

${month}

<13 )

prosess

${month}

@ month += 1

end

Podstawowe zasady są takie same jak dla powłoki Bourne’a.

#!/usr/bin/csh

# informacja o plikach o danej nazwie

set name=$1

set count=0

foreach dir ( `echo $PATH | sed ’s/:/ /g’` )

if ( -f $dir/$name ) then

ls –l $dir/$name

@ count ++

endif

end

background image



22 Edytor sed

#!/bin/csh

# zapamiętywanie listów, w których nagłówku znajduje się #łańcuch znaków

SLOWO

, przekazywany jako argument skryptu.

echo ”h a” > mailCmd

mail –h < mailCmd > mailList

awk –v SLOWO=$1 ’{

if (index($0, SLOWO) !=0

print $1”\ns “\SLOWO}’ mailList > mailCmd

if (-z mailList) then

echo “brak listu”

else

mail –h <mailCmd > foo$$

rm foo$$

endif

rm mailCmd mailList

end

echo “$count file(s) $1 found“

Jest to edytor strumieniowy. Przetwarza strumień danych wiersz po wierszu, dokonując zmian
według poleceń edycyjnych.

Składnia:

sed ‘s/wzorzec/tekst/g’ nazwa-pliku

gdzie:

wzorzec

jest szukanym ciągiem znaków, a

tekst

jest ciągiem znaków zastępującym wzorzec.

Wzorzec może być zbudowany z wyrażeń regularnych.

background image

Edytor

sed

nie modyfikuje pliku, tylko zmienia tekst na standardowym wyjściu. Ażeby zmienić

zawartość pliku, należy utworzyć plik tymczasowy i wykonać operację

mv

.

Możliwości edytora:

- Selektywne zastępowanie lub usuwanie przez podanie zakresu wierszy:

sed ‘1,25 s/wzorzec/tekst/g’ plik

sed ‘17,$ s/wzorzec/tekst/g’ plik

sed ‘/pattern/ s/wzorzec/tekst/g’ plik

sed ‘/pattern1/,/pattern2/ s/wzorzec/tekst/g’ plik

- Używanie zmiennych powłoki:

Co=IBM

sed ”s/wzorzec $Co/tekst $Co/g” plik

- Wykorzystanie znalezionego wzorca w ciągu

tekst

:

sed ‘s/^[ ]*Rozdział/Część/’ plik

sed ‘s/^\([ ]*\)Rozdział/\1Część/’ plik

Edytor zapamiętuje, jakie znaki zostały dopasowane do części wzorca znajdującymi się
pomiędzy nawiasami poprzedzonymi lewymi ukośnikami.

sed ‘s/\([0-9]\{1,3\}\)\([0-9]\{3\}\)/\1,\2/g’ plik

- Usuwanie wszystkiego oprócz szukanego wzorca:

sed ‘s/.*\(wzorzec\).*/\1/’ plik

- Zastępowanie całych wierszy zawierających wzorzec:

sed ‘s/.*wzorzec.*/tekst/’ plik

PRZYKŁAD:

sed ‘s/wzorzec/tekst/g’ plik > /tmp/sed$$

mv /tmp/sed$$ plik

UWAGA:

1) Usuwanie wierszy zawierających wzorzec należy dokonać z

użyciem polecenia

grep –v ‘wzorzec’ plik

, które pozostawi tylko

wiersze nie zawierające wzorca

2) Polecenia edytora

sed

dostępne są w ramach programu

vi

po

wykonaniu poleceń

:

lub

!obiekt

. Sam edytor daje się także

umieszczać w obrębie potoków, służąc do modyfikacji danych ”w
locie”.

background image



23 Edytor emacs



23.1 Poruszanie się w obrębie pliku

Edytor jest niemodalny i konkuruje z

vi

, przez cały czas funkcjonuje w trybie wstawiania. Nie musi

jednak znajdować się w każdym systemie. Sprawdzenie jego obecności polega na wpisaniu w linii
poleceń nazw:

emacs

,

gnuemacs

,

gnumacs

.

Do wykonywania operacji edycyjnych potrzebne są klawisze specjalne: klawisz Control oraz tzw.
klawisz Meta, którym na ogół jest klawisz Alt. Stosuje się konwencje zapisu:

Ctrl-x

,

Alt-x

,

Ctrl-

Alt-x

, która oznacza jednoczesne wciśnięcie klawisza Control lub/i Alt oraz znaku x. Wyjście z

programu realizuje sekwencja

Ctrl-x Ctrl-c

.

Składnia polecenia wywołującego edytor jest następująca:

emacs nazwa_pliku

.

W trakcie edycji u dołu ekranu widoczny jest pasek stanu, w którym podana jest m.in. nazwa
edytora, typ edytowanego pliku. W przypadku zwykłych plików tekstowych wyświetla się czasem
słowo fundamental.

Tabela: Polecenia edytora emacs do poruszania się w obrębie tekstu.

Polecenie

Opis

Alt->

,

Alt-<

Koniec, początek pliku

Ctrl-v

,

Alt-v

Ekran do przodu, do tyłu

Ctrl-n

,

Ctrl-p

Kolejny, poprzedni wiersz

Ctrl-a

,

Alt-a

Początek wiersza, zdania

Ctrl-e

,

Alt-e

koniec wiersza, zdania

Ctrl-f

,

Alt-f

Znak, słowo do przodu

Ctrl-b

,

Alt-b

Znak, słowo do tyłu

UWAGA:

W większości systemów działają klawisze strzałek, ale nie zawsze.

background image



23.2 Kasowanie znaków i słów



23.3 Wyszukiwanie i zamiana tekstu

Tabela: Polecenia edytora służące do kasowania tekstu.

Polecenie

Opis

Delete

Znak przed kursorem

Alt-Delete

Słowo przed kursorem

Ctrl-d

Bieżący znak

Alt-d

Słowo za kursorem

Ctrl-x Delete

Zdanie przed kursorem

Ctrl-k, Alt-k

Reszta wiersza, zdania

Ctrl-x u

Cofnięcie operacji

UWAGA:

Możliwe jest cofnięcie dowolnej liczby czynności.

Mechanizm ten uruchamiany jest poleceniem

Alt-x query-replace,

wpisywanym w pasku stanu. Polecenie to należy do grupy poleceń nazwanych. Edytor zakłada, że
chcemy znaleźć wystąpienie pewnego tekstu i zastąpić go innym. Pyta więc o szukany wzorzec oraz
nowy tekst. Po znalezieniu czeka na reakcję użytkownika wyrażoną przez wykonanie odpowiednich
poleceń (

y

,

n

,

q

,

!

), które podane są w Tabeli.

Do samego wyszukania wzorca w tekście służą polecenia

Ctrl-s

(do przodu)

Ctrl-r

(do tyłu). Po

odnalezieniu interesującego fragmentu tekstu, możemy opuścić tryb wyszukiwania naciskając
klawisz

Esc

(wtedy kursor pozostanie w nowym miejscu) lub powrócić do punktu wyjścia –

naciskając

Ctrl-g

.

Tabela: Opcje mechanizmu wyszukiwania i zamiany edytora emacs.

Polecenie

Opis działania

y

Zamiana odnalezionego wystąpienia wzorca

n

Pominięcie odnalezionego wystąpienia wzorca i kontynuacja wyszukiwania

q

lub

Esc

Wyjście z trybu wyszukiwania i zamiany bez zamiany odnalezionego
wzorca

!

Zamiana wszystkich wystąpień wzorca w edytowanym pliku

background image



23.4 System pomocy edytora



23.5 Obsługa plików

System pomocy edytora jest rozbudowany. Można go uruchomić sekwencyjnie

Ctrl-h

, przy czym

dwukrotne naciśnięcie tej sekwencji wywołuje główny ekran pomocy. Sekwencja klawiszy

Ctrl-h

i

lub

Ctrl-h t

uruchamia przeglądarkę o nazwie info lub samouczek. Sekwencja

Ctrl-h m

podaje

informację o trybie, w którym edytor się znajduje.

Po uzyskaniu głównego ekranu pomocy można wybrać wskazane opcje. Np. opcja

K

wyświetla

pełny opis działania określonej sekwencji klawiszy.

Po wybraniu

K

należy nacisnąć interesującą nas sekwencję (np.

Alt-<

). Po zapoznaniu się z treścią

opisu,

Ctrl-x l

kończy tryb pomocy.

- Wstawianie zawartości określonego pliku do edytowanego tekstu umożliwia sekwencja:

Ctrl-x i

,

podając także nazwę tego pliku;

- Zapisanie edytowanego tekstu do pliku odbywa się za pomocą sekwencji:

Ctrl-x Ctrl-w

,

z następującym podaniem nazwy pliku;

- Zapisanie tekstu do domyślnego pliku realizują operacje

Ctrl-x Ctrl-s

lub

Ctrl-x s

;

- Możliwe jest edytowanie kolejnych plików, naciskając klawisze

Ctrl-x Ctrl-f

,

które powodują ładowanie edytowanego tekstu do nowego bufora.

Przełączanie pomiędzy buforami zawierającymi tekst możliwe jest wtedy za pośrednictwem
sekwencji

Ctrl-x b

. Naciskając znak

?

, system wyświetla listę edytowanych plików.

Wybierając odpowiednią nazwę, przełączamy się do właściwego pliku. System samoczynnie

background image



24 Pisanie skryptów w jezyku awk



24.1 Pola

umożliwia przełączenie do domyślnego bufora i wtedy wystarczy potwierdzenie klawiszem
Return.

Program

awk

służy do poszukiwania wzorców i przetwarzania tekstów. Wiele elementów jego

konstrukcji jest zaczerpniętych z języka C, ale inne przypominają składnię edytora sed.

Składnia polecenia:

awk [-Fseparator_pól] ‘program’ plik

awk [-Fseparator_pól] –f program_awk nazwa_pliku

gdzie

program

oznacza sekwencję poleceń awk.

UWAGI:

- Opcja

–F

pozwala określić znak separatora pól. Jeżeli jest

podany, to

awk

używa tego znaku do dzielenia wiersza pliku

wejściowego

na

pola.

Pominięcie

opcji

oznacza,

że

separatorem będzie spacja lub tabulacja.

- Każde polecenie programu ma składnię

[wzorzec] [{procedura} ...]

gdzie

wzorzec

określa dopasowanie, zaś

procedura

(nazywana

też akcją) jest zestawem poleceń

awk

, które są wykonywane,

jeśli wzorzec odpowiada bieżącemu wierszowi.

- Każdy plik wejściowy jest przetwarzany wiersz po wierszu.

Pominięcie wzorca oznacza, że procedura dotyczy każdego
wiersza. Pominięcie procedury oznacza, że wiersz należy
przesłać na standardowe wyjście.

Przeczytany wiersz z pliku jest dzielony automatycznie na pola, aby umożliwić dokładniejsze
przetwarzanie. Pola są wydzielone na podstawie separatorów pola. Do każdego pola przypisany

background image



24.2 Typy wzorców dopasowania

jest identyfikator pola o nazwie

$1

,

$2

, ...

$NF

. Każde pole może być przetwarzane niezależnie

za pomocą polecenia

awk

. Liczba pól w przetwarzanym wierszu jest podstawiana do wbudowanej

(inaczej predefiniowanej) zmiennej

NF

, natomiast cały wiersz jest przypisany do identyfikatora

$0

. Ostatnie pole ma identyfikator

$NF

.

Oprócz możliwości dopasowania wierszy lub zakresów wierszy za pomocą wyrażeń regularnych,
awk pozwala porównywać zawartości pola w wierszu.

PRZYKŁAD:

awk –F: ‘{ print $1,

$2 }’ plik

- Wzorce z wyrażeniem regularnym

Wyrażenia regularne umieszczane są pomiędzy ukośnikami:

/wyrażenie_regularne/

- Wzorce z wyrażeniem relacji

Wyrażenia relacji mogą być rozbudowane i zawierać zmienne, funkcje awk, wyrażenia regularne,
wyrażenia arytmetyczne.

PRZYKŁAD:

awk ‘/Kamieniarz/’ spis_prac

awk ‘/^Kamieniarz/’
spis_prac

PRZYKŁAD:

awk ‘$1 == “Kamieniarz” ’
spis_prac

Tabela. Operatory relacji w awk.

Operator

Opis

Przykład

==

Równy

$1==”Informatyka”

<

Mniejszy niż

$1<$2

<=

Mniejszy równy

$2<=$1 - NR

>

Większy

$10>100

>=

Większy równy

zmienna>=$2+3

background image

Jeżeli wartością wyrażenia relacji jest prawda, to wtedy wiersz jest dopasowany i wykonana jest
związana z nim procedura awk.

- Wzorce specjalne

BEGIN

,

END

Te wzorce pozwalają zdefiniować procedury, które mają być wykonane przed przetworzeniem
pierwszego wiersza pliku wejściowego – w przypadku

BEGIN

i po przetworzeniu ostatniego

wiersza tego pliku – w przypadku

END

.

Wzorzec

BEGIN

musi być pierwszym wzorcem na liście wzorców, a wzorzec

END

– ostatnim,

zatem program

awk

ma stukturę:

BEGIN {procedura}

wzorzec {procedura}

.........

END {procedura}

Polecenie z wzorcem

BEGIN

służy do przypisywania zmiennym ich początkowych wartości lub do

!=

Nierówny

$5 != length($2)

~

Zawiera W. REG.

$NF ~ /[A-Z]/

!~

Nie zawiera W. R.

$7 !~ /..[a-z]/

UWAGA:

Wzorce mogą być rozbudowane za pomocą operatorów logicznych

(

&&

,

||

,

!

) i operatora zakresu (

,

) następująco:

wzorzec1 && wzorzec2

wzorzec1 || wzorzec2

wzorzec1, wzorzec2

!wzorzec

gdzie

wzorzec

oznacza wyrażenie regularne lub wyrażenie relacji.

PRZYKŁAD:

awk ‘($0 !~/^$/) && ($1 > 10)

{print $0}’ plik

background image



24.3 Polecenia przypisania i drukowania

ustawiania separatora pól. Procedura związana ze wzorcem

BEGIN

może zawierać dowolne

działania. W procedurze związanej ze wzorcem

END

można umieścić obliczenia końcowe, sumy

składane podczas przetwarzania pliku i inne czynności wykonalne po przetworzeniu wszystkich
wierszy pliku.

Akcje programu awk są częścia polecenia mającego składnię:

[wzorzec] [{procedura}].

W polu procedura umieszczone jest jedno lub więcej poleceń, które określają działania dotyczące
bieżącego wiersza. Każde polecenie jest oddzielone średnikiem, znakiem nowej linii lub znakiem
prawego nawiasu klamrowego

}

.

PRZYKŁAD:

awk ‘BEGIN { FS=”:”; print ”Nazwa pliku ”,
FILENAME }’ plik

awk ‘END {print NR }’ plik

,

które działa podobnie do polecenia

wc –l plik

.

Polecenie przypisania:

zmienna=wyrażenie_awk,

gdzie wyrażenia dopuszczają wartości liczbowe i tekstowe. Są budowane ze stałych, zmiennych,
operatorów i wbudowanych funkcji.

Polecenia drukowania:

print [wyrażenie] [>plik]

: drukuj wyrażenie na standardowe wyjście, oddzielając przecinkami

drukowane zmienne (jeśli nie jest przeadresowane do pliku);

printf format [,wyrażenie] [>plik]

: drukowanie wzorowane na funkcji printf w języku C. Wynik

jest przekazywany na standardowe wyjście, jeśli nie jest przeadresowany do pliku.

Tabela. Wykaz poleceñ steruj¹cych awk.

Polecenie

Opis

if (warunek)

{lista_polec1}

Wykonaj polecenia z listy 1, jeżeli warunek jest spełniony,
w przeciwnym wypadku z listy 2

background image



24.4 Zmienne awk



24.4.1 Zmienne definiowane

[else {lista_polec2}]

while (warunek)

{lista_poleceń}

Dopóki warunek jest spełniony, wykonuj polecenia z listy

for

(wyr_p;warunek;wyr_k)

{lista_poleceń}

Wykonaj wyr_p, a następnie polecenia z listy dopóki
warunek jest spełniony. Po każdym wykonaniu listy
poleceń znajdź wartość wyr_k

break

Przerwij wykonywanie bieżącej pętli

continue

Wykonuj następną iterację pętli, pomijając polecenia
występujące po continue

next

Pomiń sprawdzanie reszty wzorców

exit

Pomiń resztę wierszy pliku, przejdź do wzorca END (jeżeli
istnieje) i zakończ program awk

-

Zmienne definiowane

-

Zmienne wbudowane

-

Zmienne tablicowe

Zmienne awk składają się z liter, cyfr i znaku podkreślenia. Mogą być typu tekstowego lub
liczbowego. Typ wynika z kontekstu.

PRZYKŁAD:

awk ‘BEGIN {prev=””}

{if ($0 !=prev )
print $0}

{prev = $0}’
plik

background image



24.4.2 Zmienne wbudowane



24.4.3 Zmienne tablicowe

Program ten zapamiętuje wczytany wiersz w zmiennej

prev

, która jest porównywana z następnym

wczytanym wierszem. Dany wiersz jest drukowany, jeśli różni się od poprzedniego. Tak działa
polecenie

uniq

!

Program ten można uruchomić inaczej w sposób bardziej czytelny:

awk –f awk_prog plik

,

gdzie program (skrypt) awk zapisany w pliku o nazwie awk_prog zawiera tekst będący
następującą sekwencją poleceń

BEGIN {prev=””}

{if ($0 !=prev ) print $0}

{prev = $0}

.

Użytkownik ma dostęp do tych zmiennych i może w programie zmienić ich wartość. Przechowuj
informacje związane z wykonywanym programem. Nazwy tych zmiennych oraz przypisywane im warto
podane są w Tabeli.

Tabela: Zmienne wbudowane w awk.

Nazwa

Opis

FS

Separator pól w pliku wejściowym. Domyślnymi wartościami są znaki spacji i
tabulacji.

NR

Liczba wczytanych wierszy pliku

NF

Liczba pól w bieżącym wierszu

FILENAME

Nazwa bieżącego pliku wejściowego

OFMT

Format wyjścia dla liczb

OFS

Separator pól dla wyjścia

ORS

Separator rekordów dla wyjścia (domyślnie jest nim znak nowej linii)

RS

Separator rekordów wejścia (domyślną wartością jest znak nowej linii)

background image



24.5 Polecenia wbudowane

Dostępne są tablice jednowymiarowe, których się nie deklaruje, wystarczy przypisanie wartości jej
elementom. Do elementów tablicy odwołuje się za pomocą składni:

nazwa_tablicy[index]

,

gdzie indeks może mieć wartość liczbową lub tekstową. Wartości elementów tablicy mogą być typu
liczbowego lub tekstowego. Dostęp do elementów tablicy odbywa się za pomocą odwołania
zawierającego indeks elementu lub sekwencyjnie z użyciem pętli

for (n_zm in n_tablicy) lista_poleceń

,

gdzie n_zm jest nazwą zmiennej awk, która przebiega wartości wszystkich indeksów tablicy.
Polecenia listy są wykonywane w kolejności ich występowania.

Program awk obsługuje pewną liczbę funkcji wbudowanych, które mogą być używane w wyrażeniach.

Tabela: Funkcje wbudowane

Nazwa funkcji

Opis

cos(wyrażenie_awk)

Zwraca wartość cosinusa

exp(wyrażenie_awk)

Zwraca wartość wykładniczą

index(napis1,napis2)

Zwraca pozycje napisu2 w napisie1 lub 0, jeżeli napis1 !~

length(napis)

Zwraca długość napisu

sin(wyr_awk)

Zwraca wartość sinusa

sprintf(format,wyrażenie_awk)

Zwraca wartość sformatowaną

substr(napis,start,długość)

Zwraca fragment napisu o podanej długości od znaku na pozycji
start

PRZYKŁADY:

1)

awk ‘{if(($3~/[a-zA-Z]*/) && (length($3) == 6)) print $0}’
plik

awk –f tab_awk lista_studentów’

,

gdzie skrypt tab_awk ma postać

#program tab_awk

background image

{lista[NR] = $0}

END {for (i=NR; i>0; i--) {print lista[i]}}

i powoduje odwrócenie kolejności na liście studentów.

2)

awk –f licz_awk lista_pub

,

gdzie skrypt licz_awk ma postać:

#program licz_awk podaje liczbę publikacji członków zespołu

BEGIN{

pub[“Kamieniarz”]

pub[“Florek”]

pub[“Musiał”]

pub[“Dębski”] }

{for (name in pub)

{for (i=1; i<=NF; i++) {

if ($i ~ name) {pub[name] ++}

}}

}

END{

for (name in pub) {

print name, “Liczba publikacji”,

pub[name]}

}

3)

awk –f zlicz_awk nazwa_pliku

#plik zlicz_awk podaje liczbę wystąpień słów w pliku tekstowym

background image



25 Administracja systemu UNIX

{for (i = 1; i<= NF; i++) {

slowo = $i;

gsub(”,”,””,slowo);

gsub{”\.”,””,slowo);

slowaT[slowo]++

}

}

END{

for (slowo in slowaT)

if (slowo !=””) {print slowo, slowaT[slowo]}}

Tematem wykładu jest przedstawienie zadań administratora, omówienie plików używanych do
administrowania

systemem

oraz

automatyzacja

czynności

administratora

za

pomocą

programowania powłokowego. Powłoka jest kluczem do administrowania systemem w sposób
produktywny i na wysokim jakościowo poziomie ze względu na niezawodne sterowanie złożonymi
procesami.

Zadania administratora

1.

Dodawania, zmiana i usuwanie

a) kont użytkowników
b) oprogramowania
c) elementów sprzętu;

2.

Rutynowa konserwacja zapobiegająca wielu kłopotom

a) tworzenie kopii codziennego przetwarzania
b) odtwarzanie plików;

3.

Diagnostyka i bieżące usuwanie problemów w systemie

a) Monitorowanie wykorzystania systemu – dysku, procesora i sieci

background image



25.1 Oprogramowanie wspierające administrację



25.1.1 Pliki i polecenia związane z administrowaniem systemem

b) Utrzymywanie usług – poczty, aplikacji internetowych, sieci;

4.

Zapewnienie bezpieczeństwa w dostępie do systemu

;


5.

Pomoc dla użytkowników

.

Pliki i polecenia związane z administrowaniem systemem

Lokalizacja najważniejszych plików administracyjnych

Rodzaje plików systemu UNIX

Znakowe i blokowe pliki specjalne

Pliki i polecenia związane z administrowaniem systemem umieszczone są w określonych katalogach,
których listę podaje tabela.

Tabela. Katalogi administracyjne

Katalog

Opis

/etc

Mieszczą się w nim pliki passwd i group oraz polecenia przydatne
dla administratora

/usr/bin

Zawiera pliki wykonywalne

/usr/adm lub /var/adm

Katalogi z plikami rozliczeń

/usr/lib lub /var/adm

Zawiera niektóre polecenia, dzienniki eksploatacji oraz tablice
polecenia

cron

/usr/lib/acct

Mieści polecenia rozliczeń

/usr/lib/uucp

Mieści polecenia

uucp

do komunikacji między systemami

/usr/lp

Obejmuje system buforowania drukarki (spooler)

/usr/news

Katalog wiadomości lokalnych

/usr/pub

Gromadzi pliki ”publiczne”

/usr/tmp

Katalogi tymczasowe

/tmp

Lokuje pliki tymczasowe

/usr/man

Zawiera strony podręcznika ekranowego

/usr/local

Gromadzi lokalne oprogramowanie

background image



25.1.2 Lokalizacja najważniejszych plików administracyjnych

/usr/local/bin

Mieści moduły wykonalne lokalnych programów

Lokalizacja najważniejszych plików administracyjnych podana jest w tabeli ”Pliki i skrypty
administracyjne”

Tabela. Pliki i skrypty administracyjne

Plik lub polecenie

Opis

/etc

Nazwa katalogu

/etc/brc

Skrypt wykonywany przez program init po
uruchomieniu systemu

/etc/checklist

Domyślne systemy plików sprawdzane przez fsck

/etc/group

Lista identyfikatorów grup

/etc/inittab

Lista zdarzeń dla programu init

/etc/motd

Plik zawierający komunikat dnia

/etc/mnttbl

Lista wolumenów dołączonych do systemu plików

/etc/passwd

Lista użytkowników i haseł dostępu do konta

/etc/profile

Skrypt startowy sesji użytkownika

/etc/rc

Skrypt startowy systemu

/etc/termcap

Baza danych opisujących właściwości terminali

/etc/wtmp

Dziennik procesów logowania

/usr/adm

Nazwa katalogu

/usr/adm/pacct

Dziennik rozliczeń

/usr/lib

Nazwa katalogu

/usr/lib/cronlog

Dziennik działania programu cron

/usr/lib/crontab

Lista zdarzeń dla programu cron

Tabela. Polecenia administracyjne znajdujące się w katalogu /etc

Polecenie

Opis

config

Konfiguracja systemu UNIX

crash

Awaryjne zakończenie pracy systemu

cron

Wykonanie poleceń zawartych w /usr/lib/crontab

fsck

Sprawdzenie systemu plików

fsbd

Usunięcie błędów w systemie plików

init

Inicjalizacja systemu

killall

Zakończenie wszystkich procesów

labelit

Zapisanie etykiety wolumenu (nazwanego zbioru dysków) na dysku
lub na taśmie

mkfs

Utworzenie systemu plików

mknod

Utworzenie pliku specjalnego (np. nazwanego potoku)

mount

Dołączenie wolumenu do systemu plików

shutdown

Łagodne zamknięcie systemu

startup

Łagodne uruchomienie systemu

background image



25.1.3 Rodzaje plików systemu UNIX



25.1.4 Znakowe i blokowe pliki specjalne

umount

Odłączenie wolumenu od systemu plików

volcopy

Kopiowanie systemu plików między wolumenami

wall

Wysyłanie wiadomości do wszystkich zalogowanych użytkowników

Administrator zajmuje się także urządzeniami (terminale, dyski, napędy taśmy, drukarki), któ
specjalnymi i dzielą się na dwie grupy. Pierwsza grupa, to pliki znakowe, a druga, to pliki blokowe. R
plików systemu UNIX podane są w tabeli. Pliki niestandardowe tworzy się za pomocą polecenia

mknod

Tabela. Rodzaje plików systemu UNIX

Rodzaj pliku

Opis

Zwykły

Standardowy plik

Katalog

Standardowy katalog

Urządzenia znakowe

widziane jako abstrakcyjna tablica znaków

/dev/acu

Samoczynne połączenia systemowe (cu, uucp)

/dev/console

Konsola systemowa

/dev/rdsk*

Dysk

/dev/rmt~

Taśma

/dev/lp

Drukarka

/dev/tty

Terminal

Urządzenia blokowe

widziane jako abstrakcyjna tablica bloków danych o stałej długo

/dev/dsk*

Napęd dysku

/dev/mt~

Napęd taśmy

Nazwany potok

Połączenie między dwoma niezależnymi procesami uruchamianymi na tej
samym komputerze; zlokalizowany w katalogu /dev

Dowiązanie sztywne

Dodatkowa nazwa pliku nadana w obrębie tego samego systemu plik

Dowiązanie symboliczne

Dodatkowa nazwa pliku lub katalogu (również w innym systemie plik

Gniazdo (BSD)

Plik specjalny umożliwiający połączenie między procesami (podobne do
nazwanego potok); związany jest z oprogramowaniem sieciowym TCP/IP

Znakowe pliki specjalne są urządzeniami sprzętowymi, ale zachowują się tak samo, jak zwykłe
pliki. Zapisywanie danych do plików znakowych odbywa się za pomocą poleceń powłoki.

background image



25.2 Dodawanie, zmiana i usuwanie kont użytkowników

Posługiwanie się plikami specjalnymi przez użytkowników można ograniczyć, ustawiając
odpowiednio prawa dostępu do nich. Terminale (pliki

/dev/tty

) powinny w szczególności być

zabezpieczone trybem 700, który uniemożliwia zapis innym użytkownikom do aktywnego
terminala. Wyjątkiem jest polecenie

/etc/wall

, którym administrator przełamuje ten mechanizm

ochrony.

Blokowe pliki specjalne wymagają specjalnych poleceń. Większość plików specjalnych blokowych
i znakowych znajduje się w gestii administratora systemu. Wszystkie pliki, polecenia i katalogi
wspomagające pracę administratora dzielą się na następujące kategorie: stosowane dla codziennej
administracji, automatyzujące zarządzanie oraz używane podczas uruchamiania systemu i jego
zamykania.

PRZYKŁAD:

date > /dev/console

powoduje wyświetlenie daty

na konsoli;

find . –cpio /dev/rmt0

zapisuje kopię katalogu na

taśmie;

pr plik > /dev/lp

drukuje plik w sposób

sformatowany na drukarce.

Dodawanie, zmiana i usuwanie kont należy do codziennych czynności administratora. Oznacza
wprowadzenie nowych pozycji do pliku passwd i group, utworzenie nowych katalogów i plików,
ustawienie zmiennych środowiskowych. Czynności te warto wykonać automatycznie za pomocą
skryptów powłoki.

Niech adduser oznacza skrypt wspomagający otwarcie nowego konta i zapewniający
użytkownikowi podstawową konfigurację. Ta czynność wykonywana jest w kilku etapach opisanych
w tym skrypcie.

# ustalenie identyfikatora nowego użytkownika

usrno=`tail –1 /etc/passwd | cut –f3 –d:`

# znalezienie wartości UID

# ostatniego użytkownika

usrno=`expr $usrno + 1`

# ustalenie identyfikatora nowego użytkownika

background image

echo ”Podaj nazwę grupy dla użytkownika:”

read group

grpno=`grep $group /etc/group | cut –f3 –d:`

echo ”Podaj nazwę konta użytkownika:”

read logname

echo ”Podaj nazwisko i telefon”

read usrname

echo ”Podaj nazwę systemu plików dla katalogu domowego:”

read fs

# Dodanie nowego użytkownika do pliku passwd

echo ”${logname}:..,:${usrno}:${grpno}:${usrname}:/${fs}\

/${logname}:/bin/sh” >> /etc/passwd

# Utworzenie niezbędnych katalogów i plików użytkownika

homedir=/${fs}/${logname}

mkdir ${homedir}

mkdir ${homedir}/public_html

mkdir ${homedir}/ftp

mkdir ${homedir}/src

cp /unixfs/proto/protofile ${homedir}/.profile

# Nadanie praw dostępu do plików i katalogów użytkownika

chmod 777 ${homedir} ${homedir}/*

# Modyfikacja praw dostępu do pliku .profile

background image

chmod 700 ${logname}/.profile

# Przekazanie prawa własności utworzonych plików i katalogów

# nowemu użytkownikowi i jego grupie

chown ${logname} ${homedir} ${homedir}/* ${homedir}/.profile

chgrp ${group} ${homedir} ${homedir}/* ${homedir}/.profile

W podobny sposób należy dodać nową grupę do pliku /etc/group.

Niech deluser oznacza skrypt wspomagający procedurę usunięcia konta użytkownika. Jest to
związane z usunięciem z systemu katalogu domowego oraz odwołań do jego nazwy znajdujących
się w plikach /etc/passwd i /etc/group. Poszczególne czynności można opisać następująco.

# Usunięcie odwołania w pliku /etc/passwd i /etc/group

sed ”/^${logname}/d” < /etc/passwd > /etc/qpasswd

cp /etc/qpasswd /etc/passwd

cd /${fs}/${logname}

if [ $? –eq 0 ]

then

rm –rf *

cd ..

rmdir ${logname}

else

echo ”Nie ma konta /${fs}/${logname}”

fi

UWAGA:

Większość systemów UNIX zawiera zestawy narzędzi do
zarządzania kontami i grupami użytkowników. Należą do nich
polecenia useradd, userdel, usermod, groupadd,

background image



25.3 Dodawanie, zmiana i usuwanie oprogramowania



25.4 Uruchamianie i zamykanie systemu



25.5 Rutynowa konserwacja systemu

groupdel i groupmod.

Dodawanie, zmiana i usuwanie oprogramowania powinno odbywać się w jednym centralnym
punkcie i te modyfikacje powinny być przekazywane do odległych systemów przez sieć, ładowane
na tych systemach powinno odbywać się w czasie mniejszego obciążenia, a zakończenie instalacji
powinno być potwierdzone.

Narzędziem pilotującym prace administracyjne jest program cron, nazywany demonem
zegarowym. Rezyduje w pamięci i sprawdza co pewien czas, czy są zadania do wykonania
umieszczone w kolejkach przez polecenia at, batch, crontab. Polecenia te spełniają następujące
zadania:

at

- przekazuje polecenia do kolejki z określonym czasem uruchomienia zadania;

batch

– ustawia wskazane polecenie w kolejce zadań uruchamianych w czasie dogodnym dla

systemu;

crontab

– obsługuje listę poleceń uruchamianych w określonych momentach czasowych.

Polecenie cron inicjuje się podczas uruchamiania systemu, a zatrzymuje się w chwili zamykania
systemu.

Uruchamianie i zamykanie systemu powinno odbywać się łagodnie. Proces uruchomienia
nadzorowany jest przez program init, którego czynności sterowane są przez plik /etc/inittab.
Bezpieczne zamknięcie systemu uzyskuje się za pomocą polecenia

shutdown

.

background image



25.6 Bezpieczeństwo systemu

Rutynowa konserwacja systemu obejmuje regularne tworzenie kopii zapasowych, które w razie
potrzeby mogą być użyte do odtwarzania utraconych plików. Ważne też jest monitorowanie
wykorzystania przestrzeni dyskowej oraz okresowe sprawdzanie dzienników systemu w
poszukiwaniu opisu błędów.

Bezpieczeństwo systemu uzyskuje się przez:

a) Autoryzowany dostęp
b) Spójność systemu
c) Prywatność danych
d) Ciągłość usług

Zapobieganie nieautoryzowanemu dostępowi wymaga przestrzegania zasady, że wszyscy
użytkownicy i wszystkie grupy mają hasła, a identyfikatory użytkowników nie powtarzają się. Łatwo
to sprawdzić, wykonując polecenia:

awk –F: ‘if ( $2 == ”” ) {print }’ /etc/passwd /etc/group

cut –f1 –d: /etc/passwd | sort | uniq –d

cut –f1 –d: /etc/group | sort | uniq –d

Utrzymanie spójności systemu uzyskuje się przez nadzór nad prawami dostępu do katalogów i
plików wykonywalnych. Prawa dostępu omawiane poprzednio (rwx) nie wyczerpują wszystkich
możliwości ochrony plików. Pozostałe prawa dostępu podane są w Tabeli.

Prawa SUID/SGID powodują, że procesy wykonujące pewne polecenia mają taki sam dostęp do
zasobów systemowych, jak właściciel/grupa wykonywanych programów. Oznacza to, że
użytkownikom umożliwia się przyjęcie cudzej tożsamości (nawet roli administratora) na czas
wykonywania pewnych poleceń. Dotyczy to programów, których znaczniki dostępu przyjmują
wartości:

a) 4000 (SUID) – Wtedy identyfikator użytkownika zostaje ustawiony na

identyfikator właściciela wykonywalnego pliku;

b) 2000 (SGID) – Wtedy identyfikator grupy zostaje ustawiony na wartość

identyfikatora grupy, do której należy właściciel wykonalnego pliku;

c) 1000 (Sticky bit) – bit nieusuwalności programu z pamięci

Tabela. Rozszerzone prawa dostępu do plików

Kod

Nazwa

Znaczenie

t

Sticky bit

Zachowanie w pamięci wykonanego programu (po jego zakończeniu) –
np. vi

s

SUID

Ustawienie identyfikatora użytkownika dla procesu w czasie wykonywania

s

SGID

Ustawienie identyfikatora grupy dla procesu w czasie wykonywania

background image



25.7 Pomoc

Potencjalnie najbardziej niebezpieczny jest pierwszy znacznik. Szczególne zagrożenie występuje,
jeżeli właścicielem takiego pliku jest administrator (root). Powinien on zatem okresowo (np.
wykorzystując polecenie cron) wyszukiwać takie programy. Sposób na to jest następujący:

find / –user root –perm 4000 –exec ls –lg {} \;

find / –perm 2000 –exec ls –lg {} \;

W odniesieniu do nadzoru katalogów, to należy okresowo sprawdzać te z nich, które mogą być
odczytywane lub zapisywane przez wszystkich. Oznacza to potrzebę uruchamiania polecenia

find / –perm 777 –type d –print

.

Prywatność danych osiąga się, nadzorując prawa dostępu do plików i katalogów. Ułatwia to
polecenie umask 027, umieszczone w pliku /etc/profile lub .profile (.cshrc). Wówczas tworząc
nowe pliki, tylko użytkownik (jako właściciel) i jego grupa mają do nich dostęp. Sprawdza się to
poleceniem

find / –perm 777 –type f –print

.

W przypadku użytkowników zewnętrznych, sposobem na zapobieganie przerwania ciągłości usług
jest udostępnianie systemu w środowisku o ograniczonej możliwości powłoki. Realizowane jest to
przez uruchomienie podczas logowania programu /bin/rsh zamiast /bin/sh. Wówczas
użytkownicy nie będą mogli po rozpoczęciu sesji wykonać polecenia cd, zmienić wartości zmiennej
środowiskowej PATH, zmienić przypisania strumienia wyjściowego oraz wykonać żadnego
polecenia zaczynającego się od ”/”. Ograniczenia te zostaną uaktywnione po wykonaniu się
wszystkich poleceń umieszczonych w pliku .profile użytkownika. Ten plik powinien być
zabezpieczony przed możliwością jego modyfikacji przez użytkownika i zawierać w zmiennej PATH
tylko dostęp do katalogów zawierających niezbędne i bezpieczne polecenia. Te niezbędne polecenia
dołącza się do ograniczonych zbiorów poleceń mieszczących się w katalogach /rbin i /usr/rbin.

Jeżeli plik .profile jest określony następująco,

PATH=:/rbin:usr/rbin

cd /unixfs/rdir

export PATH,

to użytkownicy mogą wykonać tylko polecenia mieszczące się w katalogu bieżącym oraz /rbin i
usr/rbin. Nie mają też możliwości poruszania się w systemie plików.

Pomaganie użytkownikom należy do codziennych czynności administratora. W szczególności
powinien systematycznie powiadamiać użytkowników o wprowadzonych zmianach. Do komunikacji
z użytkownikami służą polecenia mail, news, wall oraz plik /etc/motd zawierający wiadomość

background image



26 Usługa cron

wyświetlaną podczas uruchamiania sesji przez użytkownika. Pliki zawierające wiadomości
umieszczone są w katalogu /usr/news. Polecenie news sprawdza katalog wiadomości celem
wyświetlenia zawartych w nich bieżących informacji. Jeżeli wywołane jest bez argumentów, to
drukuje wszystkie pliki z danego katalogu.

Pozwala na szeregowanie zadań w celu ich cyklicznego uruchamiania, a dane wyjściowe moż
przekazywać do wskazanego pliku lub do określonego użytkownika dzięki dostępowi do mechanizmu
poczty. Usługa ta realizowana jest przez demona cron, który nigdy nie przerywa swojego działania.
Jest on uruchamiany automatycznie podczas ładowania systemu. Zadania zlecane demonowi
zapisane

w

odpowiednich

plikach

systemowym

umieszczonych

w

podkatalogu /var/spool/cron/crontabs (w systemie HP-UX - /usr/spool/croc/crontabs; w
systemie Linux jest to katalog /usr/spool/cron/tabs). Nazwy tych plików pokrywają się
nazwami

kont

użytkowników,

zatem

administrator

umieszcza

zlecenia

w

pliku /var/spool/cron/crontabs/root. Użytkownicy dodają zadania w swoich plikach przez
wywołanie polecenia crontab.

Składnia polecenia crontab:

crontab [file]

crontab opcje [user]

.

W pierwszej wersji – bez podania nazwy pliku - polecenie crontab określa domyślny plik crontab i
umieszcza go w odpowiednim katalogu. Jeżeli jednak jest wywołane z nazwą pliku

file

, to dla

użytkownika o identyfikatorze

user

, sekwencja poleceń zapisana w pliku

file

zostanie skopiowana

do pliku crontab, czyli np. /var/spool/cron/crontabs/user. Jeżeli użytkownik

user

zapisa

wcześniej pewne pozycje do pliku crontab, to zostaną zastąpione przez polecenia umieszczone w
pliku

file

.

Administrator może uruchomić program crontab dla innego użytkownika. Wówczas korzysta z
drugiej wersji polecenia, podając jego identyfikator po dowolnej opcji. W ograniczonym zakresie ta
wersja polecenia jest dostępna dla wszystkich użytkowników. Dostępne opcje są następujące:

-e Edycja bieżącego pliku crontab lub tworzenie nowego;

-l Wyświetlenie bieżącego pliku użytkownika;

-r Kasowanie pliku crontab.

-u (opcja obsługiwana w systemie Linux) z następującym identyfikatorem użytkownika,

umożliwia administratorowi instalację plików crontab danemu użytkownikowi.

crontab –l > nazwa_pliku

vi nazwa_pliku

background image

Plik crontab zawiera listę poleceń, które powinny być wykonane automatycznie o podanym czasie. W
jednej linii należy umieścić jedno polecenie lub grupę poleceń oddzielonych średnikami. Polecenie
jest poprzedzone podaniem czasu rozpoczęcia jego wykonywania. Do tego służy pięć pó
rozdzielonych znakiem odstępu. Poszczególne pola oznaczają kolejno:

minuty 0-59

godziny 0-23

dzień miesiąca 1-31

miesiąc 1-12

dzień tygodnia 0-6, gdzie 0 oznacza niedzielę.

Przyjęta jest konwencja, że przecinkiem oddziela się wybrane wartości, za pomocą średnika określa
się zakres, a gwiazdka służy do wskazania wszystkich możliwych wartości. Ostatnie pole, które jest
przeznaczone na polecenie, może zawierać spacje, natomiast pozostałe pola nie mogą zawiera
spacji. Jeśli pierwszym znakiem w linii jest #, to linia jest traktowana jako komentarz i jest
ignorowana. Jeśli zaś w poleceniu znajduje się znak %, tekst występujący po znaku procentu będzie
oznaczał standardowe wejście dla polecenia.

Usługa cron jest konfigurowana za pomocą plików cron.allow i cron.deny,

w których można umieszczać identyfikatory użytkowników – po jednym w każdej linii. Dostęp do tej
usługi określony jest w następujący sposób:

- Jeżeli istnieje plik cron.allow, to tylko użytkownicy wymienieni w tym pliku mog

uruchomić crontab;

- Jeżeli nie istnieje cron.allow, a istnieje cron.deny, to użytkownicy umieszczeni w tym

PRZYKŁADY:

crontab nazwa_pliku

crontab –l –u user

crontab –u

user /tmp/user_cron

PRZYKŁADY:

0,15,30,45 * * * * (echo ‘ \c’; date; echo ””)
> /dev/console

59 3 * * 6 find / -print |
program_backup

0 0 1,15 * * echo ” Dzień serwisowy” |
mail user

59 11 31 12 * /etc/wall%Szczęśliwego
Nowego Roku!

background image



Powered by

ILIAS

2.4.4

pliku nie mają dostępu do polecenia crontab. W celu udostępnienia usługi cron wszystkim

użytkownikom, wystarczy, aby plik cron.deny był pusty;

- Jeżeli żaden z plików konfiguracyjnych nie istnieje, to tylko root ma dostęp do usługi.

UWAGA:

Lokalizacja plików konfiguracyjnych zezwalających na dostęp do polecenia
crontab:

HP-UX /usr/lib/cron/cron.{allow,deny}

IRIX, Solaris /etc/cron.d/cron.{allow,deny}

SunOS /var/spool/cron/cron.
{allow,deny}

Linux /var/spool/cron/{allow,deny}

AIX, Digital UNIX /var/adm/cron/cron.{allow,deny}


Wyszukiwarka

Podobne podstrony:
System operacyjny UNIX dla poczatkujacych i zaawansowanych, podsumowanie
Strzelecki - kolos-wejściówka -pytania i odp, WAT, semestr VI, systemy operacyjne UNIX
Pierwsza wersja systemu operacyjnego Unix powstała w Bell Labs firmy AT
System operacyjny UNIX dla poczatkujacych i zaawansowanych, skorowidz
Pierwsza wersja systemu operacyjnego Unix powstała w Bell Labs firmy AT
Solaris pytania 02, WAT, semestr VI, systemy operacyjne UNIX
System operacyjny UNIX dla poczatkujacych i zaawansowanych, rozdzial1 i2
System operacyjny UNIX dla poczatkujacych i zaawansowanych, rozdzial3
Systemy operacyjne unix polecenia podstawowe
System operacyjny UNIX dla poczatkujacych i zaawansowanych, rozdzial8 i reszta
System operacyjny UNIX dla poczatkujacych i zaawansowanych, rozdzial6
System operacyjny UNIX dla poczatkujacych i zaawansowanych, rozdzial5

więcej podobnych podstron