UNIX omowienie 2


Rozdział 2
Praca z systemem
Rozdział ten przedstawia w sposób systematyczny podstawowe wiadomości dotyczące koncepcji
i pojęć systemu UNIX. Opisuje jak rozpocząć pracę z systemem, oraz podstawowe, najczęściej
używane polecenia systemu.
2.1 Sesja przy terminalu
Przed rozpoczęciem pierwszej sesji, należy udać się do lokalnego administratora UNIXa, aby
założył konto dla nowego użytkownika w systemie.
2.1.1 Rozpoczęcie sesji
Sesja jest określeniem pracy z systemem, od chwili zgłoszenia się do niego (log in), do momentu
jej zakończenia (log out). Po uruchomieniu terminala, na jego ekranie pojawia się komunikat,
który może wyglądać następująco:
dendrit login:
Komunikat ten nazywa się monitem systemowym (system login prompt). System oczekuje wów-
czas na wpisanie nazwy użytkownika. Tradycja nakazuje stosować małe litery, bez względu na
rangę i powagę przezwanego w ten sposób użytkownika. Następnie pojawia się pytanie o hasło
(password), wprowadzane hasło nie jest wyświetlane na ekranie. Po zaakceptowaniu  danych
osobowych system jest gotowy do pracy, co sygnalizuje znak zachęty (monit, prompt), ozna-
czony zwykle przez $ lub %, znak zachęty administratora systemu to tradycyjnie #.
Bardzo często na początku sesji są wyświetlane komunikaty pochodzące od administracji sys-
temu. Należy mieć na względzie, że postać pojawiających się napisów, komunikatów, znaków
zachęty, itp. nie jest ustalona raz na zawsze i może być modyfikowana przez administratorów,
bądz w pewnym zakresie przez samego użytkownika.
28 pazdziernika 2001 roku wersja 0.2 12
2.1.2 Zakończenie pracy
W większości współczesnych instalacji sesję UNIXową kończy wykonanie komendy logout, lub
exit. Tradycyjnie do zakończenia sesji można też użyć kombinacji klawiszy Ctrl-D, choć niejed-
nokrotnie instalacja zabrania tego, aby uniknąć przypadkowego wyjścia z systemu. Znak Ctrl-D
jest w ogólności znakiem końca pliku, a więc łatwo o pomyłkę.
Tabela 2.1. Problemy pojawiające się przy kończeniu sesji
komunikat systemu rozwiązanie
There are stopped jobs Napisz: logout dwa lub trzy razy
Not login shell Napisz: exit jeśli wcześniej wydałeś polecenie logout
2.1.3 Zmiana hasła
Założenia lub zmiany hasła dokonuje się za pomocą polecenia passwd. W interesie użytkownika
jest częsta zmiana haseł. Jako haseł należy używać słów nie istniejących, zawierających cyfry i
inne dostępne znaki klawiatury, natomiast nie należy używać imion swych ulubieńców lub ich
zdrobnień. Przekleństwa lub wulgaryzmy również nie sprawiają hackerom kłopotu.
Przykład 2.1.1
Logowanie, bez powodzenia.

dendrit login:
Password:
Login incorrect.
dendrit login:
Przykład 2.1.2
Poprawnie wprowadzone  dane osobowe .

dendrit login:
Password:
Last login: Fri Oct 31 23:59:06 from console
Linux Red Hat 4.2
$
Po przyłączeniu się do systemu, może pojawić się komunikat informujący o nadejściu poczty:
28 pazdziernika 2001 roku wersja 0.2 13
You have new mail.
Przykład 2.1.3
Zmiana hasła (po logowaniu)

$
Changing passwword for medici on dendrit
Old password:
New password:
Retype new password:
$
2.1.4 Klawiatura
Omawiając klawiaturę terminala należy pamiętać, że unix rozróżnia małe i duże litery, gene-
ralnie preferowane są litery małe. Poniżej przedstawione zostało kilka użytecznych kombinacji
klawiszy sterujących (tabela ??).
Tabela 2.2. Użyteczne kombinacje klawiszy sterujących
kombinacja klawiszy widok na ekranie funkcja
Ctrl-U niewidoczne czyści wprowadzaną linię (kill)
Ctrl-W niewidoczne usuwa ostatnie słowo w lini komend
Ctrl-C ^C przerywa wiele programów
i skryprów shella (interrupt)
Ctrl-Z ^Z wstrzymuje wiele programów
i skryprów shella (suspend)
Ctrl-S niewidoczne zatrzymuje wyjście uruchomionego programu
Ctrl-Q niewidoczne przywraca wysyłanie danych na wyjście,
zatrzymane przez Ctrl-S
Ctrl-O ^O
Ctrl-D ^D znak końca pliku,
używany np. do wylogowywania
Ctrl-\ ^\ Zakończenie programu
i zapisanie obrazu programu w pliku core
Należy pamiętać, że klawiszy sterujących używa się poprzez wciśnięcie klawisza Ctrl i przy-
28 pazdziernika 2001 roku wersja 0.2 14
trzymując go wciśnięcia wybranego klawisza. Odmiennie jest z klawiszami używanymi wraz
z klawiszem Esc. Klawisze z tej grupy używa się wciskając i zwalniając klawisz Esc, a następnie
wybrany klawisz.
2.2 Pliki i katalogi  podstawowe operacje
Rozdział ten wprowadza podstawowe koncepcje dotyczące plików. Podaje czym jest pełna i skró-
cona nazwa pliku, co rozumiane jest przez katalog domowy. Prezentowane są również komendy
pozwalające manipulować plikami.
2.2.1 Czym jest plik?
Plik jest podstawowym elementem w systemie unix. Prawie wszystko traktowane jest jako plik,
włączając:

dokumenty  pliki zawierające tekst, takie jak listy, pliki ze zródłami programów lub
wszystko inne co użytkownik może napisać;

komendy  wiele komend jest plikami wykonywalnymi, tzn. plikami które można urucha-
miać, np. pisząc komendę lynx można przeglądać tekstowo WWW, jest to plik wykony-
walny;

urządzenia  system operacyjny traktuje terminal, drukarkę, czy urządzenie dyskowe jako
plik;

katalogi  katalogi są plikami zawierającymi inne pliki, w dalszej części niniejszej publikacji
zostanie to dokładniej wyjaśnione.
2.2.2 System plików
System plików w UNIXie ma hierarchiczną strukturę drzewiastą. Korzeń tego drzewa (root)
oznaczony jest symbolem /. Węzłami drzewa są katalogi, mogące zawierać dalsze pliki i katalogi.
Pełna nazwa pliku (absolute pathname) jest drogą prowadzącą do tego pliku od korzenia, czyli
tzw. ścieżką dostępu. I tak dla pliku who ścieżką dostępu jest /bin/who. Jeżeli używane nazwy
nie rozpoczynają się od symbolu /, są nazwami relatywnymi (relative pathname), używanymi
w bieżącym katalogu.
2.2.3 Metaznaki - maskowanie nazw
Mówiąc o nazwach plików, warto wspomnieć o niektórych znakach specjalnych, zwanych meta-
znakami. Nazwy zapisane z użyciem metaznaków określa się mianem nazw uogólniających lub
28 pazdziernika 2001 roku wersja 0.2 15
wzorców nazw. W UNIXie dostępne są następujące metaznaki:
* (gwiazdka)  oznacza dowolny ciąg znaków, być może pusty;
? (znak zapytania)  dowolny pojedynczy znak;
[... ] (grupa znaków w nawiasach kwadratowych)  oznacza dowolny pojedynczy znak spośród
wymienionych w nawiasie.
Przykład 2.2.4
Użycie metaznaków:
cp a*b /tmp
cp ??x* /tmp
cp [aA]la /tmp
cp ??? /tmp
cp *[a-z0-9]? /tmp
Wszystkie te operacje kopiują pliki z katalogu bieżącego do katalogu /tmp. W pierwszym przy-
kładzie kopiowane są pliki zaczynające się od a i kończące literą b. Drugie polecenie kopiuje
pliki, których trzecim znakiem jest x, a nazwa pliku musi być co najmniej trzy-znakowa. W trze-
cim przykładzie kopiowane są pliki ala i Ala, o ile takie istnieją. Następny przykład kopiuje
wszystkie trzy-znakowe pliki. Ostatni przykład ilustruje możliwość wykorzystania [] w nazwach
plików, nie tylko do prostego wyliczania znaków, lecz także do określania zakresów liter rozdzie-
lonych kreską -. Zakresy należy rozumieć jako spójne grupy wyznaczone przez porządek znaków
w kodzie danej maszyny (zazwyczaj jest to kod ASCII ).
Metaznaki mogą być stosowane w każdym poleceniu UNIXa, gdzie podaje się nazwy plików.
Można uniknąć ich specjalnego znaczenia stosując znak \ (backslash) działający dla pojedyn-
czego znaku lub znaki apostrofu  bądz cudzysłowu " dla całego ciągu. Rozsądnie jest jednak
unikać takich sytuacji.
Przykład 2.2.5
Użycie gwiazdek w nazwach plików:
mv gwiazdkiwnazwie gwn
mv  gwiazdki*w*nazwie gwn
mv "gwiazdki*w*nazwie" gwn
28 pazdziernika 2001 roku wersja 0.2 16
Należy być ostrożnym w stosowaniu metaznaków, np. sama gwiazdka oznacza właściwie dowolną
nazwę, skutki wydania polecenia rm * mogą być więc tragiczne. Jedynym ograniczeniem nało-
żonym na * jest to, że  nie pasuje ona do kropki, jeśli ta jest pierwszym znakiem nazwy (w ten
sposób oznaczane są pliki ukryte).
2.2.4 Katalogi
Każdy katalog zawiera dwie stałe pozycje o nazwach:
. (kropka)  oznaczenie . odnosi się do niego samego, czyli jest synonimem pojęcia  katalog
bieżący ;
.. (dwie kropki)  oznacza katalog nadrzędny wobec bieżącego.
Często stosuje się polecenia z użyciem tych nazw, np.:
cd ..
cp /home/jarek/teksty/* .
Pliki znajdują się w katalogach, które tworzą prawie drzewiastą strukturę systemu plików. Okre-
ślenie  prawie drzewiasta jest zupełnie uzasadnione, albowiem w UNIXie mogą istnieć dowią-
zania (linki) pliku do różnych katalogów. Niemniej mechanizm ten jest wykorzystywany dość
oszczędnie i dlatego pozostanę przy określeniach typu  drzewo katalogów i plików . Dowiązania
tworzy się poleceniem ln.
UNIX jest systemem przeznaczonym dla wielu użytkowników, stąd bierze się konieczność za-
dbania o to, by każdy miał w systemie plików swoje miejsce. Każdy użytkownik dostaje katalog
domowy (home directory), jest to katalog w którym jego właściciel może wykonywać wszelkie
operacje plikowe. Do szybkiego odwoływania się do katalogu domowego wykorzystuje się znak ~
(tylda)
Przykład 2.2.6
Poniższe polecenie przenosi pliki z katalogu /tmp/wyniki do podkatalogu wyniki w katalogu
domowym.
mv /tmp/wyniki/* ~/wyniki
2.2.5 Manipulowanie plikami i katalogami
W tabeli ?? (str. ??) przedstawione zostały podstawowe polecenia służące do manipulowania
plikami i katalogami.
28 pazdziernika 2001 roku wersja 0.2 17
Tabela 2.3. Podstawowe polecenia służące do manipulowania plikami
polecenie akcja
cd zmiana katalogu
pwd podaje bieżącą ścieżkę
mkdir tworzy katalog
rmdir usuwa katalog
ls podaje zawartość katalogu
file podaje typ pliku
more wyświetla zawartość pliku
cat wyświetla zawartość pliku, pozwala łączyć pliki
cp kopiuje pliki
rcp kopiuje pliki ze i do zdalnego hosta
mv przenosi pliki
rm usuwa pliki
touch tworzy plik lub uaktualnia daty dostępu i ostatniej modyfikacji pliku
chmod zmienia prawa dostępu
chown zmienia właściciela pliku
chgrp zmienia identyfikator grupy, która może mieć dostęp do pliku
umask ustawia domniemane prawa dostępu do plików
head wyświetla początkowe wiersze pliku
tail wyświetla końcowe wiersze pliku
find wyszukuje pliki
grep wyszukuje w tekście podanego wzorca
tar archiwizuje pliki
compress pakuje lub rozpakowuje pliki
diff porównuje dwa pliki
wc podaje ilość znaków, słów i linii w podanym tekście
mount dołącza (montuje) nowy system plików
umount odłącza (odmontowuje) system plików
df podaje ilość miejsca w systemie plików
du określa ile miejsca zajmują dane
dd służy do konwersji i archiwizacji plików
ln tworzy nowe dowiązanie (link) do istniejącego pliku
28 pazdziernika 2001 roku wersja 0.2 18
2.2.6 Prawa dostępu
Prawa dostępu determinują możliwości wykorzystania pliku lub katalogu przez użytkownika
systemu. Następujące prawa skojarzone są z plikami i katalogami:

Prawo czytania (r)
Plik  można podglądać i kopiować.
Katalog  można oglądać jego zawartość.

Prawo pisania (w)
Plik  można modyfikować, usuwać i zmieniać jego nazwę.
Katalog  można dodawać i usuwać pliki.

Prawo wykonywania (x)
Plik  można uruchamiać (dotyczy to tylko programów wykonywalnych i skryptów)1.
Katalog  można przeszukiwać, oglądać jego zawartość, tworzyć w nim pliki i je usuwać.
Przykład 2.2.7
Użyjmy polecenia ls -l, aby podejrzeć informacje dotyczące plików i katalogów (rys. ??):
Rys. 2.1. Przykładowa informacja uzyskana w wyniku wykonania polecenia ls -l
Rysunek ?? przedstawia podział praw dostępu na trzy grupy:

prawa właściciela pliku  oznaczające jakimi prawami do pliku/katalogu dysponuje jego
właściciel;

prawa grupy  są to prawa jakimi dysponują inni użytkownicy, należący do grupy, do któ-
rej należy dany plik (zazwyczaj są to użytkownicy pracujący wspólnie nad jakimś projek-
tem, tworzący zespół, etc);

prawa pozostałych użytkowników systemu  oznaczają prawa jakimi dysponują pozostali
użytkownicy danego systemu komputerowego.
28 pazdziernika 2001 roku wersja 0.2 19
Rys. 2.2. Znaczenie praw dostępu
Przykład 2.2.8
Tabela ?? przedstawia przykładowe prawa dostępu i ich znaczenie.
Tabela 2.4. Przykładowe prawa dostępu
prawa znaczenie
-rw-r--r-- właściciel może pisać i czytać plik, pozostali użytkownicy mogą tylko czytać
-rwx------ tylko właściciel może czytać, pisać i wykonywać plik
dr-xr-x--- katalog może być czytany i przeszukiwany przez właściciela i jego grupę
-rwxr-xr-x plik może być czytany, zapisywany i wykonywany przez właściciela, czytany
i wykonywany przez innych
drwxr-x--x katalog może być czytany/zapisywany/przeszukiwany przez właściciela, czy-
tany/przeszukiwany przez grupę, tylko przeszukiwany przez pozostałych
Polecenie chmod
Do zmiany praw dostępu służy polecenie chmod (change mode). Składnia polecenia jest nastę-
pująca:
chmod who op permission filename
gdzie:
who  oznacza użytkowników, którym prawa mają zostać nadane/odebrane: (a) wszyst-
kim, (u) właścicielowi, (g) grupie, (o) pozostałym użytkownikom;
op  operacja jaką użytkownik chce wykonać, tzn.: (=) nadanie, (+) dodanie lub (-)
odebranie praw dostępu;
1
Prawo wykonywania można nadać dowolnemu plikowi, przy czym tylko programy wykonywalne lub skrypty
zostaną uruchomione, jeśli program wykonywalny nie będzie posiadał tego prawa, wówczas nie można go będzie
uruchomić.
28 pazdziernika 2001 roku wersja 0.2 20
permission  prawa: (r) czytania, (w) pisania i (x) wykonywania pliku lub przeszukiwania
katalogu;
filename  nazwa pliku, którego polecenie dotyczy.
Przykład 2.2.9
Przykłady użycia polecenia chmod:
chmod a+rw plik
chmod o-r plik
chmod u=rwx plik
chmod go-rw plik
Można używać polecenia chmod z trzy-cyfrową wartością praw dostępu:
chmod ugo filename
Każda z cyfr odpowiada prawom dostępu dla poszczególnej grupy użytkowników: (u) właściciel,
(g) grupa, (o) pozostali użytkownicy i może przyjmować wartości przedstawione w tabeli ??.
Tabela 2.5. Ósemkowe wartości odpowiadające poszczególnym prawom dostępu w poleceniu chmod
wartość prawa dostępu
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx
Przykład 2.2.10
Przykłady użycia polecenia chmod:

chmod 777 plik rwxrwxrwx

chmod 640 plik rw-r-----
28 pazdziernika 2001 roku wersja 0.2 21
Polecenie umask
Podczas tworzenia nowego pliku lub katalogu system operacyjny nada mu automatycznie do-
myślne prawa dostępu. Zmianę domyślnych ustawień praw dostępu dla bieżącej sesji dokonuje
się poleceniem:
umask ugo
ugo  oznacza trzy-cyfrową wartość praw domyślnych. Każda z cyfr odpowiada prawom dostępu
dla poszczególnej grupy użytkowników: (u) właściciel, (g) grupa, (o) pozostali użytkownicy i
może przyjmować wartości przedstawione w tabeli ??.
Tabela 2.6. Wartości poszczególnych praw domyślnych dla polecenia umask
pliki katalogi
wartość prawa dostępu wartość prawa dostępu
0 rw- 0 rwx
1 rw- 1 rw-
2 r-- 2 r-x
3 r-- 3 r--
4 -w- 4 -wx
5 -w- 5 -w-
6 --- 6 --x
7 --- 7 ---
Przykład 2.2.11
Przykład użycia polecenia umask.
umask 2
lub
umask 002
oznacza domyślne prawa dostępu dla plików -rw-rw-r--
oraz domyślne prawa dostępu dla katalogów drwxrwxr-x.
2.3 Procesy, strumienie i potoki
UNIX jest systemem wielodostępnym o wielu zasobach. W każdym momencie z jednego kom-
putera UNIXowego (tzw. hosta) może korzystać wielu użytkowników, a każdy użytkownik może
uruchomić więcej niż jeden proces.
28 pazdziernika 2001 roku wersja 0.2 22
Procesem nazywamy załadowany do pamięci, działający w danej chwili program, wraz z jego
danymi i środowiskiem2.
Pojęcie współbieżnego wykonywania wielu procesów jest umowne i oznacza dla maszyn jed-
noprocesorowych podział czasu pomiędzy wykonywane procesy. Niemniej, z punktu widzenia
użytkownika nie ma specjalnej różnicy między prawdziwą równoległością a tak rozumianą współ-
bieżnością.
Każdy proces w systemie ma swój numer, unikatowy w skali danego komputera. Numer ten,
zwany identyfikatorem procesu, oznaczany jest skrótem PID (process identyfication number, lub
process ID). Każdy proces ma swojego właściciela i zazwyczaj jest to użytkownik, który dany
proces uruchomił. Polecenie ps (process status) pozwala śledzić wykonywane procesy w systemie.
2.3.1 Przeadresowywanie wejścia i wyjścia
Proces w momencie uruchomienia ma otwarte trzy pliki, są to:
stdin  standardowy plik wejściowy, zazwyczaj powiązany z klawiaturą;
stdout  standardowy plik wyjściowy, zwykle ekran;
stderr  standardowy plik diagnostyczny, również połączony z ekranem.
Użytkownicy mogą przeadresowywać (zmieniać) te pliki, np.:
sort < who > pracujacy.srt
Przeadresowywanie wejścia (<)
polecenie < plik
Uruchamia polecenie z wejściem ze wskazanego pliku (plik) zamiast z klawiatury.
Przeadresowywanie wyjścia (> lub >>)
polecenie > plik
Uruchamia polecenie z wyjściem do wskazanego pliku (plik) zamiast na ekran.
polcenie >> plik
Uruchamia polecenie z wyjściem do wskazanego pliku (plik) zamiast na ekran, wyniki polecenia
dopisywane będą do już istniejących w pliku.
2
Definicja ta zostanie uściślona w dalszej części publikacji.
28 pazdziernika 2001 roku wersja 0.2 23
Przeadresowywanie wyjścia diagnostycznego (>& lub 2>)
polecenie >& plik
lub
polecenie 2> plik
Uruchamia polecenie ze skierowaniem wyjścia diagnostycznego do wskazanego pliku (plik).
Przykład 2.3.12
Rozdzielenie standardowego wyjścia (plik outfile i standardowego wyjścia diagnostycznego (plik
errorfile):
(polcenie > outfile) >& errorfile
Przykład 2.3.13
Wykonanie polecenia bez zachowania wyników i danych o błędach:
polcenie >& /dev/null
Należy uważać, używając przekierowania >, gdyż jeśli podany plik istnieje, system najpierw go
usunie, a następnie uruchomi polecenie. Można zabezpieczyć się przed tym za pomocą zmien-
nej środowiska noclobber. Wówczas aby zapisać dane wyjściowe w miejscu istniejących należy
wydać polecenie:
polecenie >! plik
Przykład 2.3.14
Przykłady używania przekierowań:
ls > lista.plikow
pwd >> lista.plikow
program >& /dev/null
prog2 < dane.we
prog3 < dane.we > dane.wy
wc < dane > wyniki
wc > wyniki < dane
< dane wc > wyniki
< dane > wyniki wc
28 pazdziernika 2001 roku wersja 0.2 24
ls [A-Z]* > spis.duzych
ps -f > stan.proc
cat plik1 plik2 plik3 > plik123
cat plik[123] > plik123
cat plik2 >> plik1
cat plik1 plik2 > plik1
2.3.2 Potoki
W UNIXie istnieje mechanizm pozwalający na przekazywanie danych wyjściowych jednego pro-
cesu na wejście innego. Można oczywiście użyć do tego mechanizmu przeadresowywania:
proces1 > dane
proces2 < dane
Ale ten sposób tworzy zupełnie niepotrzebny plik z przekazywanymi danymi.
Efektywnym rozwiązaniem tego problemu jest mechanizm potoków.
Operator |
Potok jest połączeniem typu producent-konsument. System zapewnia synchronizację procesów
w potoku.
Potok zapisuje się następująco:
polecenie1 | polecenie2
np.:
who|sort|lpr
Pewien rodzaj programów jest bardzo często wykorzystywany w potokach, są to filtry, programy
czytające dane z wejścia, obrabiające je i wysyłające na wyjście. Najpopularniejsze z nich to
more i grep.
Operator |&
Operator |& umożliwia połączenie stdout i stderr jednego procesu do stdin innego, np.:
make |& lpr
28 pazdziernika 2001 roku wersja 0.2 25
Polecenie tee
Przydatną poleceniem służącym do rozwidlania potoków jest tee. Polecenie to czyta dane ze
standardowego wejścia i przepisuje je na standardowe wyjście, jednocześnie zapisując je do wska-
zanego pliku. Polecenie to zazwyczaj używane jest do podglądania tego, co dzieje się w potoku.
polecenie1 | tee plik | polecenie2
Dane pochodzące z polecenia1, zostaną przekazane do polecenia2 oraz zapisane zostaną w pliku
plik.
Przykład 2.3.15
Wyjście z programu make wysyłane jest na ekran i na drukarkę:
make |& tee /dev/tty | lpr
Tabela 2.7. Symbole przekierowania strumieni i symbole potoków
symbol znaczenie
< pobieranie strumienia wejściowego ze wskazanego pliku
> przekierowanie strumienia wyjściowego do wskazanego pliku
>! jw., nadpisanie pliku, jeśli istnieje
>& przekierowanie strumienia diagnostycznego do wskazanego pliku
>> przekierowanie strumienia wyjściowego i dopisywanie danych wyjściowych
na końcu wskazanego pliku
>>! jw., nadpisanie pliku, jeśli istnieje
>>& dołączanie danych z wyjścia diagnostycznego do wskazanego pliku
| potok łączący wyjście jednego procesu z wejściem innego
|& jw., dołączając wyjście diagnostyczne do potoku
2.3.3 Sterowanie procesami (job control)
Unix jest środowiskiem wielozadaniowym. Użytkownicy mogą korzystać z tej cechy wykonując w
systemie równocześnie wiele zadań  procesów. Dostępne są mechanizmy pozwalające sterować
procesami, tzn. wykonywać dany proces jako pierwszoplanowy lub jako proces wykonywany w
tle. System dostarcza wielu poleceń, które umożliwiają kontrolę nad uruchomionymi procesami:
ps, bg, fg, jobs, kill, stop, suspend, wait.
28 pazdziernika 2001 roku wersja 0.2 26
Wykonywanie poleceń w tle  operator &
Normalnie po wydaniu polecenia powłoka (shell) rozpoczyna wykonywanie następnego polece-
nia dopiero po zakończeniu procesu rozpoczętego w wyniku wykonywania bieżącego polecenie.
Istnieje możliwość rozpoczęcia procesu jako procesu drugoplanowego (tzw. w tle), jeżeli polecenie
zakończy się znakiem &:
polecenie argumenty &
Powłoka wyprowadzi przydzielony takiemu procesowi numer PID na standardowe wyjście i zna-
kiem zachęty zgłosi gotowość do przyjmowania dalszych poleceń.
Przykład 2.3.16
Rozpoczęcie sortowania pliku plik jako procesu drugoplanowego. Po uruchomieniu PID procesu
wynosi 171, numer zadania, tzn. numer procesu wykonywanego w tle w bieżącej sesji wynosi 1.


$

[1] 171
$
Polecenie ps
Do oglądania jakie procesy są aktualnie uruchomione w systemie służy polecenie ps. Pokazuje
ono PID procesu, terminal z jakiego został dany proces uruchomiony, aktualny status procesu
(lub stan), oraz czas działania.
Polecenie kill
Polecenie kill służy do zakończenia procesu, nad którym użytkownik stracił kontrolę, uruchomił
z innego terminala lub z innego okna. Aby  zabić proces należy znać jego PID. Użycie polecenia
kill:
kill numer_PID
Jeśli powyższe wywołanie polecenia kill nie dało oczekiwanego rezultatu, powinno pomóc wy-
wołanie:
kill -9 numer_PID
Przerwanie działania procesów wykonywanych w tle można dokonać poprzez wywołanie, w któ-
rym należy podać numer zadania (numer procesu wykonywanego w tle dla danej sesji):
kill %numer_zadania
28 pazdziernika 2001 roku wersja 0.2 27
Przełączanie zadań
Użytkownik może zawiesić wykonywanie dowolnego procesu. Wysyłając sygnał przerwania ^Z.
Proces zawieszony może zostać wznowiony zarówno jako proces wykonywany w tle (polecenie
bg), lub jako proces pierwszoplanowy (polecenie fg).
Przykład 2.3.17
Przerwanie wykonywania procesu pierwszoplanowego, a następnie wznowienie go jako procesu
wykonywanego w tle.
$ du > usage
... wykonywanie polecenia ...
ĆZ
Stopped
$ bg
[1] du > usage &
$ _
Przykład 2.3.18
Przerwanie wykonywania procesu pierwszoplanowego (pisania listu), a następnie kontynuowanie
tego procesu jako procesu pierwszoplanowego.
$ mail jacek
Subject: test
Przykład przerwania i wznowienia pracy
ĆZ
Suspended
$ fg
kontynuowanie listu
2.4 Edytor vi
vi (visual editor) jest standardowym edytorem w systemie UNIX. To, że jest edytorem tekstu, a
nie procesorem tekstu oznacza, że posiada wiele narzędzi do manipulowania tekstem (wstawia-
nie, usuwanie, przenoszenie, wyszukiwanie, itp.), ale nie posiada np. możliwości zmiany odstępu
między liniami czy zmiany kroju czcionek.
Edytor ten pracuje w dwóch trybach: trybie komend i trybie edycji.
W trybie edycji naciśnięcia klawiszy interpretowane są jako wprowadzane do tekstu znaki i po-
jawiają się na ekranie.
28 pazdziernika 2001 roku wersja 0.2 28
W trybie poleceń naciśnięcia klawiszy interpretowane są jako komendy, które wykonują takie
operacje jak kasowanie słów, wstawianie nowej linii, wyszukiwanie wzorca, itp. Większość ko-
mend edytora nie ukazuje się na ekranie podczas wprowadzania z klawiatury. Wykonują się one
natychmiast po wpisaniu ostatniego znaku komendy, bez naciskania klawisza . Wyjątek
stanowią komendy poprzedzone dwukropkiem. Tylko te wyświetlane są u dołu ekranu i muszą
być potwierdzone klawiszem enter.
Po uruchomieniu edytor znajduje się w trybie poleceń. Kilka poleceń (np. , , ) umoż-
liwia przejście do trybu edycji. Klawisz powoduje powrót do trybu poleceń. Działa on
jednak tylko  w jedną stronę - ponowne naciśnięcie nie spowoduje przejścia do trybu
edycji. Spowoduje to albo anulowanie poprzedniego polecenia, albo rozlegnie się dzwięk infor-
mujący, że edytor jest już w trybie poleceń. Ponieważ tryb w jakim znajduje się edytor nie jest
sygnalizowany na ekranie, więc takie przypomnienie może być czasami przydatne.
Niektóre linie mogą być reprezentowane na ekranie w sposób specjalny. Jeżeli edytor został uru-
chomiony z pustym buforem, na ekranie znajdą się linie, które zaczynają się od znaku ~ (tylda).
Oznacza to, że linie te znajdują się  za końcem pliku.
Aby móc pracować z edytorem vi, należy nauczyć się jak go uruchamiać, jak zmieniać tryb i
poznać przynajmniej kilka podstawowych poleceń.
Definicje pojęć użytych w dalszej części tego rozdziału:

bieżąca linia - linia, w której znajduje kursor;

bufor edytora - bufor przechowujący aktualnie edytowany tekst;

bufor tymczasowy - bufor przechowujący tekst ostatnio wyrzucony, zmieniony lub kopio-
wany za pomocą komendy ;

bufory nazwane - bufory (do 26 równocześnie), oznaczone małymi literami od
do ,
przechowujące ostatnio przesłany tam tekst.
2.4.1 Rozpoczęcie pracy
Aby uruchomić edytor należy napisać:
$ vi
lub
$ vi nazwa-pliku
Przykład 2.4.19
Edycja pliku list.txt, wywołanego poprzez: vi list.txt
28 pazdziernika 2001 roku wersja 0.2 29
~
~
~
~
"list.txt" [New file]
2.4.2 Wyjście z vi
Do zapisu tekstu znajdującego się w edytorze i wyjścia z vi służy kombinacja klawiszy ZZ w try-
bie komend, równoważną komendą jest :wq (po wciśnięciu <:> kursor przejdzie do dolnej linii).
Zapamiętania tekstu bez wychodzenia z edytora dokonuje się wciskając :w. Aby opuścić edytor
bez zapisania pliku należy wcisnąć :q!
2.4.3 Wprowadzanie tekstu
Po uruchomieniu edytora znajdujesz się w trybie komend, aby rozpocząć wprowadzanie tekstu
wciśnij klawisz (przejście w tryb edycji) i można rozpocząć pisanie.
Teraz mona pisać dowolny tekst.
~
~
~
~
Dopóki wprowadzany jest tekst, można pisać wiele linii (wciskając , za każdym razem
aby przejść do nowej linii), jeśli popełniono drobny błąd można użyć klawisza ,
do poruszania się po tekście można używać klawiszy ze strzałkami. Aby skończyć pisanie i przejść
do trybu komend należy wcisnąć .
Przykład 2.4.20
Przesuń kursor do miejsca:
28 pazdziernika 2001 roku wersja 0.2 30
Teraz mona pisać dowolny tekst.
~
~
~
~
Wciśnij klawisz , popraw tekst:
Teraz można pisać dowolny tekst.
~
~
~
~
Używając klawisza można wstawiać tekst przed znakiem wyróżnionym przez kursor (ozna-
czony jako ), aby wstawić tekst za kursor należy użyć klawisza
. Klawisz pozwala
wstawić nową linię.
2.4.4 Usuwanie tekstu
Z trybu komend można usuwać poszczególne litery z tekstu używając klawisza , usuwa on
literę zaznaczoną kursorem.
Przykład 2.4.21
Teraz mona pisać dowolny tekst np.:
"Dzisiaj wieczorem zapraszam na party,
każdy porzynosi coś do jedzenia"
~
~
Po wciśnięciu usunięta zostanie litera . Usunięcia całej linii dokonuje się wciskając dd
(dwukrotnie d), usunięta zostanie linia zawierająca kursor.
28 pazdziernika 2001 roku wersja 0.2 31
Teraz mona pisać dowolny tekst np.:
"Dzisiaj wieczorem zapraszam na party,
~
~
~
Do usuwania pojedynczego słowa, w którym znajduje się kursor służy kombinacja dw.
2.4.5 Komendy edytora vi
Komendy podstawowe
vi plik wywołuje edytor, plik pliku zostaje skopiowany do bufora edytora
ZZ, :x lub :wq wyjście z edytora z zapisaniem dokonanych poprawek lub do pliku
:q! wyjście z edytora bez zachowania poprawek
:w zapisuje zmiany w pliku
:w nazwa zapisuje zawartość bufora edytora w pliku nazwa
:x,yw nazwa zapisuje linie o numerach od x do y w pliku nazwa
:e nazwa ładuje plik nazwa do bufora edytora. Edycja pliku nazwa, przy czym
bufor edycji jest opróżniany przed wczytaniem pliku. Zwykle wcześniej
wydaje się komendę :w, aby zapisać poprzedni tekst. Polecenie :e po-
zwala zmienić edytowany tekst bez ponownego uruchamiania edytora.
Zawartość buforów tymczasowych (patrz opis dalej) nie ulega zmianom,
można w ten sposób przenosić bloki tekstu między plikami.
:e! wymazuje dokonane modyfikacje i udostępnia ponownie ten sam plik do
edycji
:r nazwa wczytuje plik nazwa za linię bieżącą
Tryb wprowadzania tekstu
Komendy tej grupy powodują przejście do trybu wprowadzania. Po użyciu jednej z nich, kolejne
wprowadzane znaki są traktowane jako tekst.
28 pazdziernika 2001 roku wersja 0.2 32
a umożliwia wprowadzanie tekstu za bieżącą pozycją kursora
A przesuwa kursor na koniec linii bieżącej i umożliwia wprowadzanie tam tekstu
i tekst wstawiany jest przed bieżącą pozycję kursora
I przesuwa kursor do początku linii bieżącej i umożliwia wstawianie tekstu
od tej pozycji
o tworzy nową linię poniżej bieżącej i umożliwia wprowadzanie tam tekstu
O tworzy nową linię powyżej bieżącej i umożliwia wprowadzanie tam tekstu
R zastępowanie tekstu (tzw. nadpisywanie)
s zastąpienie znaku pod kursorem
S zastąpienie całej linii
esc wyjście z trybu wprowadzania tekstu i powrót do trybu wprowadzania komend
Poruszanie się po tekście
Na większości terminali do poruszania się po tekście można używać klawiszy oznaczonych strzał-
kami. Poza tym:
Rys. 2.3. Poruszanie się po tekście w edytorze vi
28 pazdziernika 2001 roku wersja 0.2 33
0 przesuwa do pierwszego znaku w linii
$ przesuwa do ostatniego znaku w linii
h przesuwa kursor w lewo
j przesuwa kursor w dół
k przesuwa kursor do góry
l przesuwa kursor w prawo
w, W przesuwa w prawo o jedno słowo
b, B przesuwa w lewo o jedno słowo
e, E przesuwa kursor w przód do końca słowa
Uwaga: polecenia W, B, E oznaczają bardziej ogólne słowo niż w, b, e.
{ przesuwa do początku paragrafu (akapitu)
} przesuwa do końca paragrafu (akapitu)
( przenosi kursor w tył do początku zdania
) przenosi kursor w przód do początku zdania
+ przesuwa do początku następnej linii
- przesuwa do początku poprzedniej linii
enter przesuwa do początku następnej linii
spacja przesuwa o jeden znak w prawo
G przesuwa do początku ostatniej linii tekstu
1G przesuwa do początku tekstu
nG przesuwa do linii o n-tym numerze
H przesuwa kursor do górnego lewego rogu ekranu
M przesuwa kursor do środka ekranu
L przesuwa kursor do lewego dolnego rogu ekranu
^F przesuwa tekst o jeden ekran do przodu
^B przesuwa tekst o jeden ekran do tyłu
^U przesuwa tekst o pół ekranu w przód
^D przesuwa tekst o pół ekranu w tył
Inne komendy
Komendy usuwające:
28 pazdziernika 2001 roku wersja 0.2 34
x usuwa 1 znak z bieżącej pozycji kursora
nx usuwa n znaków na prawo od bieżącej pozycji kursora
X usuwa 1 znak na lewo od bieżącej pozycji kursora
nX usuwa n znaków na lewo od bieżącej pozycji kursora
D usuwa znaki od bieżącej pozycji kursora do końca linii
dd usuwa bieżącą linię
ndd usuwa n linii, począwszy od bieżącej
d0 usuwa znaki od początku linii bieżącej do pozycji kursora
dH, dM, dL usuwa znaki od pozycji kursora odpowiednio do góry, środka i dołu ekranu
dG usuwa od linii bieżącej do końca pliku
d/abcd enter usuwa znaki od bieżącej pozycji kursora do podanego ciągu abcd
Komendy modyfikujące:
r x zamienia znak w pozycji kursora na x
R tekst esc zamienia znaki od pozycji kursora na podany tekst (nadpisuje)
s tekst esc usuwa 1 znak na pozycji kursora i wstawia w to miejsce tekst
cc tekst esc zamienia całą linię bieżącą na wpisywany tekst
C tekst esc zamienia znaki od pozycji kursora do końca linii na wpisywany tekst
c/abcd enter pozwala zamienić znaki od pozycji kursora do zadanego ciągu znaków abcd
i wprowadzić w to miejsce inny ciąg znaków wpisanych z klawiatury zakoń-
czony naciśnięciem klawisza esc
~ na pozycji kursora zamienia literę: małą na dużą i odwrotnie
ddp zamienia miejscami kolejne dwie linie: linię bieżącą z następną
Komendy przeszukujące:
/abcd enter szuka (do przodu) ciągu znaków abcd od pozycji kursora do pierwsze-
go znalezionego ciągu, lub do końca zbioru, a następnie od początku
zbioru do linii bieżącej
?abcd enter szuka (do tyłu) jak wyżej
n lub N szuka dalej w tym samym kierunku n, lub w przeciwnym N
:x,ys/str1 /str2 /g w liniach od x do y zamienia ciąg znaków str1 na str2
Komendy przesuwające tekst do bufora tymczasowego:
28 pazdziernika 2001 roku wersja 0.2 35
d, dd, D usuwają do bufora tymczasowego tekst, zgodnie z opisem komend usuwających
yy lub Y kopiuje linię bieżącą do bufora tymczasowego
nyy lub nY kopiuje n linii do bufora tymczasowego, od bieżącej począwszy
Komendy umożliwiające odzyskanie tekstu z bufora tymczasowego:
p wstawia tekst z bufora tymczasowego za bieżącą linię
P wstawia tekst z bufora tymczasowego przed bieżącą linię
Komendy umożliwiające manipulowanie blokami tekstu oznakowanymi markerami:
mx (x - dowolna litera) oznakowuje markerem (znacznikiem) x miejsce w
zbiorze, wskazane kursorem
 x powoduje powrót kursora do pozycji oznaczonej markerem x
d x powoduje usunięcie bloku tekstu od linii oznaczonej markerem x do bie-
żącej pozycji kursora i przesłanie do bufora tymczasowego
: a, bm kopiuje oznakowane linie od a do b za linię bieżącą
: a, bd usuwa oznakowane linie od a do b
: a, bw nazwa zapisuje oznakowane linie od a do b do nowego pliku nazwa
: a,w nazwa zapisuje linie od a do linii bieżącej do nowego pliku nazwa
: a, bw! nazwa nadpisuje istniejący plik nazwa liniami a - b
: a, bw>>nazwa oznakowane linie a - b dopisuje do pliku nazwa
Komendy odwołujące się do buforów nazwanych (nazwa bufora poprzedzona podwójnym apo-
strofem   ), tylko kilka przykładów:
  b3dd usuwa z tekstu trzy linie i wpisuje je do bufora o nazwie b
  byy kopiuje linię bieżącą do bufora o nazwie b
  bp wstawia zawartość bufora o nazwie b za linię bieżącą
  bP wstawia zawartość bufora o nazwie b przed linię bieżącą
Inne komendy:
J łączy dwie linie w jedną: dopisując następną linię do bieżącej
u kasuje ostatnio wprowadzoną modyfikację
. powtarza ostatnio wprowadzoną zmianę
> przesunięcie tekstu w prawo
< przesunięcie tekstu w lewo
^L, ^R przerysowuje ekran
28 pazdziernika 2001 roku wersja 0.2 36
2.5 Gdzie szukać dalszej pomocy
Szukanie pomocy przy rozwiązywaniu problemów związanych z używaną wersją UNIX-a, oraz
możliwości jakie ten system oferuje proponuję rozpocząć od dokumentacji dostarczanej wraz
z systemem operacyjnym przez producenta (chociaż zazwyczaj nie zawsze jest ona wystarczają-
co szczegółowa, albo język jakim jest napisana jest zupełnie niezrozumiały).
Administratorzy systemu często udostępniają różnorodną dokumentację w katalogach: /usr/doc,
/usr/local/doc. Często zadawane pytania (ang. Frequently Asked Questions) można znalezć w
katalogu /usr/doc/FAQ.
Podstawowych informacji można znalezć używając programu man.
Poza tym na rynku jest dostępnych wiele książek i czasopism poświęconych UNIX-owi.
Internet jest niezastąpioną skarbnicą wiedzy, głównie dzięki grupom dyskusyjnym, oraz serwi-
som WWW.
Początkującym użytkownikom UNIX-a sugeruje aby znalezli lokalnego Guru, który doskonale
zna lokalny system. Czasami może się zdarzyć, że nasz Guru albo nie będzie miał czasu żeby
nam pomóc, albo nie będzie rozumiał w czym mamy problem, dlatego najlepszą pomocą jest
ktoś odrobinę bardziej zaawansowany, który niedawno rozwiązywał podobne problemy, na pewno
pomoże.
28 pazdziernika 2001 roku wersja 0.2 37


Wyszukiwarka

Podobne podstrony:
UNIX omowienie 1
UNIX omowienie 6
UNIX omowienie 4
UNIX omowienie 5
Active Directory omówienie domyślnych jednostek organizacyjnych
Unix lab 9
materialy pomocnicze unix
Kasy fiskalne 2014 z omowieniem ekspertow CMS Cameron McKenna
Berkeley Unix Summary
Omówienie metodyki prowadzenia poszczególnych analiz problemowych na
Unix Wprowadzenie Internet i inne sieci
Ćwiczenia Active Directory omówienie jednostek organizacyjnych
Instalacja pracowni omówienie
Systemy Operacyjne Unix Linux solarka2
OMÓWIENIE INTERFEJSÓW I KLAS ABSTRAKCYJNYCH W JĘZYKU JAVA
2 Omowienie pakietu MS Office i Open Office Ogolne wlasciwosci?ytora tekstu

więcej podobnych podstron