Powłoka skrypt zawierający ścieżkę do katalogu

Transkrypt

Powłoka skrypt zawierający ścieżkę do katalogu
Kierunek:
Przedmiot:
Forma zajęć:
Temat:
Informatyka i Ekonometria
Informatyka ekonomiczna
Ćwiczenia
Systemy operacyjne. System Linux
1. System operacyjny Linux
1.1. Systemy operacyjne w laboratoriach CI UEK w Krakowie
SO: Novell Netware
SO: Linux
SO: MS Windows
SO: MS Windows
INTERNET
SO: MS Windows
SO: MS Windows
SO: MS DOS
SO: MS DOS
Rys. 1. Systemy operacyjne w Centrum Informatyki UEK w Krakowie
• Microsoft Windows,
• Microsoft DOS,
• Novell Netware,
• Linux.
1
1.2. Historia systemu operacyjnego Linux
Podstawowe warunki i przyczyny powstania systemu operacyjnego Linux:
• wąskie i specjalistyczne grono użytkowników systemów uniksowych,
• szybki rozwój Internetu na początku lat dziewięćdziesiątych,
• powstanie procesora Intel 80386 umożliwiającego pracę wielozadaniową,
• napisanie przez Linusa Torvaldsa programów dla systemu operacyjnego
Minix oraz jądra nowego systemu operacyjnego (opartego na Miniksie),
• ogłoszenie przez Tornvaldsa na grupie dyskusyjnej comp.os.minix
(sierpień 1991) prac nad bezpłatnym systemem dla komputerów PC,
• dostosowanie systemu Linux do norm POSIX pozwalające na
przenoszenie oprogramowania pomiędzy Linuksem a komercyjnymi
systemami uniksowymi,
• opracowanie Linuksa na podstawie licencji GNU GPL (GNU General
Public Licence) fundacji FSF (Free Software Fundation),
• pojawienia się różnych dystrybucji Linuksa, (np. Slackware, RedHat,
Debian, SuSE, Mandrake).
2
1.3. Praca zdalna z serwerem linuksowym
• system operacyjny (SO) to program lub zbiór programów służących do
zarządzania pracą komputera,
• Linux jest systemem wielozadaniowym i wielodostępnym,
• wielozadaniowość to tryb pracy systemu operacyjnego, w którym
użytkownik może uruchomić w tym samym czasie więcej niż jedno
zadanie,
• wielodostęp to tryb pracy systemu operacyjnego, w którym w tym samym
czasie więcej niż jeden użytkownik może pracować z systemem i
korzystać z jego zasobów,
• równoczesna praca z systemem odbywa się za pomocą komputerów
pełniących funkcje tzw. terminali,
Terminale
Komputer pracujący w trybie
wielodostepnym
Rys. 2. Schemat pracy z systemem wielodostępnym
3
• użytkownik, który chce pracować z systemem Linux, musi mieć do tego
odpowiednie uprawnienia,
• weryfikacja uprawnień odbywa się poprzez sprawdzenie znajomości
nazwy użytkownika (tzw. login) i hasła,
• użytkownik może korzystać wyłącznie z zasobów systemu, do których
ma nadane prawa,
• kontrolę nad całym systemem sprawuje administrator, tzw. root,
• praca z serwerem odbywa się zazwyczaj w trybie tekstowym, jako tzw.
praca zdalna, czyli praca na odległość za pomocą odpowiedniego
programu emulującego terminal,
• praca zdalna w trybie tekstowym może być realizowana za pomocą
protokołu telnet lub ssh,
• do
pracy zdalnej
z
zastosowaniem
protokołu
ssh
mogą
wykorzystywane różne programy, np. CRT, SSh32, PuTTY.
System Operacyjny: Linux
Serwer: ie.ae.krakow.pl
System Operacyjny:
MS Windows
dane przesyłane zgodnie z protokołem ssh
Emulacja terminala: program PuTTY
Rys. 3. Praca zdalna z serwerem linuksowym
4
być
1.4. Praca zdalna z wykorzystaniem programu PuTTY
1. Uruchomienie program PuTTY:
2. Podanie nazwy serwera (np. ie.uek.krakow.pl) w polu Host Name (or IP
address) oraz wybranie protokołu SSH:
3. W razie konieczności skonfigurowanie ustawienia programu (np.
wielkość i krój czcionki, kolor tła itp.) poprzez skorzystanie z kategorii
Window/Appearance:
5
4. Naciśnięcie przycisku Open.
5. Podanie nazwy użytkownika (login as:) i hasła (password:):
Podczas pracy można wydawać polecenia i uruchamiać programy, np.:
• wyświetlić listę użytkowników zalogowanych w systemie:
$ finger
6
• zmienić swoje hasło:
$ passwd
po wydaniu tego polecenia użytkownik zostanie poproszony o
podanie bieżącego (starego) hasła
Changing password for nowakj
Old password:
następnie zostanie poproszony o podanie nowego hasła i jego
powtórne wprowadzenie (potwierdzenie).
New password:
W celu zakończenia pracy z serwerem należy wydać polecenie:
$ logout
7
2. System plików
System plików jest to sposób zapisu logicznej struktury danych (tzn. plików
oraz katalogów) na fizycznym nośniku, tzn.:
System plików = zbiór plików + sposób ich uporządkowania.
Pliki, jako podstawowe jednostki logiczne systemu plików:
• służą do przechowywania programów (rozkazów dla procesora) i danych
(np. znaków, liczb, wierszy tekstu),
• są przechowywane na nośnikach danych (np. dyskach twardych, dyskach
optycznych, pamięciach flash),
• mają strukturę ustaloną przez ich twórcę,
• posiadają swoją nazwę oraz atrybuty (np. rozmiar, datę i czas utworzenia,
prawa dostępu),
• są zarządzane przez system operacyjny w sposób zgodny z wymaganiami
i możliwościami systemu plików.
Rodzaje systemów plików:
• liniowy - wszystkie pliki umieszczane są w jednym katalogu,
• drzewiasty (hierarchiczny) - występują katalogi mogące zawierać pliki i
podkatalogi, w których także mogą znajdować się pliki lub podkatalogi
niższego poziomu.
8
Funkcje systemu operacyjnego w zakresie zarządzania systemem plików:
• przydział miejsca na nośniku (dysku, dyskietce) dla systemu plików oraz
ewidencja zajętych i wolnych obszarów nośnika,
• określenie sposobu uporządkowania plików i organizowanie do nich
dostępu zgodnie z wymogami i możliwościami systemu plików,
• wykonywanie operacji na plikach, np. kopiowanie, przesuwanie,
kasowanie, zmiana nazwy itp.
/
bin
katalog główny
dev
home
etc
...
katalogi systemowe
basia
krysia
janek
...
katalogi domowe
public_html
grafika
raporty
katalogi użytkowników
Rys. 4. Schemat struktury katalogów w Linuksie
W systemie plików Linuksa:
• struktura katalogów jest na ogół ściśle określona, tzn. katalog:
− /bin - zawiera niezbędne do funkcjonowania systemu programy,
− /boot - zawiera jądro systemu i pliki startowe,
− /dev - zawiera urządzenia (widziane, jako pliki, np. /dev/hda1 - dysk
twardy, /dev/fd0 - stacja dyskietek),
− /etc - zawiera pliki konfiguracje systemu,
9
− /home - zawiera katalogi domowe użytkowników,
− /lib - zawiera m.in. biblioteki systemowe i ładowalne moduły jądra,
− /lost+found - zawiera odzyskane pliki,
− /mnt - zawiera zamontowane systemy plików innych urządzeń (np.
dyskietki, CD-ROM-u),
− /proc - zawiera tzw. pliki statusu jądra, urządzeń i procesów,
− /root - jest to katalog domowy administratora,
− /sbin - zawiera programy wykorzystywane przez administratora do
zarządzania i konfigurowania systemu,
− /tmp - zawiera pliki tymczasowe tworzone przez różne programy
podczas ich pracy,
− /usr - zawiera programy, biblioteki i dokumenty dostępne dla
użytkowników systemu,
− /var - zawiera m.in. przychodzącą i wychodzącą pocztę oraz logi
systemowe.
• każdy użytkownik systemu posiada swój katalog, tzw. katalog domowy,
• użytkownik może wykonywać operacje na plikach znajdujących się w
jego katalogu domowym, jego podkatalogach oraz w innych katalogach o ile ich właściciele dadzą mu do tego prawo,
• każdy plik posiada swoją nazwę o długości do 255 znaków,
• nazwa pliku może składać się, m.in. z liter, cyfr, znaku podkreślenia,
spacji, kropek,
• nazwa pliku rozpoczynająca się od kropki oznacza plik ukryty (np.
„.tajne.txt”),
10
• w nazwach rozróżniane są małe i duże litery (np. nazwy plików
„wiosna.txt” i „Wiosna.txt” są różne),
• w nazwach plików i katalogów stosuje się zazwyczaj tylko małe litery
alfabetu łacińskiego,
• użytkownik może poruszać się po systemie katalogów - katalog, w
którym się aktualnie znajduje to katalog bieżący,
• niektóre katalogi mają specjalne oznaczenia:
− znak slash (/) symbolizuje katalog główny,
− kropka (.) symbolizuje katalog bieżący,
− dwie kropki (..) symbolizują katalog nadrzędny,
− znak tyldy (~) symbolizuje katalog domowy użytkownika,
• położenie pliku w systemie plików określa ścieżka dostępu:
− bezwzględna, czyli taka która określa położenie pliku względem
katalogu głównego, np.
/home/krysia/grafika/rysunek.jpeg
− względna, czyli taka która określa położenie pliku względem
bieżącego katalogu, np.
./grafika/rysunek.jpeg
../grafika/rysunek.jpeg
~/grafika/rysunek.jpeg
• wieloznaczne nazwy (tzw. maski nazwy lub wzorce nazwy) oznaczają
grupę plików lub katalogów i są tworzone za pomocą znaków
uogólniających, takich jak:
− * - oznacza dowolny ciąg znaków (w tym także ciąg pusty),
11
− ? - oznacza dowolny jeden znak,
− [znaki]
lub
[znak1-znak2]
-
oznacza
jeden
ze
znaków
wymienionych na liście lub znak z pomiędzy podanego zakresu.
Tabela 1. Przykładowe wzorce nazw plików i katalogów
Wzorzec nazwy
Opis
a*
pliki i katalogi, których nazwa zaczyna się na
literę „a”
a???
pliki i katalogi, których nazwa ma długość
czterech znaków i rozpoczyna się na literę „a”
pliki i katalogi, których nazwa ma długość trzech
znaków, pierwszy znak to „t”, trzeci to „k” a drugi
to „a”, „e”, „i”, „o” lub „y”
pliki i katalogi, których nazwa zaczyna się od
rysunek[1-7].??? słowa „rysunek”, po którym następuje jedna z cyfr
od 1 do 7, mające trzyznakowe rozszerzenie
t[aeioy]k
*
*.mp?
wszystkie pliki i katalogi
pliki i katalogi, których nazwa składa się z
dowolnego ciągu znaków, mające trzyznakowe
rozszerzenie zaczynające się od „mp”
12
Przykład
a
ala
a123
a-la
a345
abba
tak
tik
tok
rysunek1.jpg
rysunek3.bmp
rysunek7.gif
test.doc
Pliki!
DOKUMENTY
song.mp3
Moj:Film.mpg
super video!.mpg
3. Operacje na plikach i katalogach
3.1. Składnia poleceń linuksowych
Praca w trybie tekstowym polega na wydawaniu systemowi odpowiednich
poleceń z poziomu tzw. wiersza poleceń (ang. command line).
Składania polecenia w systemie Linux:
polecenie [-opcje ] [ argumenty ]
Opcje polecenia to zazwyczaj pojedyncze litery poprzedzone znakiem minus
(-). Opcje można podawać pojedynczo lub grupowo, np.
$ ls -a -l -t
$ ls -alt
$ ls -al -t
Niektóre opcje mają także postać pełnych słów, wtedy każdą z nich należy
poprzedzić podwójnym znakiem minus (--), np.
$ ls --all --format=long
polecenie to jest równoważne poleceniu ls -al
Argumenty polecenia to ciągi znaków (np. nazwy plików i katalogów, nazwy
użytkowników, wartości liczbowe) przekazywane do polecenia, np.
$ cp stary.plik nowy.plik
argumentami są tutaj nazwy plików
$ finger nowakj
argumentem jest tutaj nazwa użytkownika
$ ls /home
argumentem jest tutaj ścieżka dostępu
13
Polecenia można wydawać w jednym wierszu, ale należy je w tym celu
oddzielić od siebie znakiem średnika (;), np.
$ who; pwd; ls /home -al
3.2. Wyszukiwanie informacji o poleceniach
• apropos
(składnia:
apropos
szukany_ciąg_znaków)
-
program
przeszukuje opisy poleceń, np.
$ apropos „copy files”
wyszukaj polecenia, w których opisie znajduje się ciąg znaków
„copy files”
$ apropos password | less
wyszukaj polecenia, w których opisie znajduje się słowo
„password”
• man
(składnia:
man
nazwa_programu),
info
(składnia:
info
nazwa_programu), opcja --help (składnia: nazwa programu --help) wyświetla opis składni i opcji danego polecenia, np.
$ man mv
wyświetl opis polecenia mv
$ info cp
wyświetl opis polecenia cp
$ rm --help |less
wyświetl opis polecenia rm
Zakończenie wyświetlania opisu odbywa się po naciśnięciu klawisza [Q].
14
3.3. Podstawowe polecenia systemu Linux
• pwd - wyświetlanie nazwy bieżącego katalogu, np.
$ pwd
• ls - wyświetlenie zawartości katalogu, np.
$ ls
wyświetl zawartość bieżącego katalogu (bez plików ukrytych)
$ ls /bin
wyświetl zawartość katalogu /bin
$ ls *.c
$ ls -a
$ ls -l
$ ls -tl
• cd - zmiana bieżącego katalogu, np.
$ cd grafika
przejdź do katalogu „grafika” będącego w bieżącym katalogu
$ cd ..
$ cd ../../listy
$ cd /
$ cd /home/jacek
$ cd
$ cd ~
• mkdir - utworzenie katalogu, np.
$ mkdir test
utwórz katalog „test” w katalogu bieżącym
$ mkdir grafika/zdjecia
15
• tree - wyświetlenie struktury katalogów i plików, np.
$ tree
• rmdir - usunięcie pustego katalogu, np.
$ rmdir test
usuwany w ten sposób katalog „test” musi być pusty, a użytkownik
musi mieć uprawnienia do jego usunięcia. Ponadto, nie można
usunąć katalogu bieżącego.
• edytor pico - utworzenie plików tekstowych, np.
$ pico zaproszenie.txt
uruchomi edycję pliku zaproszenie.txt w edytorze pico:
Podstawowe polecenia edytora pico :
− [Ctrl]+[O] - zapisanie zmian (Write Out),
− [Ctrl]+[R] - odczytanie pliku (Read File),
− [Ctrl]+[X] - zamknięcie edytora (Exit).
16
• find - wyszukiwanie plików i katalogów zgodnie z zadanym kryterium,
np.
$ find / -name index.html
znajdź w katalogu głównym i jego podkatalogach wszystkie pliki o
nazwie „index.html”. Należy pamiętać, że aby móc przeszukiwać
zawartość katalogów, użytkownik musi mieć do tego prawo. W
przeciwnym wypadku otrzyma komunikat o braku dostępu do
danego katalogu („Permission denied”).
$ find . -name "*.txt"
$ find /home -user kowalski -name ”*.html”
• cat, more, less - wyświetlanie plików tekstowych, np.
$ cat zaproszenie
$ more zaproszenie
$ less zaproszenie
• rm - usuwanie plików, np.
$ rm zaproszenie.txt
usuń plik zaproszenie.txt
$ rm w*
$ rm ~/*
$ rm -rf mojkatalog
• cp - kopiowanie plików, np.
$ cp list.txt zaproszenie.txt
kopiuj plik „list.txt” do pliku „zaproszenie.txt”
$ cp *.jpeg ~/grafika
$ cp list.txt ..
17
• mv - przenoszenie plików (zmiana nazwy):
$ mv list.txt zaproszenie.txt
zmień nazwę pliku „list.txt” na „zaproszenie.txt”
• klawisz [Tab] - uzupełnianie nazwy plików. Naciśnięcie klawisza [Tab]
podczas wprowadzania nazwy pliku (jako argumentu polecenia)
spowoduje uzupełnienie jego nazwy.
• klawisze kursora [↑] i [↓] - przechodzenie do wydanych wcześniej
poleceń. Naciśnięcie klawiszy kursora pozwala przeglądać i wybrać
wydane wcześniej polecenia.
• history - przeglądanie wydanych poleceń, np.
$ history
• du - wyświetlanie informacji o zajętości katalogów, np.
$ du
• df - wyświetlenie informacji o zajętości dysków, np.
$ df
• quota - wyświetlenie informacji o ograniczeniach użytkownika co do
ilości miejsca i liczby utworzonych plików, np.
$ quota
18
4. Edytor tekstów vi
Zalety edytora vi:
• popularność - standardowo dostępny edytor w systemach uniksowych,
• możliwość pracy z bardzo dużymi plikami tekstowymi,
• podświetlanie składni wielu różnych języków programowania oraz
dodatkowe ułatwienia dla programistów (np. kontrola zamknięcia
nawiasów, automatyczne wcięcia kodu programu, wsparcie dla narzędzi
programistycznych, takich jak gcc, cvs, make),
• zaawansowane wyszukiwanie tekstu (interpretacja wyrażeń regularnych),
• łatwe pisanie makropoleceń.
Utworzenie (otworzenie) pliku w edytorze vi:
$ vi praca.txt
Rys. 5. Edytor tekstów vi
19
4.1. Tryby pracy edytora vi
Do najczęściej wykorzystywanych trybów edytora vi należy:
• normalny tryb wydawania poleceń (tzw. tryb normalny),
• tryb wprowadzania tekstu,
• tryb zastępowania tekstu,
• tryb wydawania poleceń z linii poleceń (tzw. tryb poleceń).
Normalny tryb wydawania poleceń (tryb normalny) jest to tryb, który służy do:
• poruszania się po dokumencie, tzn. przeglądanie tekstu oraz proste
wyszukiwanie znaków w obrębie bieżącego wiersza (zob. Tabela 2),
• zaawansowanie usuwanie fragmentów tekstu (zob. Tabela 4),
• kopiowanie fragmentów tekstu do bufora oraz wstawianie ich do
dokumentu (zob. Tabela 8).
Tryb wprowadzania tekstu pozwala wprowadzać tekst do dokumentu oraz go
usuwać. Przejście do trybu wprowadzania następuje po użyciu w trybie
normalnym, jednego z takich poleceń, jak np. i, I, a, A, o, O (zob. Tabela 3).
Powrót z trybu wprowadzania tekstu do trybu normalnego - klawisz [Esc].
Tryb zastępowania tekstu pozwala na nadpisywanie wprowadzonego tekstu
nowym. Przejście do trybu zastępowania następuje po użyciu w normalnym
trybie, polecenia R (zob. Tabela 5). Powrót z trybu zastępowania do trybu
normalnego - klawisz [Esc].
20
Tryb wydawania poleceń z linii poleceń (tryb poleceń) pozwala na:
• zaawansowane wyszukiwanie (zob. Tabela 6) i zamianę znalezionego
tekstu (zob. Tabela 7),
• operacje na plikach i wydawanie poleceń systemowych (zob. Tabela 10),
• zmianę sposobu wyświetlania tekstu (np. numerowanie wierszy tekstu)
oraz konfigurowanie edytora (np. określenie zasad traktowania dużych i
małych liter podczas wyszukiwania tekstu).
Przejście do trybu wydawania poleceń następuje po naciśnięciu w normalnym
trybie dwukropka (:). Powrót z trybu wydawania poleceń do trybu normalnego
następuje automatycznie po wykonaniu polecenia.
np. polecenie i, a, A
Tryb wprowadzania
tekstu
klawisz [Esc]
Normalny tryb wydawania
poleceń
(np. polecenia j, k, G, $, x,
dw)
dwukropek (:)
Tryb wydawania poleceń z
linii poleceń (np. polecenia
:wq, :help, :s/stary/nowy/g)
Rys. 6. Tryby pracy edytora vi
21
np. polecenie R
klawisz [Esc]
Tryb zastępowania
tekstu
4.2. Podstawowe polecenia edytora vi
Tabela 2. Polecenia edytora vi - nawigacja po dokumencie
j
k
h
l
L
H
M
CTRL+f
CTRL+b
CTRL+d
CTRL+u
G
nG
$
^
fx
Fx
;
W
nW
B
nB
E
(
)
przesunięcie kursora o jeden wiersz w dół
przesunięcie kursora o jeden wiersz w górę
przesunięcie kursora o jeden znak w lewo
przesunięcie kursora o jeden znak w prawo
przesunięcie kursora na dół ekranu
przesunięcie kursora na górę ekranu
przesunięcie kursora na środek ekranu
przesunięcie kursora o jeden ekran w dół
przesunięcie kursora o jeden ekran w górę
przesunięcie kursora o pół ekranu w dół
przesunięcie kursora o pół ekranu w górę
przejście na początek ostatniego wiersza
powoduje przesunięcie kursora do n-tego wiersza
przesunięcie kursora na koniec bieżącego wiersza
przesunięcie kursora na początek bieżącego wiersza
przesunięcie kursora do najbliższego znaku „x” znajdującego się po prawej
stronie kursora w bieżącym wierszu
przesunięcie kursora do najbliższego znaku „x” znajdującego się po lewej
stronie kursora w bieżącym wierszu
powoduje powtórzenie ostatniego polecenie f lub F
przesunięcie kursora o jeden wyraz do przodu
przesunięcie kursora o n wyrazów do przodu
przesunięcie kursora o jeden wyraz do tyłu
przesunięcie kursora o n wyrazów do tyłu
przesunięcie kursora na koniec bieżącego wyrazu
przesunięcie kursora o jedno zdanie do tyłu
przesunięcie kursora o jedno zdanie do przodu
Tabela 3. Polecenia edytora vi - wprowadzanie tekstu
i
a
I
A
O
o
rozpoczęcie wprowadzania tekstu od bieżącej pozycji kursora
rozpoczęcie wprowadzania tekstu od znaku znajdującego się za kursorem
rozpoczęcie wprowadzania tekstu na początku linii w której znajduje się kursor
rozpoczęcie wprowadzania tekstu na końcu linii w której znajduje się kursor
wstawienie nowego wiersza powyżej kursora i rozpoczęcie wprowadzania tekstu w
nowym wierszu
wstawienie nowego wiersza poniżej kursora i rozpoczęcie wprowadzania tekstu w
nowym wierszu
22
Tabela 4. Polecenia edytora vi - usuwanie tekstu
x
X
de
dw
d^
d$
dG
dnh
dnl
D
J
dd
dnd
u
usunięcie znaku znajdującego się pod kursorem
usunięcie znaku znajdującego się przed kursorem
usunięcie znaków znajdujących się od miejsca wskazywanego przez kursor do
końca bieżącego wyrazu
usunięcie znaków od miejsca wskazywanego przez kursor do początku następnego
wyrazu
usunięcie znaków od bieżącej pozycji kursora do początku danego wiersza
usunięcie znaków od bieżącej pozycji kursora do końca wiersza
usunięcie tekstu od pozycji kursora do końca pliku
usunięcie n znaków poprzedzających
usunięcie n kolejnych znaków
usunięcie znaków do końca bieżącego wiersza
połączenie wiersza poniżej kursora z wierszem bieżącym
usunięcie bieżącego wiersza
usunięcie bieżącego wiersza i n-1 kolejnych wierszy
anulowanie wprowadzonych zmian (m.in. usuniętego tekstu)
Tabela 5. Polecenia edytora vi służące do zastępowania tekstu
rx
cw
C
R
zastąpienie znaku znajdującego się pod kursorem znakiem „x”; po dokonaniu
zamiany edytor pozostaje w trybie wydawania poleceń
usunięcie znaków do końca bieżącego słowa i przejście do trybu wstawiania tekstu
usunięcie znaków do końca wiersza i przejście do trybu wprowadzania
włączenie trybu zastępowania
Tabela 6. Polecenia edytora vi - wyszukiwanie tekstu
/abc
?abc
n
:set ic
:set noic
wyszukanie ciągu „abc” w dół ekranu
wyszukanie ciągu „abc” w górę ekranu
powtórzenie ostatniego polecenia wyszukania ciągu znaków
włączenie (:set ic) i wyłączenie (:set noic - tryb domyślny) trybu
ignorowania wielkości znaków podczas wyszukiwania tekstu
Tabela 7. Polecenia edytora vi - zamiana tekstu
:s/stary/nowy/
:s/stary/nowy/g
:n,m s/stary/nowy/g
:1,$ s/stary/nowy/g
:1,$ s/stary/nowy/gc
znalezienie w bieżącym wierszu pierwszego wystąpienia tekstu
stary i zastąpienie go tekstem nowy
znalezienie w bieżącym wierszu wszystkich wystąpień tekstu
stary i zastąpienie ich tekstem nowy
przeszukanie fragmentu tekstu od wiersza o numerze n do
wiersza o numerze m i znalezienie w tym obszarze wszystkich
wystąpień tekstu stary i zastąpienie ich tekstem nowy
globalne zastępowanie w całym pliku
globalne zastępowanie w całym pliku - każda operacja
zamiany wymaga akceptacji przez użytkownika
23
Bufor edytora
Edytor tekstu vi umożliwia umieszczenie (skopiowanie lub przeniesienie)
fragmentu tekstu do bufora (schowka), a następnie wklejenie go w dowolne
miejsce dokumentu.
W buforze umieszczany jest fragment tekstu, który został:
• skopiowany (zob. Tabela 8),
• usunięty (zob. Tabela 4).
Tekst z bufora może być wielokrotnie wstawiany (wklejany) do dokumentu.
Tabela 8. Polecenia edytora vi - kopiowanie tekstu
yw
yb
y$
Y
yy
p
P
skopiowanie tekstu od bieżącej pozycji kursora do końca wyrazu
skopiowanie tekstu od początku wyrazu do bieżącej pozycji kursora
skopiowanie tekstu od bieżącej pozycji kursora do końca wiersza
skopiowanie do bufora bieżącego wiersza
Działanie jak „Y”
Wklejenie zawartości bufora za znakiem wskazywanym przez kursor
Wklejenie zawartości bufora przed znakiem wskazywanym przez kursor
24
Praca z kilkoma oknami
Rys. 7. Edytor tekstów vi z otwartymi dwoma oknami
Tabela 9. Polecenia edytora vi - praca z wieloma oknami
:new
:split lub [Ctrl+W]s
[Ctrl+W] j
[Ctrl+W] k
[Ctrl+W] t
[Ctrl+W] b
:help
otworzenie nowego okna edytora
podział aktualnego okna na dwie części
przejście do okna poniżej
przejście do okna powyżej
przejście do górnego okna
przejście do dolnego okna
wyświetlenie w nowym oknie pomocy
Koniec pracy z edytorem
Do zapisania zmian w dokumencie i zakończenia pracy z edytorem vi służy
polecenie :wq. Jeżeli użytkownik nie chce zapisywać wprowadzonych zmian
musi wydać polecenie :q!. Polecenia związane z kończeniem pracy w edytorze
oraz z wykonywaniem operacji na plikach zawiera poniższa tabela.
25
Tabela 10. Polecenia edytora vi - operacje na plikach, poleceniach systemu, kończenie pracy
:q
:q!
:wq
:r nazwa_pliku
:! polecenie
:r! polecenie
zakończenie pracy edytora
zakończenie pracy edytora bez zapisania zmian
zakończenie pracy edytora wraz z zapisaniem zmian
wstawienie zawartości pliku w bieżącym wierszu
wykonanie polecenie powłoki
wstawienie wyniku działania polecenia w bieżącym wierszu
4.3. Konfigurowane edytora vi
Ustawienia edytora zapisywane są w pliku .vimrc, który musi znajdować się w
katalogu domowym użytkownika.
Najczęściej zapisywane ustawienia konfiguracji:
syntax on
włączenie podświetlania składni edytowanego kodu programu
set number
numerowanie wyświetlanych wierszy dokumentu
set nonumber
wyłączenie numerowania wyświetlanych wierszy
set ts=4
ustalenie pozycji tabulacji na 4 znaki
set textwidth=80
ustawienie długości wyświetlanego wiersza na 80 znaków
set autoindent
włączenie auto-wcięcia
set noautoindent
wyłączenie auto-wcięcia
set incsearch
automatyczne wyszukiwanie ciągu znaków podczas korzystania z
polecenia „/”
set ruler
26
wyświetlenie współrzędnych kursora (wiersz, kolumna)
set showmode
wyświetlenie informacji o trybie edytora
set showcmd
wyświetlenie wydawanego polecenia
set backup
tworzenie kopii zapasowych plików
set backupdir=~/backup/
określenie katalogu, w którym tworzone będą kopie zapasowe (w
tym przypadku jest to ~/backup/)
Powyższe polecenia można wydać w trybie poleceń.
27
5. Program Midnight Commader
Midnight Commander jest programem do zarządzania plikami i katalogami.
Rys. 8. Midnight Commander
Uruchomienie programu Midnight Commander:
$ mc
Podstawowe skróty klawiaturowe i klawisze funkcyjne programu mc:
• [F1], [F2], [F3], [F4], [F5], [F6], [F7], [F8], [F9], [F10],
• [Tab], [Alt]+[?], [Alt]+[O], [Ctrl]+[O], [Ctrl]+[R], [Ctrl]+[S], [Ctrl]+[U],
• [Alt]+[+], [Alt]+[-], [Alt]+[*].
Szczegółowy opis możliwości programu i kombinacji klawiszy jest dostępny w
manualu (polecenie man mc).
28
6. Operacje wejścia - wyjścia
6.1. Strumień danych oraz urządzenia wejścia i wyjścia
• dostarczanie danych do procesów oraz generowanie danych przez
procesy polega na przesyłaniu tzw. strumieni danych,
• dane
do
procesu
trafiają,
jako
strumień
danych
wejściowych
wygenerowany przez urządzenie wejścia,
• z procesu dane wychodzą, jako wygenerowany przez proces strumień
danych wyjściowych skierowany do urządzenia wyjścia,
• urządzenia wejścia to np. klawiatura, plik; urządzenia wyjścia to np.
monitor, plik, drukarka. W przypadku tych urządzeń rozróżnia się, tzw.
− standardowe wejście - urządzenie, z którego proces domyślnie
otrzymuje strumień danych wejściowych (najczęściej klawiatura),
− standardowe wyjście - urządzenie, do którego proces domyślnie
kieruje strumień danych wyjściowych (najczęściej monitor).
urządzenie wejścia
klawiatura
strumień
danych
wejściowy
PROCES
strumień
danych
wyjściowy
monitor
urządzenie wyjścia
Rys. 9. Przepływ strumieni danych pomiędzy procesem a urządzeniami wejścia i wyjścia
29
6.2. Przekierowanie wejścia i wyjścia
• przekierowanie wejścia oznacza zmianę urządzenia wejściowego z
domyślnego na inne, wskazane przez użytkownika. Służy do tego
operator „<”;
• przekierowanie wyjścia oznacza zmianę urządzenia wyjściowego z
domyślnego na inne, wskazane przez użytkownika. Służą do tego
operator „>” lub operator „>>”. Różnica w działaniu tych operatorów
jest widoczna w przypadku przekierowania wyjścia do pliku, tzn.:
− operator „>” powoduje zastąpienie bieżącej zawartości pliku
przekierowanym strumieniem danych,
− operator „>>” powoduje dopisanie (na końcu pliku) do zawartości
pliku przekierowanego strumienia danych.
standardowe wejście
klawiatura
strumień
danych
wejściowych
PROCES
strumień
danych
plik
monitor
standardowe wyjście
Rys. 10. Przekierowanie wyjścia
30
Przykładowe przekierowanie wyjścia:
$ ls > spis.txt
$ cat zaproszenie.txt > teksty.txt
$ cat ogloszenie.txt >> teksty.txt
$ sort lista.txt > lista_posortowana.txt
$ echo „Akademia Ekonomiczna” > uczelnia.txt
Przykładowe przekierowanie wejścia:
$ sort
ola
ala
basia
[Crtl]+[D]
ala
basia
ola
standardowo polecenie sort pobiera z podanego pliku (standardowe
wejście polecenia sort) strumień danych i wyświetla go
posortowanego wierszami na monitorze (standardowe wyjście
polecenia sort). W tym przypadku plik nie został podany, dlatego
polecenie sort będzie pobierało strumień danych z klawiatury, aż do
naciśnięcia kombinacji [Ctrl]+[D]. Następnie wyświetli je na
monitorze posortowane.
$ write nowakj < komunikat.txt
6.3. Tworzenie potoków
Potok jest to skierowanie standardowego wyjścia jednego procesu do
standardowego wejścia innego procesu. Operatorem tworzenia potoku jest
pionowa kreska „|”.
Tworzenie potoku można przedstawić następująco:
proces | proces | ... | proces
31
Tworzenie potoków można równocześnie łączyć z przekierowaniem wejścia i
wyjścia, co pozwala na zaawansowane przetwarzanie strumieni danych., np.
proces | proces | ... | proces > urządzenie wyjścia
urządzenie wejścia
plik
strumień
danych
wejściowy
PROCES
strumień
danych
potok
PROCES
strumień
danych
wyjściowy
monitor
urządzenie wyjścia
Rys. 11. Potok danych
Przykładowe tworzenie potoków:
$ ls | sort
$ finger | grep ”Jacek” | sort > lista.txt
Potoki mogą być także rozwidlane. Do rozwidlania potoku służy polecenie tee,
które robi kopię strumienia danych i zapisuje ją w pliku, a „oryginalny”
strumień danych przepuszcza dalej do standardowego wyjścia lub kolejnego
procesu.
32
urządzenie wejścia
klawiatura
strumień
danych
wejściowy
rozwidlenie potoku
kopia strumienia danych
tee plik
strumień
danych
potok
plik
PROCES
strumień
danych
wyjściowy
monitor
urządzenie wyjścia
Rys. 12. Rozwidlenie potoku danych
Przykładowe rozwidlenia potoków:
$ sort lista.txt | tee lista_posortowana.txt
$ sort lista.txt | tee pliczek.txt | cat -n
33
7. Ochrona zasobów systemu komputerowego
Właściciel zasobów może ograniczyć innym użytkownikom systemu dostęp do
plików i katalogów dzięki możliwości nadawania i odbierania praw dostępu.
Organizacja praw dostępu wygląda następująco:
• każdy plik i katalog posiada atrybuty określające prawo do:
− odczytania (r - ang. reading),
− zapisania (w - ang. writing),
− wykonania (x - ang. executing).
• prawa dostępu określane są niezależnie dla:
− właściciela zasobu (u - ang. user),
− członków grupy, do której należy właściciel zasobu (g - ang. group),
− pozostałych użytkowników (o - ang. others).
Wyświetlenie praw dostępu - polecenia ls z opcją -l, np.
$ ls -al
drwxrwxr-x 6 nowakj infor 755 Feb 22 17:23 .
drwxrwxr-x 2 nowakj infor 222 Jan 10 10:22 ..
-rwxr-x--- 1 nowakj infor 1560 Feb 26 13:01 lista
Odczytanie wyświetlonych w taki sposób informacji o zasobie i prawach
dostępu do niego, umożliwia analiza 10 pierwszych znaków każdego wiersza
(np. drwxr-x--x). Znaczenie poszczególnych znaków (pozycji) jest następujące:
− 1. znak - rodzaj zasobu: katalog (d), plik (-), link symboliczny (l)
− 2. - 4. znak - prawa właściciela zasobu,
− 5. - 7. znak - prawa grupy, do której należy właściciel,
− 8. - 10. znak - prawa pozostałych użytkowników.
34
plik (-),
katalog (d),
symlink (l)
r
w
x
u (user)
prawa właściciela
zasobu
r
W
x
g (group)
prawa grupy, do której
należy właściciel zasobu
r
w
X
o (other)
prawa pozostałych
użytkowników
Dziewięć znaków, które mówią o prawach dostępu (znaki od 2. do 10.) określa
się mianem maski praw (np. rwxr-x--x).
Liczbowa maska praw:
r
w
x
1
1
1
111 binarnie = 7 dziesiętnie
user
r
x
1
0
1
101 binarnie = 5 dziesiętnie
group
x
0
0
1
001 binarnie = 1 dziesiętnie
other
Przykładowe maski praw należy interpretować:
751 = rwxr-x--x
711 = rwx--x--x
530 = r-x-wx--Do zmiany praw dostępu służy polecenie chmod, które można uruchomić
zarówno z maską liczbową, jak i prawami poszczególnych użytkowników (u,
g, o, a) zapisanymi odpowiednimi symbolami (r, w, x), np.
$ chmod 751 lista.txt
$ chmod g+wx *
$ chmod a-rwx tajne.txt
Schemat zmiany praw przy wykorzystaniu symbolicznych oznaczeń:
$ chmod
u 
g  +  r 
     w
 o   −   
 x 
 
a
 
plik
35
8. Konfiguracja powłoki systemu Linux
Do podstawowych elementów systemu operacyjnego Linux należy:
• powłoka (shell, interpreter poleceń) - program pełniący funkcję interfejsu
pomiędzy użytkownikiem i jądrem systemu, interpretujący polecenia oraz
umożliwiający uruchamianie programów. Najczęściej wykorzystywaną
powłoką w Linuksie jest Bash (Bourne Again SHell).
• jądro systemu - zbiór programów zarządzający procesami i zasobami
systemu,
• programy narzędziowe.
POWŁOKA
PROGRAMY
NARZĘDZIOWE
JĄDRO SYSTEMU
Rys. 13. Ogólna struktura systemu operacyjnego Linux
Jednym ze sposobów komunikacji pomiędzy wymienionymi elementami
systemu operacyjnego jest wykorzystanie zmiennych powłoki.
8.1. Zmienne powłoki
Zmienna to cecha posiadająca swoją nazwę i przyjmująca pewną wartość.
Polecenia wykorzystywane podczas pracy ze zmiennymi:
36
• set - wyświetlenie zmiennych powłoki (informacje wyświetlane są w
postaci nazwa_zmiennej=wartość_zmiennej), np.
$ set
HOME=/home/nowakj
PWD=/home/nowakj/public_html
USER=nowakj
• echo - polecenie można wykorzystać do wyświetlenia wartości jednej
zmiennej. Nazwę zmiennej należy poprzedzić znakiem dolara (np.
$HOME, $USER), np.
$ echo ”informatyka”
informatyka
$ echo HOME
HOME
$ echo $HOME
/home/nowakj
$ echo $SHELL
/bin/bash
• operator „=” - zdefiniowanie nowej zmiennej lub zmiana wartości
zmiennej już istniejącej (po obu stronach znaku równości nie wolno
zamieszczać spacji), np.
$ UCZELNIA=”Uniwersytet Jagielloński”
$ UCZELNIA=”Akademia Ekonomiczna”
$ UCZELNIA=”$UCZELNIA w Krakowie”
$ echo $UCZELNIA
Akademia Ekonomiczna w Krakowie
37
• pojedyncze cudzysłowy (apostrofy) - maskowanie nazwy zmiennej, tzn.
sprawienie, że nie pojawia się jej wartość, np.
$ UCZELNIA=”AE w Krakowie”
$ echo ’Studiuje w $UCZELNIA’
Studiuje w $UCZELNIA
• polecenie unset - usuwanie zmiennych powłoki, np.
$ unset UCZELNIA
8.2. Przykładowe zmienne powłoki systemowej
Spośród
wielu zmiennych powłoki,
najczęściej
wykorzystywane
lub
modyfikowane przez użytkowników są, zmienne:
• PS1 - zmienna przechowuje definicję tzw. znaku zachęty (monitu
systemu), np.
$ PS1=”Podaj polecenie:”
Podaj polecenie:
Użytkownik definiując znak zachęty może w nim zamieszczać specjalne kody,
które są następnie zamieniane na odpowiednie wartości, np.
$ PS1=”\h: \w \$”
Tabela 11. Kody wykorzystywane przy definiowaniu znaku zachęty
Kod
\!
\$
\d
\s
\t
\u
\w
\h
Znaczenie
numer polecenia
znak dolara ($) dla zwykłego użytkownika, dla użytkownika root znak hash (#)
aktualna data
nazwa powłoki
aktualny czas
nazwa użytkownika
katalog bieżący
nazwa komputera
38
• HOME - zmienna przechowuje ścieżkę dostępu do katalogu domowego
użytkownika, np.
$ echo $HOME
/home/nowakj
• PATH - zmienna przechowuje tzw. ścieżki poszukiwań. Dwukropek
znajdujący się na końcu zmiennej PATH oznacza, że przeszukiwany
będzie także katalog bieżący.
$ echo $PATH
/usr/bin:/usr/sbin
Tabela 12. Zawartość zmiennej PATH a przeszukiwane katalogi
Zmienna PATH
/usr/bin:/usr/sbin
/usr/bin:/usr/sbin:
Przeszukiwane katalogi
/usr/bin
/usr/sbin
/usr/bin
/usr/sbin
katalog bieżący
Nowe ścieżki dostępu do zmiennej PATH można dodać np. w ten sposób:
$ PATH=$PATH:$HOME/programy
• SHELL - zmienna przechowuje nazwę programu będącego interpreterem
poleceń, np.
$ echo $SHELL
/bin/bash
• USER - zmienna przechowuje nazwę użytkownika, np.
$ echo $USER
nowakj
39
8.3. Uruchamianie kolejnych powłok
Użytkownik w systemie Linux ma możliwość uruchamiania kolejnych powłok,
tzw. powłok potomnych, służy do tego polecenie bash. Do zamknięcia otwartej
powłoki potomnej służy polecenie exit.
Przykładowo:
$ ...
praca z pierwszą powłoką
$ bash
uruchomienie drugiej powłoki
$ ...
praca z drugą powłoką
$ exit
zamknięcie drugiej powłoki
$ ...
praca z pierwszą powłoką
Powłoka 1
$ ls
$ cp plik test.txt
$ bash
Powłoka 2
$ finger
$ bash
Powłoka 3
$ pwd
$ man cat
$ exit
$ echo $HOME
$ exit
$ vi test.txt
$ logout
Rys. 14. Praca z kilkoma powłokami
40
8.4. Lokalne i globalne zmienne systemowe
• zmienna lokalna to zmienna dostępna tylko w bieżącej powłoce,
• zmienna globalna to zmienna widoczna w bieżącej powłoce (powłoce
macierzystej) i wszystkich powłokach potomnych. Zmienną globalną
tworzy się za pomocą polecenia export, które może być wykorzystane
przy tworzeniu nowej zmiennej lub do wyeksportowania zmiennej już
istniejącej. Zmienne utworzone (wyeksportowane) w powłoce potomnej
nie są widoczne w powłoce macierzystej.
Powłoka 1
$ UCZELNIA=”AE”
$ echo $UCZELNIA
AE
$ bash
Powłoka 2
$ echo $UCZELNIA
zmienna UCZELNIA utworzona w Powłoce 1 nie została
wyeksportowana, a więc nie jest widoczna w Powłoce 2
$ exit
$ export UCZELNIA=”AE”
$ echo $UCZELNIA
AE
$ MIASTO=”Kraków”
$ export MIASTO
$ echo $MIASTO
Kraków
$ bash
Powłoka 2
$ echo $UCZELNIA
AE
zmienna UCZELNIA wyeksportowana z Powłoki 1 jest widoczna w
Powłoce 2
$ echo $MIASTO
Kraków
$ MIASTO=”Gdynia”
$ export STOLICA=”Warszawa”
$ exit
$ echo $MIASTO
Kraków
zmiana w Powłoce 2 wartości zmiennej MIASTO nie jest widoczna w Powłoce 1
$ echo $STOLICA
zmienna STOLICA utworzona w Powłoce 2 nie jest widoczna w Powłoce 1
$ logout
Rys. 15. Zmienne lokalne i globalne w powłokach
41
8.5. Pliki startowe
Użytkownik ma możliwość skonfigurowania systemu, w taki sposób, aby przy
każdym logowaniu, uruchamianiu nowej powłoki lub kończeniu pracy, system
automatycznie wykonywał polecenia zawarte w tzw. plikach startowych.
Mechanizm ten jest wykorzystywany do:
• tworzenia lub modyfikowania zmiennych systemowych,
• tworzenia nowych nazw poleceń (aliasów),
• uruchamiania lub zamykania programów,
• wyświetlania komunikatów powitalnych lub pożegnalnych.
Wykorzystywane pliki startowe, to:
• .bash_profile - polecenia zawarte w tym pliku są wykonywane
każdorazowo przy logowaniu się użytkownika,
• .bashrc - polecenia zawarte w tym pliku są wykonywane każdorazowo
przy uruchamianiu nowej powłoki,
• .bash_logout - polecenia zawarte w tym pliku są wykonywane
każdorazowo przy kończeniu pracy przez użytkownika.
42
8.6. Aliasy
Użytkownik ma możliwość definiowania nowych nazw dla poleceń, tzw.
aliasów. Służy do tego polecenie alias, a składnia jego jest następująca:
$ alias nazwa=polecenie
lub
$ alias nazwa=’polecenie’
Polecenie alias bez żadnych argumentów i opcji wyświetla wszystkie
zdefiniowane przez użytkownika aliasy.
Możliwość definiowania aliasów jest przydatna kiedy użytkownik chce nadać
np. łatwiejszą do zapamiętania nazwę jakiemuś poleceniu lub chce w skróconej
postaci zapisać polecenie wraz z jego opcjami i argumentami.
Do usuwania zdefiniowanych aliasów służy polecenie unalias.
Przykładowe definicje i usuwanie aliasów:
$ alias katalog=ls
$ alias katalog=’ls -al’
$ alias ls=’ls -al’
$ unalias katalog
$ unalias ls
Jeżeli aliasy mają być dostępne w każdej nowej sesji użytkownika, to należy je
zdefiniować w pliku .bashrc.
43
9. Skrypty powłoki
Skrypty powłoki są to polecenia systemowe zapisane w pliku tekstowym.
Wykonanie skryptu odbywa się „wiersz po wierszu”.
Przykładowy skrypt powłoki o nazwie kopia:
echo ”Mój katalog domowy” > wykaz
date >> wykaz
ls -al >> wykaz
echo ”Koniec” >> wykaz
powyższy skrypt utworzy plik „wykaz” (lub zastąpi jego zawartość,
jeżeli taki plik istnieje), zapisze w nim tekst „Mój katalog domowy”,
bieżącą datę, zawartość bieżącego katalogu oraz tekst „Koniec”
Skrypt powłoki można uruchomić poprzedzając jego nazwę kropką i spacją
(„. ”) lub przekierowując jego zawartość do polecenia bash, np.
$ . kopia
$ bash < kopia
Skrypt powłoki ma dla użytkownika status programu powłoki, wtedy kiedy
użytkownik ma nadane prawo do jego wykonywania, np.
$ chmod u+x kopia
Uruchamianie programu jest możliwe poprzez podanie jego nazwy, np.
$ kopia
Taki sposób uruchomienia jest możliwy tylko wtedy, kiedy zmienna PATH
zawiera ścieżkę dostępu do katalogu bieżącego. Jeżeli PATH nie przeszukuje
bieżącego katalogu, to taki skrypt należy uruchamiać poprzedzając jego nazwę
względną ścieżką dostępu (czyli „./”), tzn.
$ ./kopia
44
Parametry skryptu
Parametr skryptu to informacja przekazywana do skryptu w momencie jego
uruchamiania, np.
$ skrypt parametr1 parametr2
Największą zaletą tworzenia skryptów z parametrami jest możliwość
podstawiania w ich miejsce różnych wartości. Przykładowo, skrypt o nazwie
dopisz, który do pliku o nazwie podanej jako pierwszy parametr dopisuje
zawartość pliku o nazwie podanej jako drugi parametr, może być wykonany z
takimi parametrami:
$ dopisz list1 list2
co oznacza, że dopisze do zawartości pliku list1 zawartości pliku list2. Można
go uruchomić także z innymi parametrami, np.
$ dopisz rozdzial3 rozdzial4
co oznacza, że dopisze do pliku rozdzial3 zawartości pliku rozdzial4.
Uogólniając, można powiedzieć, że wywołanie skryptu ma następującą postać:
$ dopisz parametr1 parametr2
gdzie parametr1 oraz parametr2 są nazwami plików.
Parametry podawane przy uruchomieniu skryptu nazywane są parametrami
aktualnymi.
Aby skrypt mógł wykonać postawione zadanie musi mieć możliwość
odwołania się do wartości parametrów podanych przy jego uruchamianiu, tzn.
pisząc skrypt jego autor musi podać, w którym miejscu skrypt odwołuje się do
parametru pierwszego, w którym do parametru drugiego, itd.
45
Możliwość odwołania się do wartości parametrów daje wykorzystanie symboli,
w miejsce których w czasie wykonywania skryptu wstawiane są wartości
parametrów aktualnych:
• $1 - symbolizuje pierwszy parametr aktualny skryptu (tzn. w czasie
wykonania skryptu w jego miejsce wstawiana jest wartość pierwszego
parametru aktualnego), $2 - symbolizuje drugi parametr, itd. aż do $9,
• $0 - symbolizuje nazwę skryptu,
• $# - symbolizuje liczbę parametrów aktualnych,
• $* - symbolizuje łącznie wszystkie parametry aktualne, z którymi został
uruchomiony skrypt.
Parametry występujące w tekście skryptu i symbolizujące parametry aktualne
(tzn. $1, $2, …, $9) nazywane są parametrami formalnymi.
Przykładowo, wspomniany wyżej skrypt dopisz ma następującą postać:
cat $2 >> $1
Jego wywołanie poprzez podanie polecenia:
$ dopisz list1 list2
będzie realizowane jako:
cat list2 >> list1
46
10. Zarządzanie procesami
Proces jest to program realizowany przez system operacyjny. Wyróżniamy:
• procesy użytkownika (zadania użytkownika) - programy i polecenia
uruchomione przez użytkownika,
• procesy systemowe - programy uruchomione przez system operacyjny.
Systemy operacyjne umożliwiające współbieżną realizację procesów to:
• systemy wielozadaniowe - ponieważ w tym samym czasie system
operacyjny realizuje więcej niż jedno zadanie,
• systemy z podziałem czasu - ponieważ czas pracy procesora dzielony jest
pomiędzy poszczególne procesy.
Przeciwieństwem systemów wielozadaniowych są systemy jednozadaniowe
(np. MS DOS).
10.1. Zarządzanie procesami użytkownika w systemie Linux
Nowe zadanie użytkownika - np. program, polecenie - uruchamiane jest
domyślnie na pierwszym planie, pozostałe zadania znajdują się w tle.
Użytkownik ma możliwość zarządzania uruchomionymi zadaniami - może:
• uruchomić zadanie w tle - poprzez dodanie znaku ampersand (&), np.
$ vi praca.txt &
[1] 7835
po uruchomieniu zadania w tle, wyświetlane są dwa numery pierwszy, w nawiasach kwadratowych, oznacza numer zadania
użytkownika (tutaj: 1), a drugi numer procesu systemowego (tutaj:
7835).
$
47
• zatrzymać proces na pierwszym planie i przenieść go w tło - służy do
tego kombinacja [Ctrl]+[Z], np.
$ vi referat.txt
...
uruchomienie i praca z edytorem vi
[Ctrl]+[Z]
zatrzymanie edytora i przeniesienie go w tło
[3]+ Stopped
vi
informacje o zatrzymanym edytorze, m.in. [3] - nadany numer
zadania, „+” - znacznik bieżącego zadania (tzn. „+” oznacza, że
jest to bieżące zadanie, czyli ostatnie przeniesione w tło)
• wyświetlić informacje o stanie zadań w tle - polecenie jobs, np.
$ jobs
[1]
Stopped
[2]- Running
[3]+ Stopped
[4]
Done
vi praca.txt
sleep 1000 &
vi referat.txt
ls
$ jobs -l
[1]- 7835 Stopped
[2]
7841 Running
[3]+ 7902 Stopped
vi praca.txt
sleep 10000 &
vi referat.txt
• wyświetlić informacje o procesach systemowych - polecenie ps, np.
$ ps
PID
7679
7835
7841
7902
8103
TTY
pts/1
pts/1
pts/1
pts/1
pts/1
TIME
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
48
CMD
bash
vi
sleep
vi
ps
• przesunąć zadanie z tła na pierwszy plan - służy do tego polecenie fg
wywoływane z numerem zadania, nazwą procesu, znacznikiem zadania
bieżącego (+) lub poprzedniego (-), np.
$ fg 1
$ fg +
$ fg ”vi referat.txt”
• przesunąć zatrzymane zadanie z pierwszego planu w tło - polecenie bg,
np.
$ bg 1
• zakończyć wykonywane zadanie przed czasem - do zakończenia zadania
pierwszoplanowego służy kombinacja [Ctrl]+[C], do zakończenie zadania
w tle służy polecenie kill wywoływane z numerem procesu systemowego
lub numerem zadania, znacznikiem bieżącego (+) lub poprzedniego (-)
zadania. Przy poleceniu kill, numer zadania użytkownika i znaczniki
zadania muszą być poprzedzone znakiem procent (%), np.
$ kill 7835
$ kill %2
$ kill %+
49
Przykładowe zarządzanie procesami:
Napisane zostały dwa skrypty - skrypt1 i skrypt2
Plik skrypt1:
echo ”Poczatek 1” > plik1
sleep 45
echo ”Koniec 1” >> plik1
Plik skrypt2:
echo ”Poczatek 2” > plik2
sleep 45
echo ”Koniec 2” >> plik2
Uruchomienie zadania na pierwszym planie:
$ . skrypt1
znak zachęty pojawia się dopiero po 45 sekundach
$
Uruchomienie zadania w tle:
$ . skrypt1&
[1] 783
znak zachęty pojawia się natychmiast
$ . skrypt2&
[2] 794
Wyświetlenie stanu realizowanych zadań:
$ jobs -l
[1]- 783 Running
[2]+ 794 Running
program1&
program2&
Usunięcie zadań:
$ kill 783
$ kill %+
50
11. Bezpośrednia komunikacja z innymi użytkownikami systemu
Użytkownik w systemie Linux może komunikować się bezpośrednio z innymi
użytkownikami. Przydatne do tego celu są polecenia:
• finger - wyświetlenie informacji o zalogowanych użytkownikach, np.
$ finger
• write - wysłanie komunikatu do zalogowanego użytkownika, np.
$ write nowakj
Czesc Janek
Co u Ciebie slychac?
^D
• talk - prowadzenie „rozmów” z innym zalogowanym użytkownikiem, np.
$ talk nowakj
użytkownik nowakj dostanie komunikat:
Message from [email protected] at 12:21...
talk: connection requested by [email protected]
talk: respond with:
talk [email protected]
aby przyjąć rozmowę użytkownik nowakj musi wydać polecenie:
$ talk kowalj
aby odrzucić rozmowę lub ją zakończyć nowakj musi skorzystać z
kombinacji klawiszy [Ctrl]+[C]
• polecenie mesg - wyłączenie (mesg n) lub włączenie (mesg y)
przyjmowania wiadomości i rozmów przez użytkownika, np.
$ mesg n
51