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, 

– 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 

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ą 

– 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ą 

– 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 

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: 

– 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

 

powtarza poprzednie wyszukiwanie

 

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ł 

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 

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 

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

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 

są 

odpowiednich 

plikach 

systemowym 

umieszczonych 

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 

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}