Rozdział III Ogólne zasady pracy
3.1. Włączanie i wyłączanie systemu
Wtaczanie i wytaczanie systemu komputerowego pracującego pod kontrolą Unixa jest zarezerwowana dla osoby pełniącej rolę administratora systemu (w terminologii Unixa — super-użytkownika), zarejestrowanego w systemie jako użytkownik o nazwie root. Czynności te wymagają zarówno znajomości zewnętrznej obsługi komputera, jak i pewnej znajomości systemu operacyjnego. W przypadku współczesnych komputerów typu PC, stacji roboczych i średniej wielkości komputerów centralnych (serwerów) jest to zwykle nadzwyczaj proste, ponieważ istnieje w nich tylko jeden przełącznik włączenia/wyłączenia zasilania komputera. Nieco większa wiedza jest potrzebna odnośnie zainicjowania i zakończenia pracy samego systemu operacyjnego. Szczególnie wrażliwe na właściwe postępowanie jest wyłączanie komputera, gdyż musi ono być przeprowadzone tak, aby brutalnie nie przerwać procy innym użytkownikom systemu i prawidłowo „zamknąć" pracę systemu. Poniżej proces ten opisano na przykładzie systemu operacyjnego HP-UX komputerów HP-9000 Hewlett Packarda oraz systemu SCO UNIX firmy The Santa Cruz Operation Inc., przeznaczonego dla komputerów PC.
3.1.1. Włączenie systemu
Aby włączyć system komputerowy pracujący pod kontrolą Unixa, należy włączyć zasilanie głównego terminala systemu, pełniącego rolę konsoli operatora, oraz zasilanie komputera.
Proces ładowania systemu przebiega automatycznie. W szczególnym przypadku — zależnie od sposobu skonfigurowania — system może zadawać nieliczne i proste pytania dotyczące typu terminala, wejścia w tryb wielodostępu itp. Kolejne fazy ładowania systemu powodują wyprowadzanie na ekran odpowiednich komunikatów informacyjnych. System jest gotowy do pracy z chwilą wyświetlenia komunikatu:
login:
Chcąc rozpocząć pracę przy konsoli, należy po powyższym komunikacie wprowadzić nazwę użytkownika, uprawnionego do korzystania z systemu, a następnie po komunikacie:
password:
Podać jego hasło dostępu do systemu, zwracając baczną uwagę na pisownię małych wielkich liter. Nazwa i hasło są odczytywane po naciśnięciu klawisza Enter. Ponieważ tekst wprowadzanego hasła nie jest wyświetlany, należy go wprowadzać ostrożnie; w razie pomyłki powyższe zapytania zostaną wyświetlone ponownie.
W przypadku komputerów PC włączonych do sieci komputerowej (LAN), po załączeniu zasilania niektóre typy zainstalowanych w nich kart sieciowych mogą wyświetlać na ekranie zapytanie o źródło ładowania systemu, na przykład:
boot from Hard disk or Lan card (H or L) W tym przypadku należy nacisnąć klawisz H, co oznacza, że system ma być ładowany z dysku twardego (ang. Hard disk).
W przypadku systemu SCO VNIX, przystosowanego do instalacji na tym samym dysku co i DOS, komputer wyświetla tekst:
Boot:
pytając w ten sposób o to, który system ma załadować. Jeżeli ma to być Unix, wystarczy nacisnąć klawisz Enter, jeżeli zaś system DOS, należy wpisać nazwę DOS i nacisnąć
klawisz Enter.
Po naciśnięciu klawisza Enter w odpowiedzi na komunikat Boot: (lub odczekaniu kilkudziesięciu sekund) rozpoczyna się ładowanie systemu, czemu towarzyszy seria komunikatów wyświetlanych na ekranie:
• po około 2 minutach:
INIT SINGLE USER MODĘ Type CONTROL-d. .... -> wejście w tryb wielodostępu po
naciśnięciu Cłrl-D
or give root password .... —> lub tryb pojedynczego użytkownika — (należy podać hasło roota)
• po następnej minucie:
Current System Time is ....
Enter new time [yymmddhhmm] : —> można podać poprawną datę lub zaakceptować wyświetlaną naciskając klawisz Enter
• po kolejnej minucie:
Checking protected subsystem dadabases...
• po kolejnych 1-2 minutach:
Wilcome to SCO System V/386 scosysv! login: —> wpisz root i naciśnij klawisz Enter
Password: —> wpisz hasło i naciśnij klawisz Enter
3.1.2. Wyłączenie systemu
Aby wyłączyć system komputerowy pracujący pod kontrolą Unixa, należy mieć na konsoli otwartą sesję pracy z nazwą użytkownika root (zapoznaj się z poprzednim punktem), a następnie — jeżeli mamy do czynienia z wielodostępną instalacją systemu i pracujemy w trybie wieloużytkownikowym — należy sprawdzić, czy w danej chwili pracują inni użytkownicy. Można to uzyskać wprowadzając polecenie
who
w wyniku którego na ekranie wyświetlona zostanie lista nazw terminali i nazw wykorzystujących je użytkowników. W organizacyjnie przyjęty sposób należy tych
użytkowników powiadomić o planowanym wyłączeniu systemu, aby mogli zakończyć swoje prace. Można to zrobić osobiście, telefonicznie albo poleceniem wall, wyświetlającym na wszystkich włączonych i aktywnych terminalach odpowiedni komunikat, wprowadzony przez operatora, na przykład:
po znaku zachęty # wpisz:
#wall Enter
UWAGA! za. 5 minut nastąpi wyłączenie komputera Enter
Wszyscy użytkownicy są proszeni o zakończenie pracy Enter Ctri-D Ctri-C
Jeżeli Unix pracuje na jednostanowiskowym komputerze (ang. standalone workstation) lub pracuje w trybie pojedynczego użytkownika — powyższe informacje oczywiście do niego się nie odnoszą.
Następnie należy przejść do katalogu głównego (wymaga tego na przykład HP-UX):
cd/
i wprowadzić polecenie zamykające pracę systemu, przy czym nazwa i argumenty tego polecenia mogą zależeć od konkretnej odmiany systemu.
Wyłączenie systemu HP-UX
Aby wyłączyć system należy wydać polecenie
Shutdown -h sek — całkowite zakończenie pracy systemu (należy wyłączyć zasilanie);
lub:
Shutdown -r sek — zakończenie i ponowne rozpoczęcie pracy systemu (popularnie: „przeładowanie" — ang. reboot);
gdzie sek jest czasem w Sekundach, określającym rezerwę czasową dawaną innym użytkownikom na zakończenie pracy (0 — oznacza 60 sekund).
Jeżeli poza administratorem pracują jeszcze inni użytkownicy, polecenie to profilaktycznie pyta, czy będzie rozsyłany na ekrany włączonych terminali jakiś komunikat informacyjny. Na pytanie to możemy odpowiedzieć naciskając klawisz Y lub N (Tak/Nie}. W przypadku odpowiedzi twierdzącej należy wprowadzić odpowiedni tekst komunikatu i zakończyć go naciśnięciem klawiszy Ctri-D.
W systemie HP-UX po wydaniu obu wyżej wymienionych wariantów polecenia Shutdown na wszystkie włączone terminale wyprowadzany jest komunikat:
System being brought down now !!! informujący o zamykaniu pracy systemu operacyjnego. Jeżeli użyto opcję -h, to dodatkowo wyprowadzany jest komunikat:
• w HP-UX v.8.x:
Halting in tight loop -- OK To Hit Reset Button
• w HP-UX v.9.x:
System has halted
OK to -turn off power or reset system oznaczający, że system czeka na wyłączenie zasilania komputera.
Wyłączenie systemu SCO UNIK
Aby wyłączyć system należy wydać polecenie
shutdown -gczas -f "komunikat"
Po upływie podanego czasu ([hh:]mm) nastąpi rozpoczęcie zamykania otwartych plików i procesów (programów). Jeżeli argumenty zostaną pominięte przyjęty zostanie czas 60 sekund oraz komunikat zastępczy, wysyłany na wszystkie aktywne terminale:
Broadcast Message from root ...
The system will be shutdown in 60 seconds
Please log off now
co oznacza mniej więcej: komunikat od administratora root ..., za 60 sekund system zakończy pracę, zamknij teraz sesję pracy. Następnie na wszystkich aktywnych terminalach wyświetlony zostanie komunikat:
The system is being shutdown now Log off or risk your files being domaged
a na ekranie użytkownika uprzywilejowanego dodatkowo zapytanie o to, czy należy kontynuować proces zamykania:
Do You want to continue? (y or n) Naciśnięcie klawisza Y oznacza kontynuację procesu zamykania systemu, a N — jego przerwanie.
System można wyłączyć dopiero po pojawieniu się na ekranie odpowiednich komunikatów, zależnych od odmiany i wersji Unixa. W SCO UNIX, jest to komunikat:
** Safe to Power off **
or
** Press Any Key to Reboot **
oznaczający, że można albo wyłączyć zasilanie komputera, albo przeładować system naciskając dowolny klawisz.
3.2. Otwieranie i zamykanie sesji pracy na terminalu
Komputery pracujące pod kontrolą systemu Unix są zazwyczaj przeznaczone do wykorzystania przez wielu użytkowników. Ze względu na konieczność zagwarantowania bezpieczeństwa gromadzonych przez nich danych, zakres tego wykorzystywania jest przez system kontrolowany. Z systemu Unix mogą więc korzystać tylko osoby do tego upoważnione, zarejestrowane przez administratora systemu. Jeżeli w danej instytucji użytkownik chce skorzystać z terminala wieloużytkownikowej instalacji Unixa, powinien wcześniej poprosić administratora o założenie konta (inaczej — o zarejestrowanie).
Podstawowa kontrola uprawnień użytkowników do korzystania z systemu przeprowadzana jest w momencie otwierania na terminalu sesji pracy. Pozostałe uprawnienia, na przykład dostępu do poszczególnych plików, sprawdzane są w trakcie pracy.
Proces rozpoczynania i kończenia pracy na terminalu zależy od typu terminala i systemowego interfejsu użytkownika, używanego do komunikacji użytkownika z systemem.
W niniejszym podręczniku skoncentrowano uwagę na wspólnym dla wszystkich odmian Unixa standardowym interfejsie, obsługiwanym w trybie tekstowym przez standardowego shella (sh).
Warto jednak pamiętać, że istnieją nowoczesne graficzne interfejsy okienkowe, wymagające X-terminali lub odpowiedniego oprogramowania dla PC pracującego w środowisku Windows i emulującego X-terminale.
praca każdego użytkownika w systemie Unix składa się z trzech faz:
• otwarcia na terminalu sesji pracy (rozpoczynającego się sprawdzeniem tożsamości użytkownika);
• właściwej pracy, polegającej na wydawaniu kolejnych poleceń lub obsłudze konkretnego programu;
• zakończenia sesji pracy.
3.2.1. Otwarcie sesji pracy
Otwarcie sesji pracy na terminalu dostępnym dla systemu Unix jest często nazywane zgłaszaniem się użytkownika w systemie. W żargonie informatyków czynność ta nazywana jest niekiedy „logowaniem". Jeżeli terminal jest wyłączony — należy włączyć jego zasilanie. Po krótkim upływie czasu-system wyświetla informacje ogólne (między innymi zawarte w plikach /etc/motd i /etc/issue), a następnie komunikaty:
login:
password:
oczekując od użytkownika podania: po login: — nazwy użytkownika, a po password:
— hasła, uprawniającego go do pracy w systemie. Parametry te przydzielane są użytkownikom przez administratora systemu w chwili rejestrowania ich w systemie. Istotna jest ich pisownia: małe i wielkie litery są rozróinialne. Należy szczególnie uważnie wprowadzać hasło, gdyż jego znaki nie są wyświetlane (aby nie mogły być łatwo podpatrzone przez osoby postronne). W przypadku pomyłki powyższe zapytania wyświetlane są ponownie, natomiast po wprowadzeniu poprawnych danych otwierana jest sesja pracy użytkownika, która trwa aż do jej jawnego zakończenia poleceniem exit (lub przez naciśnięcie sekwencji klawiszy: CtrI-D).
W wielu odmianach Unixa stosowane są pewne ograniczenia dotyczące treści hasła, mające na celu wyeliminowanie haseł zbyt łatwych do odgadnięcia. Ponadto (tak jak w systemie SCO UNIX) administrator może ustalić maksymalną liczbę pomyłek, po której nastąpi zablokowanie terminala.
Po zaakceptowaniu nazwy i hasła użytkownika na ekranie mogą się pojawić kolejne komunikaty, zależne od konfiguracji systemu i plików startowych danego użytkownika, na przykład:
• TERM=(ansi)
Jeżeli podany w nawiasach łyp pracy terminala jest zgodny z typem faktycznie używanym, należy nacisnąć klawisz Enter, w przeciwnym przypadku przed naciśnięciem klawisza Enter należy wpisać nazwę używanego typu pracy terminala (na przykład wy60);
• You have mail
Informujący, że użytkownik w swojej skrzynce pocztowej posiada informacje przesiane mu przez innego użytkownika.
Po zgłoszeniu się w systemie użytkownik otrzymuje swoje domyślne środowisko pracy, między innymi: swój domyślny katalog startowy/domowy (ang. home dirc.clory), swoje domyślne ścieżki dostępu do katalogów (listy dostępnych katalogów), nazwę trybu pracy terminala oraz swojego domyślnego shella. Jest to program, który czyta wiersze ze standardowego wejścia (domyślnie klawiatury) lub z pliku i traktuje je jako polecenia. Po otwarciu przez użytkownika sesji pracy, na ekran wyprowadzany jest tzw. symbol gotowości systemu do przyjmowania poleceń użytkownika, nazywany często również symbolem zgłoszenia, zachęty lub monitu (ang. prompt). Dla standardowego shella (sh) jest nim znak:
$ (dolar) — w przypadku zwykłego użytkownika (jeżeli shellem jest csh, to zamiast dolara wyświetlany jest znak procentu %);
# (hash) — w przypadku użytkownika uprzywilejowanego.
Symbol gotowości poprzedza każdy wiersz poleceń wprowadzanych z terminala. Pierwsze wyświetlenie tego symbolu może być poprzedzone wyświetleniem pewnego tekstu informacyjnego (komunikatu dnia — ang. message of today, zapisanego w pliku /etc/motd). Praca na terminalu (w sytuacji gdy jest wyświetlany ten symbol) jest często nazywana pracą na poziomie shella, dla odróżnienia sytuacji kiedy terminal znajduje się pod kontrolą wywołanego polecenia.
Otwieranie sesji pracy na komputerze klasy PC naśladującym terminal
Jeżeli korzystamy z komputera PC posiadającego zainstalowane oprogramowanie umożliwiające emulowanie terminala unixowego, należy wywołać odpowiedni emulator (na przykład program telnet ). Zwykle bezpośrednio po tym zgłasza się Unix.
Jeżeli korzystamy z emulatora telnet, należy wprowadzić polecenie o następującej składni:
telnet [nazwa_komputera | adres_komputera] argumenty dotyczą komputera, na którym chcemy otworzyć unixową sesję pracy. Bezpośrednio po przyjęciu polecenia pojawi się unixowy komunikat
login:
Jeżeli korzystamy z emulatorów serii ICE (ICE.TEN, ICE.TCP, zainstalowanych w środowisku DOSa; patrz rozdział 17) zwykle należy nacisnąć odpowiednią sekwencję klawiszy (standardowo Ctrl-X lub CtrI-U). W wyniku tego PC zostanie przełączony na sesję Unixa i wyświetlony zostanie komunikat
login:
Oba wyżej wymienione emulatory są opisane w końcowej części podręcznika.
3.2.2. Praca w systemie
Właściwa praca w systemie Unix może dotyczyć zarówno wykonywania dowolnych standardowych poleceń systemowych, jak i uruchamiania programów użytkowych, obsługujących konkretne zastosowania. W jednym i drugim przypadku użytkownik musi mieć uprawnienia do ich uruchamiania. Większość standardowych poleceń systemowych jest dostępna dla wszystkich użytkowników.
System Unix polecenia własne i programy użytkownika traktuje na równych prawach.
Chcąc uruchomić jakiś program, na przykład edytor tekstu, należy wprowadzić polecenie inicjujące ten program. Poleceniem tym jest systemowa nazwa programu (będąca zwykle skrótem jego nazwy handlowej lub potocznej). Uruchomiony program przejmuje część kontroli nad terminalem. Po zakończeniu pracy programu, pełną kontrolę nad terminalem przejmuje system operacyjny (shell), który gotów jest do przyjmowania kolejnych poleceń.
Wydanie (wprowadzenie) polecenia oznacza wpisanie z klawiatury odpowiedniego tekstu i naciśnięcie klawisza Enter (niektóre klawiatury mają ten klawisz oznaczony napisem Retum). System wykonuje polecenia natychmiast po ich wprowadzeniu.
Przykładowo, po wprowadzeniu polecenia
ls na ekranie wyświetlona zostanie zwarta lista nazw plików (zbiorów):
pliki plik2 plik3 plik4 ... natomiast po wprowadzeniu polecenia
who
otrzymamy wykaz nazw pracujących użytkowników i terminali, przy których rozpoczęli oni pracę:
Jurek console May 20 10:30
leszek tty0l May 20 11:15
robert tty7 May 20 9:07
W razie potrzeby, w jednym wierszu można wpisać kilka poleceń, rozdzielając je znakiem średnika (;):
who; date
Edytowanie wprowadzanych poleceń
W trakcie wpisywania na terminalu tekstu polecenia, wprowadzane znaki są zapamiętywane w systemowym buforze klawiatury. Przed naciśnięciem klawisza Enter, zawartość lego bufora może być modyfikowana w sposób zależny od używanego shella, pod kontrolą
którego pracuje dany użytkownik. Standardowy shell (Sh) udostępnia tylko dwie operacje edycyjne:
• kasowanie znaku stojącego na lewo od kursora (klawiszem Backspace);
• kasowanie całej zawartości bufora (klawiszami CtrI-U).
Pełne możliwości edycyjne wiersza polecenia udostępnia shell Korn'a (ksh); nieco mniejsze C-shell (csh), przy czym shellowi ksh można w zmiennej EDITOR lub VISUAL wskazać nazwę używanego edytora (na przykład EDITOR=vi), przy pomocy którego mogą być edytowane wiersze poleceń.
Klawisze specjalne
W trakcie dialogu z systemem pewne klawisze terminala i ich kombinacje mają specjalne (jednakże redefiniowalne poleceniem Stty) znaczenie. Poniżej wymieniono domyślne funkcje typowych klawiszy:
BackSpace — usunięcie znaku stojącego przed kursorem (z lewej strony);
Enter — akceptacja wiersza polecenia, koniec wiersza tekstu;
Ctri-C, Del — (ang. {NTR character) przerwanie wykonania polecenia;
CtrI-D — (ang. EOF character) tak zwanmy „koniec pliku lub komunikatu" (na poziomie shella: przejście w tryb wielodostępu lub wyjście z niego);
Ctrl-\ — (ang. QUfT character) zakończenie wykonania polecenia;
CtrI-H — (ang. ERASE character') zwykle odpowiednik klawisza BackSpace;
CtrI-S — wstrzymanie wyświetlania na ekranie;
Ctrl-Q — kontynuowanie wyświetlania na ekranie;
CtrI-U — (ang. KILL character) skasowanie wiersza aktualnie wprowadzanego polecenia.
Oznaczenia CtrI-znak (niekiedy również: ^znak) należy traktować w ten sposób, że przy naciśniętym klawiszu Ctrl (ang. Control) należy nacisnąć klawisz znak.
W trakcie obsługi programów użytkowych, klawisze te mogą mieć inne znaczenie. Również na poziomie dialogu z systemem, związane z nimi operacje mogą być w środowisku użytkownika przedefiniowane (poleceniem Stty).
Pisanie z wyprzedzaniem
W trakcie wprowadzania poleceń z klawiatury terminala, Unix pozwala na pisanie z dowolną szybkością. Jeżeli terminal pracuje wolniej niż użytkownik, system zapamiętuje (buforuje) wprowadzone znaki Pewną ostrożność warto zachować w sytuacjach, gdy podczas wprowadzania poleceń system jednocześnie wyświetla pewne dane na ekranie (na przykład odpowiedzi na wcześniej wprowadzone polecenia). Wprawdzie nie powoduje to bezpośrednich błędów, ale jest mylące dla użytkownika, gdyż wprowadzane z klawiatury znaki mieszają się na ekranie ze znakami wyświetlanymi przez system, co może być przyczyną wielu pomyłek.
3.2.3. Kończenie pracy
W celu oficjalnego zakończenia sesji pracy w systemie Unix użytkownik powinien zamknąć tę sesję (inaczej: wylogować się), wprowadzając jedno z poleceń:
• exit —jeżeli pracuje pod kontrolą shella sh lub ksh;
• logout — jeżeli pracuje pod kontrolą shella csh;
lub nacisnąć klawisze CtrI-D, co daje ten sam efekt.
Uwaga:
Wyłączenie zasilania terminala nie powoduje automatycznie zakończenia sesji pracy!
Po zamknięciu sesji pracy użytkownika, Unix wyświetla komunikat:
login:
czekając na powtórne „zgłoszenie się" (tego samego lub innego) użytkownika. W tej sytuacja można wyłączyć zasilanie terminala.
3.3. Rodzaje poleceń
Unix jest wyposażony w olbrzymią liczbę poleceń, znacznie większą niż w jakimkolwiek innym systemie-operacyjnym. Wyodrębnia się zwykle:
• polecenia jednozadaniowe i interakcyjne;
• polecenia wewnętrzne i zewnętrzne.
Polecenia jednozadaniowe dominują w systemie i wymagają znajomości ich przeznaczenia i opcji wywołania, modyfikujących ich działanie. Należą do nich polecenia przeznaczone do wykonywania jednego zadania, na przykład:
cp — kopiowanie plików;
cd — zmiana bieżącego katalogu na podany.
Polecenia interakcyjne (wielozadaniowe) wyposażone są we własny zestaw komend, na przykład:
vi, ed, ex — edytory tekstów;
ftp — transfer plików pomiędzy różnymi komputerami;
lub w interfejs korzystający z menu i okien, na przykład:
sysadm — administrator systemu (SCO XENIX);
sysadmsh — administrator systemu (SCO UNIX);
scosh — shell okienkowy (SCO UNIX 3.2.4.x):
sam — administrator systemu (HP-UX);
smit — administrator systemu (AIX).
Polecenia wbudowane, to polecenia „wbudowane" w stosowanego shella. Jest ich kilkadziesiąt.
Polecenia zewnętrzne, to polecenia będące samodzielnymi programami, pamiętane w odrębnych plikach i wykonywane standardowo jako odrębne procesy użytkowe. Uwaga:
Podział na polecenia wewnętrzne i zewnętrzne jest stosowany również w systemie MS DOS, w którym polecenia wewnętrzne są wbudowane w program command.com, a zewnętrzne są zapisane w plikach o nazwach z rozszerzeniem
.exe, .com lub .bat. W przeciwieństwie do DOSa, Unix nie operuje jednak pojęciem „rozszerzeń" nazw; nazwą polecenia zewnętrznego może być dowolna nazwa formalnie poprawna w systemie. Ponadto, podobnie jak DOS, Unix traktuje na równych prawach swoje własne polecenia i polecenia pisane przez użytkownika. Jeżeli jednak polecenia własne są pisane w języku shella, to DOS wymaga aby miały rozszerzenie .BAT. natomiast Unix, aby miały atrybut wykonalności lub były wywołane przez zapis sh polecenie.
3.3.1. Składnia poleceń
Polecenia w systemie Unix mają ogólnie następującą postać:
nazwa_polecenia [opcje] [argumenty]
i są przyjmowane po naciśnięciu klawisza Enter. W niektórych poleceniach argumenty (są to zwykle nazwy plików) nie występują, a w wielu z nich mogą być one pominięte.
Uwaga:
Możliwość pominięcia opcji lub argumentów polecenia w zapisie jego ogólnej składni przyjęło się w literaturze informatycznej zaznaczać nawiasami prostokątnymi [ ], ujmując w nie te elementy polecenia, które w pewnych sytuacjach mogą być pominięte. Przykładowe typowe polecenia to:
date — wyświetlenie/modyfikacja bieżącej daty;
who — wyświetlenie listy pracujących użytkowników;
pwd — wyświetlenie nazwy katalogu bieżącego;
ls — wyświetlenie zawartości katalogu bieżącego;
cat dane — wyświetlenie zawartości pliku o nazwie dane;
cd /usr/jola — przejście do katalogu /usr/jola.
Nazwa polecenia to zazwyczaj ciąg kilku małych liter. Nazwy standardowych poleceń Unixa są pisane małymi literami (w poleceniach utworzonych przez użytkownika mogą wystąpić również wielkie litery, ale są one odróżnialne od małych). Nazwy poleceń są zwykle skrótami ich pełnych nazw angielskich. Na przykład:
cd — od stów (ang. chanie directory) — zmień katalog;
cp — od słowa (ang. copy) — kopiuj;
rm — od słowa (ang. reniove) — usuń plik/katalog. Opcje polecenia to jednoliterowe oznaczenia poprzedzane w większości poleceń znakiem minus (-), na przykład:
ls -l
Pisownia opcji zależy od konkretnych poleceń, a ich zadaniem jest zazwyczaj modyfikacja działania polecenia. Zwykle dozwolone jest zapisywanie opcji oddzielnie (-a -b -c) lub łącznie (-abc). Opcje o tych samych oznaczeniach mają różne działanie w różnych
poleceniach, co jest wynikiem tego, że w kontekście różnych poleceń są one zwykle
pochodnymi od słów oznaczających różne operacje lub zakresy czynności: na przykład l —
od słowa long lub Huk, a — od słowa all, r — od stów recover. read oniy bądź remove itp.
Argumenty polecenia to zwykle nazwy plików, przy czym w wielu poleceniach można
podać kilka nazw plików, .oddzielając je co najmniej jednym znakiem odstępu (standardowo
znakiem spacji i/lub tabulacji — zestaw tych znaków definiuje zmienna środowiskowa IFS).
Jak widać z powyższego opisu, konstrukcja poleceń unixowych jest podobna do stosowanej
w systemie DOS, jednakże z następującymi różnicami:
• Unix rozróżnia w poleceniach małe i wielkie litery (DOS nie);
• opcje w Unixie są poprzedzane znakiem - (w DOSie: /);
• Unix pozwala zapisać kilka poleceń w jednej linii (DOS nie), ale muszą być one wtedy rozdzielone znakiem średnika (;);
• Unix pozwala zwykle podać w poleceniu kilka nazw plików, oddzielonych znakiem odstępu (DOS nie);
• w (opisywanych dalej) „ścieżkowych nazwach plików" Unix używa znaku / (ang. slash), a DOS znaku \ (ang. backslash).
Szczególne podobieństwa w systemach Unix i DOS dotyczą znaków używanych w miejscu argumentów:
•, ? — służą do tworzenia wzorców nazw plików;
<, >, <<, >>— służą do przenoszenia standardowych strumieni danych;
— oznaczają odpowiednio katalog bieżący i nadrzędny;
oraz niektórych poleceń, takich jak:
cd k — zmiana katalogu bieżącego na katalog k;
rnkdir k — utworzenie katalogu k;
rmdir k — usunięcie katalogu k.
3.3.2. Systemowe wspomaganie użytkownika (man)
W celu uniezależnienia użytkownika od częstego wertowania obszernej dokumentacji systemowej, większość komercyjnych odmian Unixa udostępnia własny system dostarczania na ekranie informacji o sposobie wywołania dostępnych poleceń, ich przeznaczeniu l działaniu. W zależności od odmiany systemu, objaśnienia, oczywiście w języku angielskim, są udostępniane poleceniem man (od ang. manual — podręcznik) lub hełp (ang. he1p — pomoc). Informacje udostępniane przez polecenie man są praktycznie kompletnymi rozdziałami podręcznika użytkownika, dostarczanego wraz z systemem. Podręcznik len składa się z części nazywanych rozdziałami (lub sekcjami), przy czym ich oznaczenia są zależne od odmiany systemu (najczęściej wywodzą się z odmian systemu określanych mianem Unix System V i BSD Unix).
Każdy rozdział składa się z podrozdziałów identyfikowanych przez nazwę polecenia i podawany w nawiasach identyfikator rozdziału, na przykład:
cd(C) — opis polecenia cd z rozdziału C;
cd(1) — opis polecenia cd z rozdziału 1.
Tabela 3.1. Struktura rozdziałów podręcznika podpowiedzi
Rozdział dokumentacji
|
Opis sekcji
|
||
SCO UNIX System V
|
HP-UX
|
|
|
C
|
l
|
Commands
|
Polecenia
|
-
|
2
|
System calls
|
Wywołania systemowe
|
S
|
3.3C
|
Subroutine and Libraries
|
Funkcje biblioteczne
|
HW
|
4
|
Hardware Dependent
|
Sprzęt
|
F
|
5
|
Pile formals/Specj.Files
|
Pliki specjalne
|
-
|
6
|
Games
|
Gry
|
CP
|
-
|
Programming Commands
|
Języki programowania
|
DOS
|
-
|
DOS Libraries
|
Biblioteki DOS-a
|
LOCAL
|
-
|
Local utiiities
|
„Narzędzia" narodowe
|
M
|
7
|
Miscellaneous
|
Różności
|
ADM
|
8
|
System Administration
|
Administrowanie
|
Dane polecenie lub hasło związane z systemem może być opisane w kilku rozdziałach. Poszczególne opisy są zapisane w odrębnych plikach (w katalogu /usr/man), dlatego też zestaw dostępnych opisów może być rozszerzany (zwykle wraz z instalacja kolejnego oprogramowania).
Polecenie man ma następującą składnię:
man [opcje] [rozdzial_dokumentacji] nazwa_polecenia
Polecenie to wyprowadza na standardowe wyjście (ekran terminala) sformatowany opis polecenia. Wyświetlanie tekstu jest zatrzymywane po zapełnieniu ekranu. Kolejny ekran jest wyświetlany po naciśnięciu klawisza Space lub Enter. Listy opcji tego polecenia w różnych odmianach systemu znacznie się różnią, jednakże w praktyce są rzadko używane. Informacje o samym poleceniu man można uzyskać w wyniku wprowadzenia polecenia
man man
Jeśli zamiast wyświetlenia opisu polecenia (na przykład cd) chcemy ten opis wydrukować, można opis zapamiętać w pliku, a następnie skierować go na drukarkę:
man cd > cd.prn Ip cd.prn
3.4. Redagowanie plików tekstowych
Do redagowania plików tekstowych mogą być używane różne edytory tekstów. W środowisku Unixa jest ich dostępnych wiele, jednakże — za wyjątkiem kilku standardowych — większość z nich pochodzi od niezależnych producentów i musi być odrębnie kupowana. Przykładem może być chociażby doskonały polski edytor Mix Edit, przypominający znanego z DOSa Norton edytora.
Większość odmian systemu Unix jest wyposażona w co najmniej cztery edytory: ed i ex (edytory wierszowe, mające znaczenie raczej historyczne), edytor wsadowy o nazwie sed i edytor vi — petnoekranowy, równie stary jak wcześniej wymienione, ale posiadający duże możliwości.
3.4.1. Edytor vi
Edytor vi (ang. visual editor) jest jednym z najważniejszych elementów unixowego oprogramowania. Posiada imponujące możliwości, jednakże dość często jest krytykowany za nieprzyjazność i zbyt skomplikowaną obługę. Jego niezaprzeczalnym atutem jest jednak to, ze znajduje się na wyposażeniu każdej odmiany Unixa i w wielu przypadkach jest dla użytkownika jedynym edytorem dostępnym w danej instalacji systemu. Niektórzy twierdzą, że jego nieprzyjazność jest tylko pozorna i wynika jedynie z faktu, że nie udostępnia on żadnej podpowiedzi ani innych mechanizmów wspomagania użytkownika. Jest on dostosowany do pracy na dowolnym typie terminala opisanego w systemie, jednakże bez dodatkowego „dokonfigurowania" tego opisu często nie korzysta z klawiszy sterowania kursorem (strzałek), Home, End, PgUp i PgDn — powszechnie używanych przez edytory nowszych generacji. Początkującego użytkownika zwykle przytłacza dużą liczbą komend, przypisanych różnym klawiszom i ich sekwencjom, dość trudnych w zapamiętaniu. Jeżeli jednak potrafimy się zmusić do ich poznania, możemy być pewni, że polubimy ten edytor, gdyż jego możliwości są ogromne, a szybkość procy wręcz imponująca.
Edytor vi jest uruchamiany jednym z poleceń:
vi [-rR...] [+nr] [plik...] — wersja dla doświadczonych;
vedit [-rR...] [+nr] [plik...] — wersja dla początkujących, wyświetlająca na dole ekranu informację o stanie edytora.
Argumenty i opcje wywołania edytora vi opisano poniżej.
plik to nazwa edytowanego pliku. Można podać kilka nazw plików, gdyż w trakcie prący istnieje możliwość przełączania się pomiędzy edycją poszczególnych plików. Plik aktualnie edytowany nazywany jest plikiem aktualnym lub plikiem bieżąco otwartym. Jeżeli plik o podanej nazwie nie istnieje, to otwarty zostanie nowy pusty plik. Jeżeli w poleceniu nie zostanie podana nazwa pliku, to można ją podać w chwili kończenia edycji tekstu;
-r (ang. recover') — odtwórz to opcja pozwalająca odtworzyć poprzedni stan edycji, na przykład sprzed ostatniego zaniku zasilania komputera lub ostatniej jego awarii. Opcja ta była szczególnie cenna w minionych latach, kiedy to awaryjność sprzętu była znacznie większa niż obecnie:
-R (ang. read only) — tylko czytanie to opcja, która pozwala otworzyć plik tylko do przeglądu, bez możliwości zapisania zmian. Używana bywa w tych sytuacjach, w których chcemy obejrzeć zawartość pliku a jednocześnie uniknąć przypadkowych jego zmian;
+nr numer wiersza, na którym ma być ustawiony kursor po otwarciu pliku (opcja bardzo przydatna przy poprawianiu błędów w programach źródłowych, sygnalizowanych w czasie ich kompilacji).
Inne opcje są w praktyce rzadko używane. Najczęściej omawiany edytor jest wywoływany bez opcji, z jedną nazwą pliku.
Przykłady wywołania:
vi plik1 — rozpoczęcie edycji pliku o nazwie plik1;
vi +100 plik1 — rozpoczęcie edycji pliku o nazwie plik1, przy czym kursor zostanie ustawiony na setnym wierszu jego tekstu.
Po wprowadzeniu polecenia vi na ekranie wyświetlany jest początkowy fragment pliku, o ile wcześniej byt w nim zapisany jakiś tekst, lub widzimy zupełnie pusty ekran — jeżeli rozpoczynamy redagowanie nowego pliku. Po tekście widocznym na ekranie można przesuwać tzw. kursor (migający znacznik), wskazujący bieżącą pozycje w tekście, w której mogą być wstawiane lub kasowane znaki.
Sposób pracy z edytorem vi jest nieco inny niż w wielu innych edytorach, szczególnie tych znanych ze środowiska systemu DOS. Przede wszystkim posiada on dwa podstawowe tryby pracy:
• tryb poleceń (po naciśnięciu klawisza Esc);
• tryb pisania/wstawiania tekstu (po wprowadzeniu polecenia Esc-i).
W trybie poleceń naciśnięcie klawisza nie jest interpretowane jako kolejny znak tekstu, lecz jako polecenie dla edytora. W drugim trybie znaki odpowiadające naciskanym klawiszom pojawiają się w tekście wyświetlanym na ekranie.
Tuż po uruchomieniu edytor znajduje się w trybie poleceń. Żeby rozpocząć wpisywanie znaków, należy nacisnąć klawisz i (ang. insert modę). Aby wykonać cokolwiek innego niż wpisywanie znaków, należy nacisnąć klawisz Esc, aby powrócić do trybu poleceń oraz klawisz z literą oznaczającą odpowiednie polecenie. Małe i wielkie litery są rozróżnialne.
Esc i — wejście w tryb wstawiania znaków (ang. inserl);
Esc — wejście w tryb poleceń edytora vi;
Esc : — wejście w tryb poleceń edytora ex.
W trybie wstawiania można wprowadzać tekst w pozycji bieżącej, wyznaczonej aktualnym położeniem kursora.
Tryb poleceń, włączany po naciśnięciu klawisza Esc i klawisza z jedną z niżej wymienionych liter, umożliwią:
• włączenie trybu wstawiania znaków:
i, a — wstawianie znaków przed/za kursorem;
l, A — stawianie znaków na początku/końcu wiersza;
• przemieszczanie kursora po tekście:
h, j, k, l — o jedną pozycję: w lewo, w górę, w dół, w prawo;
w, W — o słowo w prawo z/bez uwzględniania znaków interpunkcji;
b, B — o słowo w prawo z/bez uwzględniania znaków interpunkcji;
O, $ — na początek/koniec wiersza;
"F, ^ — o jeden ekran do przodu/tyłu;
1G, G — na początek/koniec pliku;
H — na początek ekranu;
(dla większości terminali można tak zdefiniować ich opis w bazie /usr/lib/terminfo aby do poruszania kursorem były dostępne klawisze strzałek oraz PgUp i PgDn);
• kasowanie znaków:
x — kasowanie bieżącego znaku (w pozycji kursora);
dw — kasowanie słowa na początku którego stoi kursor;
dd — kasowanie bieżącego wiersza tekstu;
D, d$ — kasowanie od kursora do końca wiersza;
d0 — kasowanie od kursora do początku wiersza;
• zastępowanie znaków:
r — znaku w pozycji kursora;
R — kolejnych znaków, począwszy od pozycji kursora;
• odtwarzanie skasowanych znaków:
u — anulowanie ostatniej operacji kasowania;
U — odtworzenie wiersza w jego poprzednim miejscu;
p — odtworzenie ostatniego kasowania w pozycji bieżącej;
• łączenie wierszy tekstu:
J — dołączenie następnego wiersza na końcu wiersza bieżącego;
• powtórzenie polecenia:
— (kropka) powtórzenie ostatnio wykonanego polecenia edytora vi;
• szukanie znaku w wierszu:
f, F — szukanie znaku w wierszu w kierunku jego końca/początku;
; — szukanie następnego wystąpienia wzorca tekstu;
• szukanie napisu wg. podanego wzorca tekstu:
/wzorzec — szukanie napisu w kierunku końca pliku;
?wzorzec — szukanie napisu w kierunku początku pliku;
n, / — szukanie następnego wystąpienia napisu;
wzorzec szukanego napisu może być „wyrażeniem regularnym" (rozdział 5.5);
• zastępowanie fragmentów tekstu:
:1,$S/stary/nowy/gc —zastąpienie w całym buforze (pliku) napisu określonego przez argument stary na napis określony przez argument nowy, z wyprowadzaniem zapytania, czy dokonać w danym przypadku zamiany;
:S/Stary/nowy — zamiana napisu w ramach wiersza.
Zakres wierszy objętych działaniem polecenia zamiany jest podawany po
dwukropku przed literą s:
1 ,$ — od pierwszego wiersza pliku do ostatniego (cały plik);
1,. — od pierwszego wiersza pliku do wiersza bieżącego (.);
.,$ — od bieżącego wiersza do końca pliku;
% — cały plik;
5,20 — wiersze od 5 do 20 włącznie.
Na końcu polecenia zamiany po znaku / mogą wystąpić modyfikatory:
g — (ang. global) wszystkie wystąpienia w wierszu;
c — (ang. confirm) z potwierdzaniem zamiany.
Tryb komend edytora ex uzyskujemy naciskają klawisz Esc i : (dwukropek). W trybie tym w lewym dolnym rogu ekranu, na początku linii komend, wyświetlony zostaje znak :, po którym można wprowadzać komendy, przy czym: znak wykrzyknika (!), umieszczony za ostatnim znakiem niektórych komend (na przykład x, w. q), oznacza wykonanie komendy bez względu na kod ochrony pliku.
• kończenie edycji i zapamiętywanie edytowanego tekstu:
:w — zapamiętanie edytowanego tekstu w pliku o tej samej
nazwie, co nazwa pliku w wywołaniu edytora, bez
opuszczania edytora;
:w inny_plik — zapamiętanie edytowanego tekstu w innym istniejącym tub
nowym pliku;
:q — wyjście z edytora, jeżeli nie wykonano żadnej zmiany
w tekście;
:q! — wyjście z edytora bez zapamiętywania dokonanych zmian;
:x — zapamiętanie tekstu w pliku wskazanym w wywołaniu
edytora i wyjście z niego;
• komendy ogólne:
:!cmd — wykonanie polecenia shella, wskazanego przez cmd;
:set — wyświetlenie bieżących opcji edytora;
:set all — wyświetlenie wszystkich dostępnych opcji;
:set wm=n — ustawienie długości wiersza tekstu, (prawego marginesu:
ang. wrap marsili}', :set number — włączenie wyświetlania numerów wierszy.
Opisane powyżej komendy edytora vi to jedynie skrawek jego pełnych możliwości. Ich pełny opis (kilkadziesiąt stron) można uzyskać wprowadzając polecenie:
man vi
Opis ten można zapamiętać w pliku:
man vi > plik
a następnie wydrukować poleceniem Ip plik, uzyskując pełną dokumentację edytora.
3.4.2. Edytor emacs
Edytor emacs (od ang. editor macros) jest uważany za znacznie prostszy w użyciu niż edytor vi. Przede wszystkim nie wymaga od użytkownika, aby pamiętał czy edytor znajduje się w danej chwili w trybie poleceń, czy wprowadzania tekstu. Nie stanowi standardowego wyposażenia Unixa, ale jego popularna niekomercyjna wersja emacs jest rozprowadzana za darmo (są dostępne również jego wersje komercyjne).
Wywołanie:
emacs nazwa_pliku
Wprowadzane znaki są zapamiętywane w tekście a polecenia są wprowadzane przez naciśnięcie sekwencji CtrI-znak lub Esc-znak. Oto niektóre komendy edytora emacs:
CtrI-B/F/N/P — (lub klawisze strzałek) — przesunięcie kursora o jedną pozycję:
w tył, w przód, w dół, w górę;
CtrI-A — przesunięcie kursora na początek wiersza;
CtrI-E — przesunięcie kursora na koniec wiersza;
Esc < — przesunięcie kursora na początek pliku;
Esc > — przesunięcie kursora na koniec pliku;
Ctrl K — skasowanie do końca wiersza (i zapamiętanie w buforze);
Ctrl D — skasowanie bieżącego znaku (wskazanego kursorem);
Ctrl Y — wstawienie zawartości bufora;
Esc D — skasowanie do końca słowa;
Ctrl-X CtrI-C — wyjście z edytora;
Ctrl-X CtrI-S — zapis w pliku.
3.4.3. Edytor Mix Edit
Mix Edit (me) jest edytorem napisanym w polskiej (katowickiej) firmie KaNet i rozpowszechnianym w kilku krajach. Przypomina on dosowego Norton Edytora (ne), z tym że cechuje go znacznie większa funkcjonalność oraz pełne dopasowanie do pracy w warunkach systemu wieloużytkownikowego jakim jest Unix. Ponieważ wzmiankowany tutaj edytor udostępnia obszerną podpowiedz (ang. help), a jego pierwowzór (ne) jest zapewne dobrze znany czytelnikowi, nie będzie on w tym podręczniku szerzej opisywany.
3.5. Drukowanie plików
Drukowanie plików w systemie Unix jest obszernym tematem, wynikającym z możliwości jednoczesnej obsługi wielu drukarek różnych typów. Temat ten jest rozwijany w kolejnych rozdziałach podręcznika. W tym miejscu warto jedynie zasygnalizować to, że każda zainstalowana drukarka otrzymuje w Unixie swoją systemową nazwę, używana w poleceniach dotyczących obsługi wydruków.
Istniejący plik tekstowy, np. przygotowany jednym z wcześniej opisanych edytorów, może być skierowany do wskazanej drukarki następującym poleceniem:
Ip [-d nazwa_drukarki] nazwa_pliku
Jeżeli nazwa drukarki zostanie pominięta, wydruk zostanie zrealizowany na drukarce domyślnej, ustalonej przez administratora systemu.
Obszerne informacje dotyczące obsługi wydruków podano w rozdziałach 6 i 11.