____________________________________________________________________________

_____________________________________________________________________________

Unix - kurs podstawowy



Spis tresci:

* Poczatek pracy
* Ogólne zasady wpisywania komend
* Dostep do programów i danych
* Komendy dzialajace na kartotekach
* Komendy dzialajace na plikach
* Bazowa kartoteka uzytkownika
* Prawa dostepu
* Miejsce na dysku
* Sumaryczna wielkosc plikow
* Fizyczna ilosc wolnego miejsca na dysku
* Jak znalezc informacje o fizycznej ilosci wolnego miejsca na
dysku, na ktorym znajduja sie nasze plikió
* Informacja o komendach ("help")
* Wybrane programy uslugowe - vi
* Wybrane komendy trybu klawiszowego
* Komendy zmiany pozycji
* Kopiowanie i przenoszenie tekstu
* Wybrane komendy trybu liniowego
* Wyswietlanie danych o innych uzytkownikach
* Wysylanie komunikatow do innych uzytkownikow
* Interaktywna komunikacja z innymi uzytkownikami
* Wysylanie listow
* Procesy
* Skrypty
* Konfigurowanie srodowiska uzytkownika
* Aliasy
* Adresy sieciowe komputerow. Komunikacja pomiedzy komputerami
* telnet
* ftp
* DNS - Domain Name Servis
* Uruchamianie systemu X Windows
* Zasada dzialania systemu X Windows
* Konfiguracja wlasnego ekranu w systemie X Windows




Zanim zaczniemy prace - musimy zaloginowac sie do systemu. Unix
pozwala na wpisanie:

* nazwy uzytkownika - po login
* hasla uzytkownika - po password. Haslo nie jest wyswietlane
na ekranie

Sprawdz u administratora swojego systemu jaka jest Twoja nazwa uzytkownika
oraz jakie posiadasz haslo. Spróbuj zaloginowac sie popelniajac celowe
pomylki w nazwie uzytkownika lub hasle. Zwróc uwage na tresc komunikatów o
bledach.

Nazwa uzytkownika:

do 8 znaków, male i duze litery sa traktowane jako rózne znaki. W
nazwie moga wystapic litery, cyfry oraz znaki specjalne: _ - $

Haslo uzytkownika:

równiez do 8 znaków, zestaw znaków - jak dla nazwy uzytkownika

W momencie tworzenia konta uzytkownika przez administratora systemu
definiowane sa nastepujace obiekty:

* nazwe uzytkownika
* haslo
* unikalny numer uzytkownika (UID: User Identification Number
* grupe do której standardowo nalezy uzytkownik (GID: Group
Identification Number)
* ewentualne ograniczenia na dopuszczalna ilosc zajmowanego
miejsca na dyskach (file quota) - o ile system quota jest
aktywny
* 'dluga' nazwe uzytkownika - pozwalajaca na identyfikacje
uzytkownika wedlug jego prawdziwego nazwiska
* bazowa kartoteke uzytkownika - kartoteke w której znajda sie
pliki zakladane przez uzytkownika. Do kartoteki tej kopiowane
sa zwykle standardowe pliki konfiguracyjne
* nazwa standardowej powloki jakiej uzywac bedzie w swoich
sesjach uzytkownik. Zwykle ta powloka (shellem) jest csh lub
tcsh



Ogólne zasady wpisywania komend w systemie Unix:

* duze i male litery w nazwach komend sa traktowane jak rózne
znaki - wiekszosc komend Unixa posiada nazwy zawierajace
wylacznie male litery
* standardowa linia komendy Unixa ma do 128 znaków. Najczesciej
uzywane znaki edycyjne:

skresl ostatni znak Backspace lub Cntrl-H

skresl cala linie
komendy Esc

* ostatnio wprowadzone komendy sa pamietane w historii komend
uzytkownika.

Na tak zapamietanym zbiorze komend mozemy wykonywac nastepujace operacje
(wymieniono tylko te najwazniejsze):

wyswietl liste wczesniej wykonywanych
komend history

powtórz wykonanie ostatniej komendy !!

powtórz wykonanie ostatniej komendy
zaczynajacej sie od podanego lancucha !lancuch

powtórz wykonanie ostatniej komendy
zawierajacej w sobie (w dowolnym miejscu) !ólancuch
lancuch

wykonaj ponownie n-ta komende (komendy sa
numerowane od 1) !n

przyklad powtarzania komend:

nowak> history aby powtórzyc:

1: pwd !pwd

2: mkdir test !ódir

3: cd test !3

4: ls -l !!

nowak>


Dostep do programów i danych - poprzez kartoteki i pliki.

Nazwa pliku i kartoteki:

* do 32 znaków
* duze i male litery, cyfry, znaki specjalne: _ - $ .

Róznice w nazwach (w stosunku do nazw z Ms DOS):

* duze i male litery sa traktowane jako rózne znaki
* kropki moga wystepowac w nazwach wielokrotnie
* nazwy moga byc dluzsze
* nazwy podkartotek sa oddzielane slashem (/) a nie backslashem
(\)
* nazwa kartoteki korzenia jest /

Kartoteki tworza normalne drzewo kartotek. Oprócz zwyklych plików w
kartotekach moga sie pojawic:

* pliki 'ukryte' - kazdy plik, którego nazwa zaczyna sie od
kropki jest plikiem 'ukrytym'. Jego nazwa nie jest normalnie
wyswietlana podczas listowania zawartosci kartoteki.

Zwykle sa to pliki konfiguracyjne - nie powinny byc
skreslane ani modyfikowane przez uzytkownika

* pliki 'specjalne' - wszystkie pliki w kartotece /dev
oznaczaja naprawde urzadzenia dolaczone do komputera - twarde
dyski, urzadzenia peryferalne, itp. Nie wolno skreslac plików
z kartoteki /dev - uzywamy tych 'plików' tylko w komendach
archiwizacji danych (tar)

Oprócz nazw plików i kartotek mozemy uzywac wzorników. We wzornikach moga
wystapic - oprócz liter, cyfr, znaków _ - $ i . (kropki) - znaki specjalne:

* * - oznacza dowolny lancuch dowolnych znaków
* ó - oznacza pojedynczy dowolny znak
* [znak, ..., znak] - dowolny z wymienionych znaków
* [od-do] - dowolny znak o kodzie w podanym zakresie

Przyklady wzorników:

*a dowolna nazwa konczaca sie litera a
dowolna nazwa zaczynajaca sie od litery a
po której wystepuja dwa dowolne znaki a
aóób*c* nastepnie litera b, dowolny ciag dowolnych
znaków, litera c i dowolny ciag dowolnych
znaków konczacych nazwe
dowolna nazwa zaczynajaca sie od cyfry po
[0-9]*[xyz] której wystepuje dowolny ciag dowolnych
znaków. Nazwa konczy sie jedna z liter x, y
lub z

Jezeli chcemy, zeby wzornik obejmowal nazwy zaczynajace sie od kropki
('ukryte') - musimy jawnie wymienic kropke we wzorniku

*z dowolna nazwa konczaca sie litera z - z
wyjatkiem nazw zaczynajacych sie od kropki
dowolna nazwa zaczynajaca sie od kropki po
.*z której wystepuje dowolny ciag dowolnych
znaków zakonczonych litera z

Nie mozna zdefiniowac wzornika obejmujacego zarówno nazwy 'ukryte'
(zaczynajace sie od kropki) jak i nazwy 'nie ukryte'.



Komendy dzialajace na kartotekach:

mkdir nazwa

tworzy (pod)kartoteke o podanej nazwie

pwd

wyswietl nazwe biezacej kartoteki

rmdir wzornik

skresl kartoteki o nazwach zgodnych z wzornikiem. Uwaga! Kartoteka
moze zostac skreslona tylko wtedy, kiedy jest pusta (wczesniej
skreslono wszystkie pliki i podkartoteki)

cd nazwa

przejdz do podkartoteki o podanej nazwie. W stosunku do MsDOS
wystepuja nastepujace róznice:

* zamiast nazwy mozna podac wzornik - dowolny fragment nazwy
zakonczony *. O ile tylko taki wzornik wyznacza jednoznacznie
kartoteke - przejdziemy do niej
* istnieja równiez 'nazwy specjalne':
* .. - kartoteka nadrzedna (kartoteka 'ojca')
* / - kartoteka korzenia
* jezeli nazwa (lub wzornik) wystepujaca w komendzie cd zaczyna
sie od / (slash) - Unix szuka kartoteki poczawszy od
korzenia. W przeciwnym wypadku - szuka podkartoteki biezacej
kartoteki.
* komenda cd bez nazwy kartoteki - powoduje powrót do kartoteki
'bazowej' uzytkownika.



Komendy dzialajace na plikach:

ls [ parametry ] [ wzornik ]

wyswietla informacje o plikach, których nazwy sa zgodne z
wzornikiem. Jezeli nie podamy wzornika - wyswietla informacje o
wszystkich plikach - z wyjatkiem plików ukrytych. Najczesciej
uzywane parametry:

-F wyswietlaj * po nazwach programów, / po
nazwach kartotek
-R wyswietlaj równiez informacje o plikach
znajdujacych sie w podkartotekach
-a wyswietlaj równiez pliki ukryte (zaczynajace
sie od kropki
-g jak -l (zob.) ale bez wyswietlania informacji
o wlascicielu pliku
-l 'pelny listing' - wyswietlane sa nastepujace
informacje o plikach:

* typ pliku (kartoteka, plik, link)
* prawa dostepu, ilosc linków do pliku
* nazwa wlasciciela i wlasciciela
grupowego
* wielkosc pliku (w bajtach)
* czas ostatniej modyfikacji pliku
* nazwa pliku
-p wyswietla / po nazwach kartotek
-r odwraca porzadek sortowania nazw
-s podaje wielkosci plików, w jednostkach 512
bajtów
-t sortuje nazwy wedlug czasu ostatniej
modyfikacji ('najstarszy najpierw')
-u sortuje wedlug czasu ostatniego dostepu do
pliku



ls -aFsl

total 8

drwxr-xr-x 5 tedd users 1024 Nov 22:31 ./
5

drwxr-xr-x 8 root root 1024 Nov 02:42 ../
3

-rw-r--r-- 1 tedd users 144 Nov 22:30 .cshrc
5

-rw-r--r-- 1 tedd users 163 Nov .kermrc
24

-rw-r--r-- 1 tedd users 34 Jun .less
6

-rw-r--r-- 1 tedd users 114 Nov .lessrc
24

drwxr-xr-x 2 tedd users 1024 Nov 01:11 .term/
3

drwxr-xr-x 2 tedd users 1024 Nov 22:33 KURS.Unix
5



cp plik nowy_plik

cp wzornik [ ... wzornik] kartoteka

kopiuje pliki. W pierwszej postaci kopiuje plik na nowy plik
tworzac jego kopie. W drugim przypadku (ostatnia nazwa musi byc
nazwa kartoteki) kopiuje grupe plików do wskazanej kartoteki.

Uwaga!!! Komenda cp bez ostrzezenia niszczy - o ile takie pliki
juz istnieja - zawartosc plików do których kopiowana jest
informacja!!!



mv nazwastara nazwanowa

mv wzornik [ ... wzornik] katalog

w pierwszej postaci - zmienia nazwe pliku lub kartoteki.
Pojedyncze nazwy (nie wzorniki) moga wystapic w takiej sytuacji.
Jezeli plik o nazwie nazwanowa juz istnieje i nie jest
zabezpieczony przed zapisem - jest skreslany bez ostrzezenia

w drugiej postaci - przenosi pliki o nazwach zgodnych z wzornikami
do kartoteki, której nazwa wystepuje jako ostatni parametr.
Uwaga!!! bez ostrzezenia skresla pliki w docelowej kartotece - o
ile nie sa one zabezpieczone przed zapisem. . (kropka) jako nazwa
kartoteki oznacza zadanie przeniesienia plików do biezacej
kartoteki.



rm [-f] [-r] -i] wzornik

kasuje pliki o nazwach zgodnych z wzornikiem. Jezeli plik byl
zabezpieczony przed zapisem - zada potwier-dzenia przed
skresleniem pliku. Mozliwe parametry:

-f kasuj pliki bez ostrzezenia, nawet gdy byly
zabezpieczone przed zapisem
-r jako wzornik musi wystapic wzornik
wskazujacy na nazwy kartotek. Kasowane sa
wszystkie pliki i podkartoteki w
kartotekach o nazwach zgodnych z wzornikiem
-i interaktywnie - wyswietla nazwe kazdego
pliku przed skresleniem - pyta czy plik ma
byc skreslony



cmp plik1 plik2

porównuje dwa pliki, wyswietlajac napotkane róznice



more nazwapliku

wyswietla zawartosc pliku, strona (ekran) po stronie. W czasie
wyswietlania dzialaja nastepujace klawisze:

space nastepna strona
Enter nastepna linia
q koniec wyswietlania

Przecwicz praktycznie nastepujace operacje:

* zalóz wlasna kartoteke
* wyswietl wszystkie nazwy plików z wlasnej kartoteki
* przekopiuj kilka plików z Twojej bazowej kartoteki do tej
nowo utworzonej
* przejdz do tej nowej kartoteki
* wylistuj i skasuj wszystkie pliki z nowo utworzonej kartoteki



Bazowa kartoteka uzytkownika

kazdy uzytkownik posiada swoja kartoteke 'bazowa' - to ta kartoteka w której
znajdujemy sie bezposrednio po zaloginowaniu. Kartoteki zakladane przez
uzytkownika sa zwykle tworzone jako podkartoteki jego kartoteki bazowej. Do
kartoteki bazowej mozemy zawsze 'wrócic' w nastepujacy sposób:

cd komenda cd bez nazwy kartoteki
powoduje powrót do kartoteki bazowej
cd $HOME istnieje zmienna systemowa - HOME -
pamietajaca nazwe kartoteki bazowej.
Konstrukcja $HOME powoduje 'pobranie'
tej nazwy
cd ~username ta komenda powoduje przejscie do
kartoteki bazowej uzytkownika username

Konstrukcji ~username mozemy równiez uzywac do kopiowania danych - komenda

cp ~nowak/* .

skopiuje wszystkie pliki uzytkownika nowak do biezacej kartoteki (o ile mamy
pozwolenie na czytanie z kartoteki nowak)



Prawa dostepu

kazdy plik i kartoteka w systemie Unix posiada atrybuty, okreslajace prawa
dostepu do takiego obiektu. Prawa dostepu sa definiowane w momencie
tworzenia obiektu - wedlug maski ustawionej przez administratora systemu.
Wlascicielem obiektu jest ten, kto go stworzyl. Wlasciciel obiektu moze w
kazdej chwili zmienic prawa dostepu do obiektu - zarówno dla siebie jak i
dla innych uzytkowników.

Prawa dostepu sa zdefiniowane na trzech poziomach:

* dla wlasciciela obiektu (u)
* dla grupy, do której nalezy wlasciciel obiektu (g)
* dla pozostalych uzytkowników (o)

Z punktu widzenia uzytkownika systemu Unix kazdy obiekt moze posiada zawsze
jakies prawa dostepu, zdefiniowane przez wlasciciela obiektu. Prawa te sa
kombinacja nastepu-jacych praw dostepu:

r prawo do czytania obiektu

w prawo do wpisywania danych do obiektu. Pozwala to
równiez na skreslenie obiektu
x prawo wykonania obiektu (program lub kartoteka)

Do zmiany praw dostepu sluzy komenda

chmod komu jak prawa wzornik

gdzie:

* komu - dowolna kombinacja liter u, g i o oznaczajacych kolejno
wlasciciela pliku, czlonków grupy do której nalezy wlasciciel pliku (z
wylaczeniem wlasciciela obiektu) oraz pozostalych uzytkowników.
Dodatkowo mozna uzyc litery a która oznacza 'wszystkich uzytkowników'
(a=ugo)
* jak - jeden ze znaków +, - lub = oznaczajacych kolejno:

+ dodaj wymienione w komendzie chmod prawa do
juz istniejacych praw dostepu
- usun wymienione w komendzie chmod prawa
dostepu ze zbioru praw dostepu do obiektu
= usun wszystkie wczesniej ustawione prawa
dostepu do obiektu, po usunieciu - nadaj
wylacznie te prawa, które sa wymienione w
komendzie chmod

* prawa - dowolna kombinacja liter r, w, x i s. Znaczenie - jak opisano
to wczesniej
* wzornik - obiekty których nazwy sa zgodne z wzornikiem beda tymi
obiektami, dla których zmieniamy prawa dostepu

Przyklady:

chmod u-w *a

odbierz wlascicielowi prawa zapisu i kasowania do
wszystkich plików i podkartotek z biezacej kartoteki,
których nazwy koncza sie litera a.

Uwaga!!! Ta zmiana nie bedzie dotyczyc obiektów których
nazwa konczy sie litera a ale zaczyna sie od kropki.

chmod g=r .*z

odbierz uzytkownikom, nalezacym do tej samej grupy co
uzytkownik wydajacy komende chmod, wszystkie prawa z
wyjatkiem praw do czytania dla obiektów z biezacej
kartoteki, których nazwy zaczynaja sie od kropki a
koncza litera z

chmod go-wx ~nowak/*

odbierz wszystkim uzytkownikom - z wyjatkiem wlasciciela
obiektów - prawa do zapisu i wykonywania wszystkich
plików i podkartotek z kartoteki bazowej uzytkownika
nowak. Zmiana ta nie dotyczy obiektów w kartotece ~nowak
których nazwy zaczynaja sie od kropki

Uwagi:

* biezaco ustawione prawa dostepu mozemy wyswietlic uzywajac komendy ls
-l
* w Unixie inaczej niz w MsDOSie zdefiniowane sa programy. Programem jest
plik o atrybucie x - niezaleznie od tego jaka ma nazwe. Nie ma zadnych
standardowych typów (rozszerzen) nazw dla programów - atrybut x
decyduje czy plik jest programem (lub skryptem) czy plikiem z danymi
* kartoteka równiez musi posiadac atrybut x - jezeli usuniemy atrybut x z
kartoteki to nie bedziemy w stanie przejsc do tej kartoteki (komenda
cd)

Cwiczenie:

* wylistuj prawa dostepu do plików w swojej kartotece
* odbierz sobie prawo write do pliku a nastepnie spróbuj go
skreslic
* wyswietl informacje o Twoich prawach dostepu do kartoteki
kolegi. Popros go o odebranie praw dostepu. Ponownie wyswietl
swoje prawa dostepu do jego obiektów. Zrób to samo dla kolegi
- odbierz mu prawa dostepu do Twoich plików
* ukryj swoja kartoteke przed innymi
* wyswietl czesc obiektów z kartoteki /usr/bin - powiedz, które
z nich sa programami



Miejsce na dysku

dowolnie duzy dysk twardy po pewnym czasie staje sie za maly. Miejsce na
dysku, które moga zajac pliki uzytkownika moze zostac ograniczone przez
administratora systemu. Aby zobaczyc, czy takie ograniczenie istnieje
powinnismy uzyc komendy

quota -v

komenda ta wyswietli informacje o tym ile miejsca mozemy maksymalnie zajac
na dysku oraz ile z tego miejsca juz zostalo przez nas zajete

Sumaryczna wielkosc plików - komenda

du -s [wzornik]

wyswietla informacje o tym, ile miejsca na dysku - w kilobajtach - zajely
sumarycznie pliki, których nazwy sa zgodne z wzornikiem. O ile nie podamy
wzornika - wyswietlona zostanie informacja o tym, ile miejsca zajmuja
wszystkie pliki w biezacej kartotece.

du -s du -s /
1 /TMP
21 1637 /bin
.
121 /boot
1 /cdrom

21 /dev
385 /etc
162 /home
647 /lib
106259 /usr



Fizyczna ilosc wolnego miejsca na dysku:

komenda

df

wyswietla informacje i fizycznej ilosci miejsca na dysku. Podawana jest
nazwa urzadzenia (/dev/...), fizyczna ilosc miejsca na urzadzeniu, ilosc
uzytych kilobajtów, ilosc pozostalego miejsca (w kilobajtach), procentowa
ilosc wolnego miejsca oraz nazwe kartoteki do której 'dolaczone' jest
urzadzenie

df

Filesystem 1024-blocks Used Available Capacity Mounted
on
/dev/hda3 201176 126269 64172 66% /
/dev/hda1 235592 231464 4128 98% /dos_c
/dev/hda5 235592 164284 71308 70% /dos_d



Jak znalezc informacje o ilosci wolnego miejsca na dysku, na którym
zapisywane sa nasze plikió

* najpierw musimy znalezc informacje o tym, gdzie zapisywana jest nasz
kartoteka bazowa. Mozemy to zrobic za pomoca wykonywanych po sobie
komend

cd

pwd

pierwsza z nich ,przeniesie' nas do naszej kartoteki bazowej,
druga wyswietli nazwe tej kartoteki. zalózmy, ze komenda pwd
wyswietlila nazwe /home/nowak jako nazwe naszej kartoteki bazowej

* nastepnie wykonujemy komende pwd i szukamy nazwy kartoteki której
poczatek jest najbardziej zgodny z nazwa kartoteki zwrócona przez pwd

df

Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/hda3 201176 126269 64172 66% /
/dev/hda1 235592 231464 4128 98% /home
/dev/hda5 235592 164284 71308 70% /usr/local

w powyzszym przykladzie widzimy, ze nasza kartoteka bazowa
znajduje sie na dysku /dev/hda1 na którym pozostalo okolo 4.1 MB
wolnego miejsca



Opisy komend ('help'):

w kazdym momencie uzytkownik moze otrzymac angielskojezyczny opis komendy
systemu Unix. Komenda

man nazwa_komendy

wyswietla pelny opis komendy o podanej nazwie dzielac ten opis na strony
(ekrany monitora). Podczas wyswietlania takiego opisu dzialaja nastepujace
klawisze kontrolne:

spacja wyswietl nastepny ekran (strone)
Enter wyswietl nastepna linie
q przerwij wyswietlanie opisu komendy

przyklad:

man chmod

CHMOD(1V) USER COMMANDS CHMOD(1V)

NAME
chmod - change the permissions mode of a file

SYNOPSIS
chmod [ -fR ] mode filename ...

DESCRIPTION
Change the permissions (mode) of a file or files. Only the
owner of a file (or the super-user) may change its mode.

Jezeli nie pamietamy nazwy komendy mozemy za pomoca

man -k slowo_kluczowe

spowodowac wyswietlenie nazw wszystkich komend które w naglówkach swych
opisów posiadaja podane przez nas slowo kluczowe

man -k files


install_openwin - install OpenWindows system files
(8)
makeafb (1) - create bitmap files from scalable
Folio format files
makedepend (1) - create dependencies in makefiles
mkfontdir (1) - create fonts.dir file from directory
of font files.
printtool (1) - OpenWindows tool for printing files
ttcp (1) - copy files in a ToolTalk-safe way.
ttmv (1) - move or rename files in a
ToolTalk-safe way.
ttrm, ttrmdir - remove files or directories in a
(1) ToolTalk-safe way.
tttar (1) - (de)archive files and ToolTalk
objects
:



Wybrane programy uslugowe - vi

vi jest standardowym edytorem w systemie Unix. Pozwala na tworzenie i edycje
plików tekstowych. Uruchomienie:

vi [parametry] wzornik

vi zostanie uruchomiony - pierwszy z plików których nazwy sa zgodne z
wzornikiem zostanie wczytany do edycji.

Zanim omówimy zasady dzialania vi - najczesciej uzywane parametry wywolania
vi:

jezeli nastapila awaria komputera podczas
-r poprawiania przez vi jakiegos pliku mozemy - po
plik ponownym uruchomieniu Unixa odzyskac ten plik
uruchamiajac vi z parametrem r nazwa_pliku
poprawianego podczas awarii
wczytaj pliki o nazwach zgodnych z wzornikiem w
-R trybie read only - to zabezpiecza nas przed
przypadkowa zmiana zawartosci tych plików

vi moze pracowac w jednym z 3 stanów:

1. tryb klawiszowy - w tym trybie kazdy klawisz na klawiaturze powoduje
wykonanie jakiejs akcji na edytowanym pliku
2. tryb edycji tekstu - po wykonaniu (w trybie klawiszowym) komendy
inicjujacej wpisywanie tekstu - przechodzimy do trybu edycji tekstu. W
tym trybie tekst wpisywany z klawiatury jest wstawiany do edytowanego
pliku - az do nacisniecia klawisza Esc - co spowoduje powrót do trybu
klawiszowego
3. tryb komend liniowych - jezeli w trybie klawiszowym nacisniemy :
(dwukropek) - przechodzimy do trybu komend liniowych. W ostatniej linii
na ekranie pojawia sie : po którym mozemy wpisac komende 'liniowa'.
Komenda taka dziala zwykle na grupie linii. Po jej wykonaniu vi wraca
do trybu klawiszowego

Uwaga!!! Najczesciej popelnianym bledem jest próba wpisywania tekstu w
trybie klawiszowym bez wczesniejszego wykonania komendy inicjujacej
wpisywanie tekstu. Powoduje to interpretowanie przez vi kazdego nacisnietego
klawisza jako komendy vi - moze do doprowadzic do duzych 'zniszczen' w
edytowanym tekscie.

* (1) po uruchomieniu vi przechodzi w tryb komend klawiszowych - kazde
nacisniecie klawisza na klawiaturze powoduje wykonanie komendy,
zwiazanej z tym klawiszem
* (1 -> 3-> 1) z trybu klawiszowego, po nacisnieciu : przechodzimy do
trybu komend liniowych. Mozemy wpisac komende - po nacisnieciu klawisza
Enter vi wykonuje komende i wraca do trybu klawiszowego (2)
* (1 -> 2) jezeli w trybie klawiszowym wykonamy komende wstawiajaca tekst
- przechodzimy do trybu edycji tekstu. W tym trybie znaki wpisywane z
klawiatury sa wstawiane do edytowanego pliku. Nacisniecie klawisza ESC
powoduje powrót do trybu klawiszowego (1) - zakonczenie wstawiania
tekstu
* (3) jezeli pracujac w trybie liniowym wykonamy komende konczaca prace
vi (q - zakoncz, nie zmieniaj pliku, x - zakoncz, zapisz zmieniony
plik) - wrócimy do Unixa



Wybrane komendy trybu klawiszowego powodujace przejscie do trybu wpisywania
tekstu:

a wpisuj tekst za kursorem
i wpisuj tekst przed kursorem
A wpisuj tekst na koncu linii
I wpisuj tekst na poczatku linii
S zastap cala biezaca linie wpisywanym tekstem

C zastap znaki od polozenia kursora do konca linii
wpisywanym tekstem

Wpisywany tekst moze byc wieloliniowy. Konczymy wpisywanie tekstu naciskajac
klawisz Esc - wracamy do trybu klawiszowego

dd skasuj cala linie w której znajduje sie kursor
x skasuj znak za kursorem
X skasuj znak przed kursorem
J polacz biezaca i nastepna linie w jedna linie
u anuluj ostatnia zmiane ('undo')
Y anuluj wszystkie zmiany w biezacej linii
. powtarzaj ostatnie polecenie zmieniajace tekst

Komendy zmiany pozycji:

ó ó znak w lewo, znak w prawo
ó ó linia w góre, linia w dól
0 przejdz na poczatek biezacej linii
$ przejdz na koniec biezacej linii
fc skocz wprzód do znaku c
Fc skocz w tyl do znaku c
w skocz do poczatku nastepnego slowa
b skocz do poczatku poprzedniego slowa
H przejdz na góre ekranu
M przejdz na srodek ekranu
L przejdz na dól ekranu
^F przesun o ekran w przód
^B przesun o ekran w tyl
^R przerysuj ekran

zapis ^F oznacza jednoczesne nacisniecie klawisza Ctrl i klawisza F.

Kopiowanie i przenoszenie tekstu:

wszystkie komendy skreslajace lub kopiujace tekst wpisuja ten tekst do
wewnetrznego bufora vi. Tekst ten moze byc potem wielokrotnie wstawiany w
rózne miejsca pliku. Nizej wymienione komendy równiez dzialaja na buforze
vi:

m zaznacz biezaca linie
y skopiuj zaznaczony tekst do bufora vi
p wstaw tekst z bufora vi za kursorem
P wstaw tekst z bufora vi przed kursorem

Wybrane komendy trybu liniowego:

/wzornik wyszukaj tekst zgodny z wzornikiem,
przesun tam kursor

/ wyszukaj nastepne wystapienie ostatnio
uzytego wzornika
s/told/tnew/ zamien tekst told na tnew

w zapisz biezacy plik na dysk

w fname zapisz biezaco poprawiany tekst na plik
fname

r fname wczytaj zawartosc pliku fname i wstaw go
za kursorem
number przejdz do linii numer number
zakoncz poprawianie biezacego pliku, zacznij
n poprawiac nastepny plik, którego nazwa pasuje
do wzornika z linii komendy uruchamiajacej vi
zakoncz prace vi - jezeli zmienilismy
q zawartosc pliku vi nie pozwoli nam zakonczyc
pracy

q! zakoncz prace z vi nie zapisujac zmienionego
pliku na dysk

x zapisz edytowany plik na dysk i zakoncz prace
z vi

Komendy s i w standardowo przeszukuja i zapisuja caly plik. Jezeli
poprzedzimy je dwoma numerami linii oddzielonymi przecinkiem - beda dzialac
tylko na tych liniach.

Jako numery linii mozna uzyc liczb calkowitych lub konstrukcji postaci:

-liczba linia o liczba linii wczesniej niz biezaca
+liczba linia o liczba linii pózniej niz biezaca
. biezaca linia
$ ostatnia linia pliku

Przyklady:

1,20s/ala/ola/

zamien kazde wystapienie tekstu ala na ola w liniach od
1 do 20

.+5,$-10w part1

wpisz na plik part1 czesc biezaco poprawianego pliku -
od linii o 5 dalej niz biezaca do linii o 10 mniej niz
ostatnia linia w pliku



uzywajac vi stwórz we wlasnej kartotece plik zawierajacy podanie o podwyzke.
Najpierw stwórz i zapisz plik zawierajacy naglówek takiego podania i zapisz
go na dysk konczac prace z vi. Nastepnie uzyj ponownie vi aby dopisac do
pliku uzasadnienie podwyzki.



Wyswietlanie danych o innych uzytkownikach:

zanim spróbujemy skomunikowac sie z jakims uzytkownikiem powinnismy czy jest
on biezaco zaloginowany - mozemy wtedy nie tylko wyslac mu list lecz równiez
'porozmawiac' z nim przez komputer.

Komenda

w

wyswietla informacje o uzytkownikach którzy pracuja biezaco na naszym
komputerze

w

2:55pm up 3 min, 2 users, load average: 0.02, 0.05,
0.01
User tty from login@ idle JCPU PCPU what
root tty2 2:53pm w
tedd tty1 2:52pm 2 -tcsh

dodatkowo otrzymujemy informacje o tym kiedy zaloginowali sie poszczególni
uzytkownicy ('login@'), z jakiego komputera ('from' - w tym przypadku nie
bylo uzytkowników zaloginowanych spoza naszego komputera) oraz jaka komende
wykonali ostatnio ('what')

Pelniejsze dane o uzytkownikach otrzymamy uzywajac komendy

finger [ nazwa_uzytkownika ]

jezeli nie podamy nazwy uzytkownika otrzymamy skrótowa informacje o biezaco
zaloginowanych uzytkownikach:

Login Name Tty Idle Login Office Phone
Time

dawid Dawid 4 1 Nov 8
Kedzierski - r 19:41

t_user Uzytkownik 3 1 Nov 8 Comp 229622
'testowy' 19:41

tedd 'Tedd' T. 1 Nov 8
Kedzierski 19:40

natomiast podanie nazwy uzytkownika spowoduje wyswietlenie 'pelnej'
informacji o uzytkowniku:

finger dawid

Login: dawid Name: Dawid Kedzierski - rowerzysta
Directory: /home/dawid Shell: /bin/tcsh
Last login Tue Nov 7 19:05 (MET) on tty1
No mail.
No Plan.

mozna równiez wyswietlac dane o uzytkowniku z innego komputera

finger user@adres_sieciowy_komputera

lub wyswietlic informacje o wszystkich uzytkownikach zaloginowanych biezaco
na 'innym' komputerze:

finger @adres_sieciowy_komputera



Wysylanie komunikatów do innych uzytkowników:

aby wyslac komunikat do biezaco zaloginowanego uzytkownika mozemy uzyc
komendy

write nazwa_uzytkownika [nazwa_terminala]

nazwa_uzytkownika sluzy do wskazania do kogo ma byc wyslany komunikat.
Jezeli uzytkownik jest zaloginowany na kilku terminalach mozemy jawnie
wskazac na który terminal ma byc przeslany komunikat wpisujac
nazwa_terminala jako ostatni parametr komendy write.

Po wpisaniu komendy write uzytkownik wysylajacy komunikat wpisuje w
kolejnych liniach tekst, który zostanie przeslany. Tekst moze byc
wieloliniowy - przechodzimy do nowej linii naciskajac klawisz Enter.
Konczymy wpisywanie naciskajac Ctrl-D jako pierwszy znak nowej linii.

Uzytkownik do którego wysylamy komunikat zobaczy na swoim ekranie wiadomosc
postaci:

Message from root@teddPC on tty at 14:56 ...
Koniec pracy - zamykamy!!!
Twoj PC.
EOF



Interaktywna komunikacja z innymi uzytkownikami:

aby 'porozmawiac' z innym uzytkownikiem uzyjemy komendy

talk user[@adres_komputera] [nazwa_terminala]

komenda ta pozwala na 'rozmowe' z uzytkownikiem, który jest biezaco
zaloginowany. Podanie po nazwie uzytkownika adresu_komputera umozliwi
'rozmowe' z uzytkownikiem zaloginowanym na innym niz nasz komputerze.

Nawiazanie polaczenia pomiedzy dwoma uzytkownikami wyglada wtedy
nastepujaco:

* zalózmy, ze uzytkownik nowak zaloginowany na komputerze alfa chce
porozmawiac z uzytkownikiem kowalski pracujacym na komputerze beta
* nowak wysyla komunikat

talk kowalski@beta

* na ekranie komputera kowalskiego pojawia sie komunikat:

Message from TalkDaemon@beta
talk: connection requested by nowak@alfa
talk: respond with talk nowak@alfa

* kowalski wykonuje komende

talk nowak@alfa

polaczenie zostaje nawiazane. Ekrany komputerów nowaka i kowalskiego zostaja
podzielone na polowy - na jednej z nich pojawiaja sie komunikaty wysylane,
na drugiej odbierane - polaczenie zostalo nawiazane.

Aby zakonczyc polaczenie jeden z uzytkowników naciska Cntrl-C - to przerywa
polaczenie.



Wysylanie listów

wymienione wczesniej metody komunikacji pomiedzy uzytkownikami wymagaja zeby
obaj respondenci byli biezaco zaloginowani. To nie zawsze jest mozliwe. Aby
skomunikowac sie z uzytkownikiem który nie jest zaloginowany - w
najprostszym przypadku - uzywamy komendy mail

mail [ uzytkownik[@adres_komputera]]

jezeli nie podamy nazwy uzytkownika - mail sprawdzi czy sa do nas jakies
listy. Jezeli nie ma zadnych listów po wypisaniu komunikatu 'no mail
messages' mail zakonczy dzialanie.

Jezeli sa jakies listy do nas - mail wyswietli naglówki tych listów:

Mail version 5.5 6/1/90. Type ó for help.
"/var/spool/mail/root": 2 messages
> 1 root Thu Sep 15 02:23 132/4322 "Register with the Lin"
2 vol@mhd1 Thu Sep 15 02:53 65/2683 "Welcome to Linux!"
&

jestesmy teraz w trybie wykonywania komend maila. Najczesciej uzywane
komendy to:

num wyswietl list numer num
d num skresl list numer num
'odskresl' list numer num. Do momentu
u num zakonczenia pracy z mailem wszystkie
skreslone listy moga byc odzyskane -
komenda u

s num fname dopisz ('append') list numer num do
pliku o nazwie fname

R num wyslij odpowiedz na list numer num -
tylko do nadawcy tego listu

r num wyslij odpowiedz na list o numerze num
do wszystkich, którzy go otrzymali
m user zacznij tworzyc list który zostanie
[@adres_komp] wyslany do uzytkownika user
h ponownie wyswietl naglówki listów
q zakoncz prace z mailem

jako num mozemy uzyc pojedynczego numeru (komenda dotyczy wtedy pojedynczego
listu), dwóch numerów oddzielonych myslnikiem (komenda dotyczy wszystkich
listów o numerach od - do) lub * (gwiazdki) - w tym ostatnim przypadku
komenda dotyczy wszystkich listów.

Jezeli zaczniemy wysylac list - podajac nazwe adresata - bedziemy proszeni o
wpisanie:

* cc - pole do którego wpisujemy nazwy uzytkowników (z ewentualnymi
adresami komputerów) którzy powinni otrzymac kopie naszego listu.
Komenda r wysyla odpowiedz do nadawcy listu oraz wszystkich
uzytkowników wymienionych w polu cc
* nastepnie wpisujemy tresc listu. Tresc moze byc dowolnie dluga -
konczymy wpisywanie naciskajac Ctrl - D lub wpisujac . (kropke) na
poczatku pustej linii.

Przecwicz poznane komendy komunikacji pomiedzy uzytkownikami:

* wyswietl informacje o biezaco zaloginowanych uzytkownikach
* wyslij komunikat do jednego z uzytkowników
* nawiaz lacznosc (talk) z wybranym uzytkownikiem
* wyslij list do grupy uzytkowników - odpowiedz na list który doszedl do
Ciebie
* zapamietaj tresc wybranego listu na pliku

Program mail to najprostszy program to obslugi poczty. Jego 'zaleta' jest
to, ze jest obecny w kazdej wersji Unixa. Natomiast jego uzycie nie jest
zbyt 'user friendly'. Dlatego uzytkownicy Unixa dosc szybko zaczynaja
uzywac bardziej 'wygodnych' programow - elm i pine sa chyba najczesciej
uzytwanymi programami do obslugi poczty. Omowienie tych programow
przekracza zakres tego opracowania - zreszta sa one na tyle
'przyjacielskie' ze elementarna znajpmosc jezyka angielskiego wystarcza do
ich uzywania.



Procesy

kazdy uruchomiony w Unixie program jest traktowany jak niezalezny proces.
Unix pozwala uruchomic wiele procesów jednoczesnie. Kazdy z uruchomionych
procesów posiada 3 standardowe strumienie danych:

* input - stad wczytywane sa dane do programu; default: z klawiatury
* output - na ten strumien wypisywane sa wyniki i komunikaty; default:
ekran terminala
* error - strumien na który wysylane sa komunikaty o bledach; default:
ekran terminala

Unix pozwala przedefiniowac miejsce, skad pobierane sa dane wejsciowe oraz
miejsca gdzie wyswietlane sa komunikaty za pomoca nastepujacych konstrukcji:

* proces < fname - pobieraj dane z pliku fname zamiast z klawiatury
* proces > fname - wpisuj wyniki, które normalnie bylyby wyswietlane na
ekran terminala, do pliku fname
* process >> fname - dopisz ('append') wyniki, które normalnie bylyby
wyswietlane na ekran terminala, do pliku fname
* process >& fname -wpisuj wyniki, normalnie kierowane na strumienie
output i error do pliku o nazwie fname
* process >>& fname - dopisuj ('append') wyniki, normalnie kierowane na
strumienie output i error do pliku o nazwie fname

Przyklad:

ls -ls a*z > pliki

zapamietaj w pliki dane o wszystkich plikach z biezacej
kartoteki posiadajacych nazwy zaczynajace sie od a i
konczace sie na z

Unix pozwala równiez wykonywac kilka procesów tak, ze ich wykonanie jest
powiazane ze soba:

proc1 ; proc2 ; - wykonanie sekwencyjne: najpierw wykonany zostanie
... proces proc1, po jego zakonczeniu uruchomiony zostanie
proces proc2, itd.
proc1 & proc2 & - wykonanie równolegle: wszystkie procesy procn zostana
... uruchomione jednoczesnie i beda sie wykonywac
wspólbieznie
proc1 | proc2 | - wykonanie potokowe: najpierw zostanie uruchomiony
... proces proc1. Wyniki które ten proces wyswietla na
ekranie zostana przeslane do procesu proc2. Proces proc2
zostanie uruchomiony po zakonczeniu procesu proc1. Dane
przekazane z procesu proc1 sa przesylane do procesu proc2
tak jakby byly wpisywane z klawiatury. To samo bedzie sie
powtarzalo dla pozostalych procesów uruchomionych
potokowo

wszystkie te sposoby uruchamiania procesów mozna laczyc ze soba. Dodatkowo
uruchamiane procesy moga byc laczone w grupy za pomoca nawiasów.

(p1 ; p2 ) & (p3 | p4 )

uruchom wspólbieznie:

* wykonywane sekwencyjnie procesy p1 i p2
* proces p3, po jego zakonczeniu uruchom p4
przekazujac mu jako dane wejsciowe dane wytworzone
przez p3

Do wykonania bardziej sensownych operacji na strumieniach i procesach
potrzebne nam beda jeszcze dwie komendy Unixowe:

cat [ wzornik ]

czyta zawartosc wszystkich plików których nazwy sa zgodne z
wzornikiem, laczy ich zawartosc i wysyla na ekran. Jezeli nie
podamy wzorników - czytaj dane ze standardowego wejscia
(klawiatura)

grep [ opcje ] tekst wzorzec

wyszukuje w plikach których nazwy sa zgodne z wzorcem wszystkie
linie w których wystepuje tekst. Wyszukane linie sa przesylane na
standardowe wyjscie

Najczesciej uzywane parametry:

-v wyswietlane sa linie które nie zawieraja
tekstu
-c wyswietla tylko ilosc wyszukanych linii

-l wyswietla tylko nazwy plików w których
znaleziono tekst

-n wyswietla numery linii przed wyswietlanymi
liniami

Przyklady:

* polacz w jeden plik wszystkie pliki o nazwach zaczynajacych sie od x w
jeden plik o nazwie wynik

cat x* > wynik

* wyswietl informacje o biezaco zaloginowanych uzytkownikach którzy w
informacji o sobie maja slowo 'programista'

finger | grep programista



Skrypty

skrypty sa odpowiednikiem batchów z MsDOSa. Pozwalaja na spisanie ciagu
komend Unixa a nastepnie wykonanie ich.

W srodku skryptu mozemy uzywac nastepujacych konstrukcji:

* parametry - symbole $1, ... , $9 sa zastepowane wartosciami parametrów
wystepujacych w linii uruchamiajacej skrypt
* zmienne - sa to obiekty, tworzone przez programiste lub zdefiniowane w
systemie Unix. Kazda zmienna ma swoja nazwe - poprzez te nazwe
odwolujemy sie do zmiennej.

wartosc zmiennej nadajemy instrukcja

nazwa = wartosc

natomiast wartosc zmiennej pobieramy uzywajac konstrukcji
$nazwa_zmiennej

Jezeli wartoscia zmiennej alfa jest lancuch beta to komenda

echo Wartosc zmiennej alfa: $alfa

wyswietli na monitorze komunikat

Wartosc zmiennej alfa: beta

W systemie zdefiniowane sa pewne zmienne globalne - najczesciej uzywane z
nich to:

HOME nazwa kartoteki bazowej uzytkownika
ciag nazw kartotek, oddzielonych : - kartoteki
PATH te beda przeszukiwane przez Unixa w czasie
szukania programu do wykonania - analogicznie
jak zrobil to potem MsDOS

wewnatrz skryptu wpisujemy normalne komendy Unixa. Dodatkowo mamy mozliwosc
uzycia dodatkowych instrukcji. We wszystkich omawianych ponizej instrukcjach
uzywamy nastepujacych oznaczen:

warunek wykonanie dowolnego ciagu instrukcji
Unixa - uruchomienie procesów, komendy
wbudowane Unixa. warunek ma wartosc TRUE
o ile uruchomione programy wykonaly sie
bez bledów - dokladniej dopóki beda
zwracac wartosc 0

dodatkowo jako warunek moze wystapic
konstrukcja -f fname - ma wartosc TRUE
jezeli plik o nazwie fname istnieje
ciag
instrukcji dowolny ciag instrukcji Unixa

Najwazniejsze z dodatkowych instrukcji których mozemy uzyc w skryptach:

while warunek; wykonuj krotnie ciag
do instrukcji - tak dlugo jak
ciag instrukcji; dlugo óspelnionyó bedzie
done warunek
for zmienna in lista_wartosci to ciag nazw
lista_wartosci oddzielonych spacja. zmienna
do otrzymuje kolejno wartosci z
ciag instrukcji listy_wartosci - dla kazdej z
done nich wykonywany jest ciag
instrukcji.

Jako lista_wartosci mozne
wystapic równiez wzornik -
wartoscia zmiennej beda nazwy
plików zgodnych z wzornikiem
if [ warunek ]; jezeli spelniony jest warunek
then - wykonaj ciag instrukcji1,
ciag instrukcji1 jezeli nie jest - wykonaj ciag
else instrukcji2
ciag instrukcji2
fi



Uwaga! Przed wykonaniem pliku ze skryptem musimy mu nadac atrybut
'executable' - komenda

chmod u+x nazwa_pliku

Przyklad:

* sprawdz czy plik o podanej jako parametr skryptu nazwie istnieje.
Jezeli tak - sprawdz czy w tym pliku wystepuje linia z tekstem bedacym
drugim parametrem skryptu. Jezeli oba warunki sa spelnione - utwórz
plik o nazwie zgodnej z nazwa pliku bazowego oraz rozszerzeniem
'.tekst_szukany.RESULT'. W pliku tym powinny znajdowac sie wylacznie
linie zawierajace szukany tekst

plik: do_find

for fname in $1;
do
if [ -f $fname ];
then
if grep $2 $fname
then
grep $2 $fname > $fname.$2.RESULT
echo Zalozono plik $fname.$2.RESULT ...
else
echo W pliku $fname nie ma szukanych linii $2
fi
else
echo Plik $fname nie istnieje
fi ;
done

Cwiczenie:

* stwórz - za pomoca vi - plik zawierajacy skrypt do_find. Przecwicz
wykonanie takiego skryptu. Dodaj do skryptu instrukcje sledzace jego
wykonanie (instrukcje echo wyswietlajace wartosci zmiennych podczas
wykonywania skryptu)



Konfigurowanie srodowiska uzytkownika:

w kartotece bazowej kazdego uzytkownika znajduja sie pliki konfigurujace
jego sesje. Do najwazniejszych z tych plików naleza:

.cshrc plik zawierajacy instrukcje wykonywane w
czasie uruchamiania sesji uzytkownika.
Znajduja sie tu najczesciej instrukcje
definiujace aliasy (zob. dalej),
redefiniujace zmienna systemowa PATH oraz
uruchomienie programów , które uzytkownik
chce wykonywac kazdorazowo podczas
uruchamiania jego sesji
.login plik ten jest uruchamiany kazdorazowo
podczas otwarcia przez uzytkownika nowego
okienka w biezacej sesji. Znaczenie -
podobne jak .cshrc
.logout instrukcje wykonywane bezposrednio przed
zakonczeniem sesji uzytkownika. Zwykle
zawieraja komendy 'robiace porzadki' -
usuwanie plików tymczasowych, odtwarzanie
stanu systemu, itp. Moze nie wystapic.

Kolejnosc uruchamiania plików .cshrc i .login jest nastepujaca:

* uzytkownik wykonuje komende login zeby uruchomic swoja sesje w systemie
Unix. Wykonywane sa instrukcje z pliku .cshrc. Poniewaz jednoczesnie
otwiera sie okienko - po .cshrc wykonywany jest plik .login
* kazdorazowo gdy - pracujac w biezacej sesji - uzytkownik otwiera nowe
okienko - wykonywany jest plik .login
* kiedy uzytkownik wykona komende logout (konczaca sesje) wykonywany jest
plik .logout

Dodatkowymi plikami konfiguracyjnymi, które moga byc ustawiane przez
uzytkownika sa:

.forward jezeli taki plik istnieje w kartotece
bazowej uzytkownika wszystkie przychodzace
do niego listy (email) sa automatycznie
odsylane na adres (lub adresy) zapisane
wewnatrz pliku .finger
.plan jezeli te pliki istnieja w kartotece
bazowej uzytkownika ich zawartosc jest
.project wyswietlana przez komende finger -
przekazujaca informacje o uzytkowniku.
Pozwalaja zdefiniowac informacje które
uzytkownik chce przekazac o sobie



Aliasy

konstrukcje postaci

alias nazwa 'wartosc'

wystepujace w plikach .cshrc i .login definiuja aliasy. Od momentu
zdefiniowania aliasu kazde wpisanie przez uzytkownika tekstu nazwa bedzie
traktowane tak jakby uzytkownik wpisal tekst wartosc. Pozwala to definiowac
'nowe' komendy w Unixie. wartosc ujmujemy w apostrofy jezeli wewnatrz tekstu
tworzacego wartosc wystepuja spacje.

Komende alias mozemy równiez wprowadzic z linii komend Unixa.

Definicje

alias md mkdir
alias dir 'ls -aFsl'
alias del 'rm -i'

pozwalaja uzywac pod Unixem 'komend MsDOSa'.

Komenda

alias

pozwala wylistowac biezaco zdefiniowane aliasy a komenda

unalias nazwa

usuwa definicje aliasu nazwa.

Cwiczenie:

* wyswietl zawartosc swoich plików .cshrc i .login. Jezeli nie istnieja
aliasy 'komend MsDOSa' - dopisz je do .cshrc. Zaloginuj sie ponownie i
spróbuj ich uzyc.
* utwórz pliki .plan i .project w swojej kartotece bazowej. Zobacz jak
dziala komenda finger twoja_nazwa_uzytkownika kiedy takie pliki
istnieja.



Adresy sieciowe komputerów. Komunikacja pomiedzy komputerami.

kazdy komputer dolaczony do sieci komputerowej posiada dwa adresy sieciowe:
symboliczny i tzw. IP adres. Oba adresy sa tworzone przez administratora
systemu. Adres symboliczny wlasnego komputera mozemy uzyskac komenda

hostname

natomiast adres IP mozemy znalezc w pliku /etc/hosts - plik ten zawiera pary
'adres symboliczny - IP adres' dla komputerów, które sa 'znane' naszemu
komputerowi. IP adres ma zawsze postac czterech liczb z przedzialu 1 - 253,
oddzielonych od siebie kropkami.

Do komunikacji pomiedzy komputerami w sieci uzywane sa najczesciej dwie
komendy:

telnet Uruchom sesje uzytkownika na zdalnym komputerze.

komenda ta laczy sie z komputerem o podanym adresie.
Jezeli taki komputer nie istnieje (nie jest znany jego
adres symboliczny lub nie istnieje mozliwosc zamiany
adresu symbolicznego na IP) komenda konczy sie z
komunikatem o bledzie. Jezeli uda sie polaczyc ze zdalnym
komputerem - uzytkownik zostanie poproszony o
zaloginowanie sie - bedzie musial podac poprawna nazwe i
haslo uzytkownika zdefiniowanego na komputerze, do którego
sie dolaczyl. Jezeli to zrobi - od tego momentu, siedzac
przy terminale wlasnego komputera, wykonuje obliczenia na
komputerze zdalnym.
ftp Uruchom program do transmisji plików pomiedzy komputerami.
adres_IP_lub_symboliczny
Najpierw - ftp próbuje polaczyc sie ze zdalnym komputerem
- analogicznie jak telnet. Takie same moga byc równiez
powody blednego zakonczenia ftp. Jezeli uda sie polaczyc
ze zdalnym komputerem - uzytkownik musi sie poprawnie
zaloginowac. Wiele z komputerów udostepniajacych pamietane
na nich informacje pozwala zaloginowac sie jako uzytkownik
anonymous z haslem
'nazwa_uzytkownika@adres_komputera_z_którego_sie_lacze'.Po
polaczeniu sie mozemy transmitowac pliki pomiedzy naszym
komputerem a komputerem do którego sie dolaczylismy
uzywajac wewnetrznych komend ftp:

ascii przelancza tryb transmisji. W
binary trybie ascii zawartosci plików sa
przesylane 7bitowo - tryb ten
sluzy najczesciej do przesylania
plików tekstowych. W trybie
binary transmisja jest 8 bitowa
prompt przelacza (jezeli nie byl
wlaczony - to wlacza, jezeli byl
wlaczony - wlacza) tryb pytania o
kazdy plik podczas transmisji
wielu plików
status wyswietla informacje o biezaco
ustawionych parametrach
transmisji (ascii / binary,
prompt)
lcd kartoteka zmienia biezaca kartoteke na
naszym komputerze
cd kartoteka zmienia biezaca kartoteke na
komputerze do którego sie
dolaczylismy
get nazwa_pliku [ skopiuj jeden plik o nazwie
nazwa_lokalna ] nazwa_pliku z komputera zdalnego
na nasz komputer. Jezeli wystapi
parametr nazwa_lokalna plik
zostanie zapisany pod ta nazwa.
Jezeli nie wystapi - pod nazwa
jaka mial na komputerze zdalnym
put nazwa_pliku [ operacja odwrotna do get -
nazwa_zdalna ] skopiuj plik z naszego komputera
na komputer zdalny ewentualnie
zmieniajac mu nazwe na
nazwe_zdalna
mget wzornik skopiuj wszystkie pliki których
nazwy sa zgodne z wzornikiem ze
zdalnego komputera na nasz
komputer. Jezeli prompt jest
wlaczony - nazwa kazdego pliku
który ma byc przesylany bedzie
wyswietlana a uzytkownik bedzie
pytany czy ten plik ma byc
przetransmitowany
mput wzornik komenda odwrotne do mget -
kopiuje wszystkie pliki o nazwach
zgodnych z wzornikiem z naszego
komputera na komputer zdalny
help wyswietl opis komend ftp
(omówilismy tylko najwazniejsze z
nich, jest ich wiecej)
quit zakoncz prace z ftp



DNS - Domain Name Service

jak mozemy zauwazyc w pliku /etc/hosts nie ma adresów wszystkich komputerów
jakie istnieja na swiecie - jezeli tylko znamy symboliczny adres komputera
to mozemy sie z nim polaczyc nawet wtedy kiedy informacji o nim nie ma w
/etc/hosts. Dzieje sie tak dlatego ze w sieci komputerowej - oprócz zwyklych
komputerów - istnieja równiez komputery zajmujace sie zamiana adresów
symbolicznych na adresy IP - tzw. name servery

Cwiczenie:

* wyswietl zawartosc pliku /etc/hosts na wlasnym komputerze
* polacz sie przez ftp z komputerem o adresie ftp.cyf-kr.edu.pl.
Zaloginuj sie jako uzytkownik anonymous z odpowiednim haslem. Komputer
ten to krakowska kopia wezla simtel i cica - zawiera bardzo duzo
oprogramowania typu shareware i public domain. Skopiuj dowolny, wybrany
przez siebie plik z tego komputera na wlasny komputer. Pamietaj o
ustawieniu trybu transmisji (ascci/binary)



Uruchamianie systemu X Windows

konfiguracja komputera w ten sposób, zeby na terminalach graficznych
uruchamial sie automatycznie system X Windows jest zwykle sprawa
administratora systemu - informacje o 'recznym' konfigurowaniu sysetmu X
Windows wykraczaja poza zakres tego kursu - dlatego nie beda tutaj omawiane.

Gdyby jednak na naszym graficznym terminalu nie uruchomil sie automatycznie
system X Windows - mozemy wykonac komende openwin - ta komenda inicjuje
prace systemu X Windows.

Zasada dzialania systemu X Windows:

W systemie X Windows wyrózniamy dwa typy komputerów:

* klient - to komputer na którym wykonywane jest uruchomione przez nas
oprogramowanie. Dokladniej - komputer którego procesor i pamiec sa
uzyte do uruchomienia programu który wykonujemy
* serwer - to komputer którego ekran wyswietla wyniki dzialania
uruchomionego programu a klawiatura jest uzywana do wprowadzania danych

Zwykle serwerem jest komputer przy którym siedzimy a klientem komputer z
którym polaczylismy sie zeby uruchomic znajdujace sie tam oprogramowanie
(oczywiscie moze sie tak zdazyc, ze serwer i klient to ten sam komputer)

Tym gdzie bedzie wyswietlany wynik programu pracujacego pod kontrola X
Windows steruja dwa elementy:

* zmienna systemowa DISPLAY - przed uruchomieniem programu musimy ustawic
te zmienna tak, by wskazywala komputer, na którym ma byc wyswietlany
wynik dzialania programu.

jezeli chcemy wyswietlac wyniki na ekranie komputera o nazwie alfa (nazwe
naszego komputera otrzymamy uzywajac komendy hostname) to zmienna DISPLAY
powinna byc ustawiona nastepujaco:

set DISPLAY=alfa:0.0

Takie ustawienie zmiennej DISPLAY mozemy potraktowac jako stwierdzenia 'ja
program chce wyswietlac na komputerze alfa'. Aby to bylo mozliwe konieczna
jest jeszcze druga operacja - komputer alfa musi zgodzic sie na to, zeby
program mógl cos wyswietlac na ekranie alfy.

Zalózmy, ze program który chce wyswietlac wyniki na komputerze alfa dziala
na komputerze beta. Przed uruchomieniem programu uzytkownik musi - w okienku
uchomionym na komputerze alfa - wykonac komende

xhost +betaI

Te komende mozemy potraktowac jako stwierdzenie 'ja komputer alfa zgadzam
sie zeby programy z komputera beta wyswietlaly na moim ekranie'

Dopiero wykonanie obu tych czynnosci pozwoli na poprawne dzialanie programu
graficznego



Konfiguracja wlasnego ekranu w systemie X Windows

jezeli chcemy spersonalizowac sposób w jaki bedzie zglaszac sie system X
Windows na naszym komputerze postepujemy nastepujaco:

SUN:

* uruchamiamy te aplikacje które powinny uruchamiac sie kazdorazowo kiedy
bedziemy uruchamiac X Windows. Ustawiamy okienka w tych miejscach w
których powinny sie pojawic, minimalizujemy do ikon aplikacje które
powinny uruchomic sie jako zminimalizowane - porzadkujemy obiekty na
ekranie tak, jak chcemy zeby sie ukazywaly po uruchomieniu X Windows
* ustawiamy kursor myszki na pustym fragmencie ekranu, naciskamy prawy
przycisk myszki. Z menu które sie pojawilo wybieramy Desktop a
nastepnie - z pod menu - Save Workspace. Spowoduje to zapamietanie
stanu naszego ekranu - poczawszy od nastepnego uruchomienia X Windows
beda pojawiac sie w sposób w jaki je ustawilismy.

SGI:

* zobacz opis sposobu zapamietywania ustawienia Desktopu
dla origina 200

Cwiczenia:

* znajdz nazwy programów graficznych na Twoim komputerze - wyswietl z
kartoteki $OPENWINHOME/bin nazwy wszystkich programów zaczynajace sie
od 'x'. Spróbuj uruchomic kilka z nich
* spróbuj uruchomic program xclock (zegar) tak, by wyswietlal obraz na
ekranie kolegi
* poustawiaj obiekty na ekranie swojego komputera i zapamietaj ich
ustawienie