Zaczynamy

W trakcie tej lekcji zapoznamy się ze sposobem rozpoczynania i kończenia sesji w systemie Unix, a także poznamy kilka podstawowych poleceń.

Rozpoczynanie i kończenie sesji

W systemie operacyjnym Unix każdy użytkownik posiada identyfikator i hasło. Nadawaniem identyfikatorów i haseł zajmuje się osoba opiekująca się systemem zwana administratorem. W odróżnieniu od identyfikatora początkowe hasło może być jednak później zmienione przez użytkownika (czyli nas).

Aby rozpocząć pracę należy zgłosić się (ang. log in) do systemu operacyjnego. Zgłoszenie polega na podaniu swojego identyfikatora oraz hasła. Zwykle na ekranie terminala wyświetlane jest zaproszenie do zgłoszenia (ang. login prompt):

login: _
Po napisaniu przez nas na klawiaturze identyfikatora i przyciśnięciu klawisza <Return> system zapyta o hasło:
login: student
Password: _

Wpisywane hasło nie jest wyświetlane na ekranie. Jeśli wszystko przebiegło poprawnie (tzn. podaliśmy identyfikator znany systemowi i właściwe dla niego hasło) na ekranie powinniśmy zobaczyć powitalny komunikat systemowy. Rozpoczyna się on zwykle podaniem daty i czasu. Następnie wyświetlane są bieżące informacje dla użytkowników (tzw. message of the day), po czym pojawia się zaproszenie do pisania polecenia, tzw. monit (ang. prompt):

login: student1
Password:

Mon Jan 11 8:45:00 MEZ 1993

Mamy mało miejsca na dyskach.
Proszę pousuwać zbędne pliki.

$ _

Pojawienie się monitu świadczy o uruchomieniu programu powłoki, obsługującego komunikację użytkownika z właściwym systemem operacyjnym. Podstawową częścią powłoki jest interpreter poleceń, wczytujący linie poleceń i uruchamiający odpowiednie programy dla ich wykonania. Istnieje kilka powłok różniących się głównie składnią zapisu poleceń. W przykładzie powyżej użyto standardowego monitu normalnego użytkownika tradycyjnej powłoki bash.

Monity standardowe mają postać pojedynczych znaków, na przykład dla powłoki bash jest to znak dolara. Monit może także składać z większej liczby znaków. Zmienianie monitu omówimy nieco później.

Jeśli popełniliśmy błąd podczas zgłaszania, to zamiast komunikatu powitalnego zobaczymy na ekranie:

login: Student
Password:
Login incorrect
login: _

Możemy wtedy spróbować powtórnego zgłoszenia. W przykładzie powyżej przyczyną błędu było użycie dużej litery S zamiast małej w identyfikatorze. System Unix (inaczej niż np. MS DOS) jest wrażliwy na poczet liter, tzn. rozróżnia duże i małe litery. Należy o tym pamiętać (uwaga zwłaszcza na klawisz <CapsLock>), ponieważ jest to najczęstszą przyczyną kłopotów osób przyzwyczajonych do innych systemów operacyjnych.

Niebezpieczne jest zwłaszcza napisanie identyfikatora wyłącznie dużymi literami. System przyjmie wtedy, że terminal nie jest wyposażony w małe litery (były kiedyś takie terminale). Od tego momentu wszystkie komunikaty systemowe będą wyświetlane dużymi literami. Najlepiej w takiej sytuacji zakończyć sesję (zaraz powiemy w jaki sposób) i powtórnie zgłosić się do systemu.

W następnej kolejności powinniśmy nauczyć się, jak zakończyć sesję. Aby jednak nie marnować wspaniale rozpoczętej sesji, spróbujmy skorzystać z polecenia who.

$ who
student1   tty1a    Jan 11  8:45
student7   tty3a    Jan 11  8:30
student15  tty8a    Jan 11  8:53
student18  tty4a    Jan 11  8:37
$ _

Służy ono do wyświetlenia identyfikatorów wszystkich aktualnie pracujących użytkowników. Obok identyfikatora użytkownika podany jest identyfikator terminala (w systemie Unix), przy którym pracuje oraz data i czas rozpoczęcia jego bieżącej sesji.

Ponieważ w dużych systemach może pracować równocześnie wielu użytkowników, wyświetlana informacja może nie zmieścić się na ekranie. Istnieje kilka sposobów radzenia sobie z tym kłopotem. Najprostszy z nich to chwilowe wstrzymanie wyświetlania informacji poprzez równoczesne naciśnięcie klawiszy <Ctrl> oraz S. Takie równoczesne naciśnięcie kilku klawiszy nazywać będziemy akordem i zapisywać łącząc ich oznaczenia myślnikiem, w tym przypadku <Ctrl-S>. Po wstrzymaniu wyświetlania możemy obejrzeć tę część informacji, która została do tego momentu wyświetlona. Naciśnięcie <Ctrl-Q> powoduje wznowienie wyświetlania informacji.

Inne sposoby wyświetlania informacji porcjami poznamy później, na razie zaś przejdźmy do kończenia sesji. Aby zakończyć sesję należy użyć polecenia logout. Można też równocześnie nacisnąć klawisze <Ctrl> oraz D. Naciśnięcie <Ctrl-D> powoduje wysłanie pojedynczego znaku (wyświetlanego czasem jako ^D), interpretowanego przez system jako terminator sesji. System powinien odpowiedzieć ponownym wyświetleniem zaproszenia do zgłoszenia:

$ who
student1   tty1a    Jan 11  8:45
student7   tty3a    Jan 11  8:30
student15  tty8a    Jan 11  8:53
student18  tty4a    Jan 11  8:37
$ logout

login: _

Należy wyrobić sobie nawyk kończenia sesji przed każdym dłuższym odejściem od terminala. Pamiętajmy, że obca osoba, która uzyska dostęp do naszej niezakończonej sesji, może zrobić wszystko łącznie ze zmianą hasła i zniszczeniem naszych danych i programów.

Polecenia

Polecenia w Unixie, jakkolwiek zawierają się w pojedynczej linii, mogą mieć bardzo złożoną budowę. Poznaliśmy dopiero ich najprostszą postać, składającą się wyłącznie z nazwy polecenia.

Wróćmy do poznanego polecenia who. Podstawowym jego przeznaczeniem jest informowanie nas o innych użytkownikach. Zwróćmy jednak uwagę, że wyświetla ono również informację o nas samych. Bywa ona nam potrzebna, gdy chcemy poznać identyfikator terminala, przy którym pracujemy. Aby wyświetlić tylko linię opisującą nas samych, musimy użyć:

$ who am i
student1  tty1a    Jan 11  8:45
$ _

Użyliśmy tego samego polecenia who. Tym razem jednak oprócz nazwy polecenia w linii wystąpiły dodatkowo argumenty am i i. Zmieniły one nieco sposób działania polecenia, nie zmieniając jednak jego zasadniczego przeznaczenia.

Większość poleceń Unixa dopuszcza argumenty, niektóre z nich są nawet wymagane, tzn. muszą wystąpić przy każdym wywołaniu polecenia. W przypadku polecenia who tak akurat nie jest, zarówno am jak i i są argumentami opcjonalnymi. Uwaga: nie należy mylić argumentów opcjonalnych z opcjami poleceń (będziemy o nich mówili póżniej)

Prędzej czy później zdarzy nam się popełnić błąd podczas pisania polecenia. Jeśli zdążymy to dostrzec przed wywołaniem (tzn. przed naciśnięciem klawisza <Return>), możemy skorygować linię polecenia używając klawisza <BackSpace>. Zobaczmy, co się stanie, jeśli tego nie zrobiliśmy.

$ vho
vho: not found
$ _

Odpowiedź systemu oznacza, że nie znalazł polecenia o podanej nazwie. Jest to najprostsza reakcja systemu, z innymi możliwościami zapoznamy się później. Na razie wypróbujemy jeszcze kilka poleceń.

Informację o identyfikatorze naszego terminala można uzyskać w inny sposób.

$ tty
/dev/tty1a

Polecenie tty podaje właśnie identyfikator używanego terminala. Osiągnęliśmy więc ten sam efekt co poprzednio. Wiele operacji w systemie Unix można przeprowadzić kilkoma sposobami, osiągając przy każdym z nich pożądany efekt.

$ date
Mon Jan 11 8:45:00 MEZ 1993
$ _

Polecenie date podaje bieżącą datę i czas. Uwaga: polecenie time nie podaje bieżącego czasu!

Hasło należy co pewien czas zmieniać. Służy do tego polecenie passwd. Pyta nas ono najpierw o stare hasło, a po jego akceptacji dwukrotnie wczytuje nowe hasło. Zapobiega to omyłkowemu naciśnięciu błędnego klawisza, ponieważ nowe hasło nie jest wyświetlane.

$ passwd
Old password:
New password:
Retype new password:
$ _

Hasło nie może być zbyt krótkie ani zbyt proste (na przykład takie samo jak identyfikator użytkownika). W każdej instalacji Unixa istnieje procedura sprawdzająca dopuszczalność hasła. Procedura taka odrzuci hasło zbyt łatwe do odgadnięcia. Najczęściej minimalną długością hasła jest 6 znaków, wymagana jest także obecność w haśle co najmniej jednego znaku różnego od litery. Jeśli pomyliliśmy się podczas pisania hasła lub podaliśmy zbyt proste hasło, to hasło nie zostanie zmienione. Możemy wówczas powtórzyć próbę.

Pozornie nieprzydatne w pracy interakcyjnej polecenie echo wyświetla swoje argumenty (w drugim wywołaniu lista argumentów jest pusta).

$ echo moje argumenty
moje argumenty
$ echo

$ echo poniedziałek wtorek środa
poniedziałek wtorek środa

$ _

Podręcznik

Wszystkie polecenia opisane są w podręczniku, występującym w dwóch postaciach. Postać tradycyjna to drukowane książki. Oprócz tego opisy wszystkich poleceń mogą być wyświetlone na ekranie za pomocą polecenia man. Argumentem polecenia powinna być nazwa interesującego nas polecenia, na przykład tty.

$ man tty

TTY(1)              USER COMMANDS               TTY(1)



NAME
    tty - display the name of the terminal

SYNOPSIS
    tty [ -s ]

DESCRIPTION
    tty prints  the  pathname  of  the user's terminal 
    unless the -s (silent) option is given.  In either 
    case, the exit value is zero if the standard input 
    is a terminal, and one if it is not.

OPTIONS
    -s   Silent.  Does not  print  the pathname of the
         user's  terminal.



Sun Release 4.1   Last change: 9 September 1987               1

Wszystkie polecenia są opisane w podręczniku przy użyciu tej samej konwencji. Oto krótki przegląd składowych mogących wystąpić w opisie polecenia.


NagłówekZawartość

NAMENazwa polecenia i jego skrótowy opis.
SYNOPSISSposób wywołania polecenia (składnia).
DESCRIPTIONDokładny opis działania polecenia, z uwzględnieniem wszystkich jego wariantów i rodzajów argumentów.
OPTIONSZnaczenie opcji i ewentualnie postać ich argumentów.
EXAMPLEPrzykłady użycia.
FILESNazwy plików wykorzystywanych lub modyfikowanych przez opisywane polecenie.
SEE ALSOInne pokrewne polecenia.
DIAGNOSTICSWyjaśnienie komunikatów o błędach.
BUGS Zestawienie znanych problemów, błędów w działaniu polecenia, ograniczeń itp.