Opis pliku w katalogu oprócz nazwy zawiera szereg innych ważnych informacji. Pora na zapoznanie się z nimi. Musimy też nauczyć się drukować pliki oraz zachowywać ich archiwalne kopie.
Jak już wiemy, informację o zawartości katalogu można użyskać poleceniem ls. Wywołane bez opcji wyświetla ono na ekranie wyłącznie wykaz nazw plików i podkatalogów. Więcej informacji o plikach i podkatalogach można uzyskać używając opcji -l.
$ pwd /home/student1 $ ls -rw-r--r-- 1 student1 other 127 Jan 12 12:25 postacie -rw-r--r-- 1 student1 other 63 Jan 12 12:34 przybysze -rw-r--r-- 1 student1 other 190 Jan 12 12:52 wszyscy -rw-r--r-- 1 student1 other 341 Jan 13 11:43 zwrotka $ _
Każda linia opisuje pojedynczy plik. Co oznaczają poszczególne jej składowe? Pierwszy znak podaje typ pliku, myślnik oznacza zwyczajny plik. Następne 9 znaków opisuje uprawnienia poszczególnych użytkowników do używania pliku. Do uprawnień wrócimy za chwilę. Następne składniki opisu pliku to kolejno liczba dróg dostępu do pliku (nie będziemy wyjaśniać tego pojęcia), identyfikator właściciela pliku, identyfikator grupy dysponującej plikiem, rozmiar pliku w bajtach (czyli znakach), data i czas jego ostatniej modyfikacji oraz nazwa.
Omówimy teraz szerzej niektóre składniki. Zacznijmy od grup. Pozwalają one grupować użytkowników w zespoły, wykonujące wspólnie pewne zadanie, dla których wykonania używają współnych zasobów systemowych, takich jak pliki. Użytkownik może należeć do kilku grup równocześnie. Z przynależnością do grupy związane są uprawnienia dostępu do plików, którymi ona dysponuje.
Możemy już teraz pomówić o uprawnieniach. Opisują one operacje, które użytkownik może wykonać na pliku. Istnieją 3 rodzaje uprawnień, opisujemy je poniżej wraz z odpowiadającymi im skrótami
r | prawo do odczytywania pliku |
w | prawo do zapisywania pliku |
x | prawo do wykonywania pliku, tzn. używania jego nazwy jako polecenia |
Osobne uprawnienia przysługują właścicielowi pliku, grupie dysponującej plikiem i pozostałym użytkownikom. W tej właśnie kolejności są one wyświetlane. Brak uprawnienia sygnalizowany jest wypisaniem myślnika zamiast litery oznaczającej uprawnienie. Dla obejrzanego przed chwilą katalogu właściciel wszystkich pokazanych plików (użytkownik o identyfikatorze student1) może je odczytywać i zapisywać, pozostali użytkownicy (także należący do grupy other dysponującej plikami) mogą te pliki tylko odczytywać. Nikt nie może wykonywać tych plików (i nie miałoby to sensu, ponieważ są to teksty, a nie programy).
Zmiany uprawnień dla pliku może dokonać tylko właściciel pliku. Służy do tego polecenie chmod. Jego pierwszy argument opisuje postulowaną zmianę, zaś pozostałe argumenty to nazwy plików, których dotyczy zmiana. Umożliwimy członkom grupy other zapisywanie pliku postacie.
$ chmod g+w postacie $ ls -l -rw-rw-r-- 1 student1 other 127 Jan 12 12:25 postacie -rw-r--r-- 1 student1 other 63 Jan 12 12:34 przybysze -rw-r--r-- 1 student1 other 190 Jan 12 12:52 wszyscy -rw-r--r-- 1 student1 other 341 Jan 13 11:43 zwrotka $ _
Argument opisujący zmianę składa się z trzech znaków. Pierwszy znak opisuje, czyich uprawnień dotyczy zmiana, znaczenie liter jest następujące:
u | zmiana uprawnień właściciela pliku (od ang. user) |
g | zmiana uprawnień grupy dysponującej |
o | zmiana uprawnień innych użytkowników (od ang. other) |
a | zmiana wszystkich uprawnień (od ang. all) |
Następny znak opisuje typ zmiany, może to być
+ | oznacza przyznanie uprawnienia |
- | oznacza cofnięcie uprawnienia |
Ostatni znak podaje rodzaj uprawnienia, którego dotyczy zmiana. Tak więc zapis
g+w
oznacza przyznanie uprawnienia do zapisywania pliku członkom grupy dysponującej.
Obejrzyjmy teraz zawartość innego katalogu.
$ ls /home drwxr-x--- 2 nauczyciel staff 224 Jan 12 10:05 nauczyciel drwxr-xr-x 2 student1 other 146 Jan 13 13:12 student1 drwxr-xr-x 2 student2 other 146 Jan 13 13:07 student2 drwxr-xr-x 2 student3 other 146 Jan 13 13:14 student3 drwxr-xr-x 2 student4 other 146 Jan 13 13:23 student4 drwxr-xr-x 2 student5 other 146 Jan 13 13:02 student5 drwxr-xr-x 2 student6 other 146 Jan 13 12:14 student6 drwxr-xr-x 2 student7 other 146 Jan 13 13:21 student7 $ _
Tym razem w pierwszej kolumnie wystąpiły litery d oznaczające, że dana linia opisuje podkatalog. Dla podkatalogów inne jest nieco znaczenie uprawnienia x. Ponieważ katalog nie może być programem, przyznanie tego uprawnienia oznacza zgodę na przeszukiwanie katalogu i umieszczanie go w ścieżkach.
Wróćmy jeszcze do macierzystego katalogu. Dotychczas poznane wersje polecenia ls nie pokazywały wszystkich plików zawartych w katalogu. Pomijane były systemowe pliki konfiguracyjne, których nazwy rozpoczynają się kropką. Do uzyskania informacji również o tych plikach należy posłużyć się opcją -a.
$ pwd /home/student1 $ ls -a . .. .exrc .profile postacie przybysze wszyscy zwrotka $ _
Widzimy teraz kilka nowych plików, których istnienia nie podejrzewaliśmy. Nazwy . oraz .. umożliwiają używanie znanych nam już nazw domyślnych. Jak widać, nazwy te zapisane są w katalogu.
Plik .profile zawiera profil użytkownika --- ciąg poleceń, wykonywanych automatycznie po zaakceptowaniu zgłoszenia użytkownika, a przed wydaniem przez niego pierwszego polecenia. Najczęściej polecenia te służą ustawieniu zindywidualizowanego środowiska pracy.
$ cat .profile # Profil użytkownika 'student1' PATH=$PATH:/usr/bin/fk:/usr/bin/zoo ARCH=/home/student1 export PATH ARCH news $ _
Linie poprzedzone znakiem # są komentarzami. Pozostałe linie mogą zawierać polecenia do wykonania lub ustawiać parametry środowiska pracy. W profilu wystąpiło polecenie news. Jego wywołanie powoduje wyświetlenie na ekranie informacji bieżących, na przykład o nowościach w systemie operacyjnym.
Środowisko parametryzowane jest dzięki użyciu zmiennych środowiska. Zmienne te są widoczne dla interpretera poleceń, mogą być też przekazywane wywoływanym programom.
Dyrektywa ustawienia zmiennej składa się z nazwy zmiennej, znaku równości oraz tekstu podającego nową wartość tej zmiennej. W tekście tym wolno odwoływać do wartości posiadanych przez zmienne, nazwa zmiennej musi być wtedy poprzedzona znakiem dolara. Do wartości zmiennych można odwoływać się w zwykłych poleceniach Unixa.
$ echo Zmienna ARCH ma wartość $ARCH. Zmienna ARCH ma wartość /home/student1 $ ls $ARCH postacie przybysze wszyscy zwrotka $ _
Również Dyrektyw można również użyć w trakcie normalnej pracy interakcyjnej, tak jak poleceń.
$ OLDARCH=$ARCH $ export OLDARCH $ ARCH=/home/arch $ echo Zmienna ARCH: poprzednio $OLDARCH obecnie $ARCH. Zmienna ARCH: poprzednio /home/student1 obecnie /home/arch $ _
Definiowane zmienne należy poleceniem export określić jako globalne, w przeciwnym razie nie będą one przekazywane do wywoływanych poleceń.
Plik konfiguracyjny .exrc opisuje ustawienie wartości domyślnych dla edytora vi.
$ cat .exrc :set showmode $ _
Podane powyżej ustawienie powoduje wyświetlanie w trakcie pracy edytora informacji o bieżącym trybie pracy --- pojawia się ona w najniższej linii ekranu.
Zawartość plików konfiguracyjnych można modyfikować edytorem --- są to normalne pliki tekstowe.
Pliki oprócz tekstów mogą zawierać inne informacje, na przykład kod programów lub dane sterujące ich pracą, zapisane w postaci binarnej. Plików takich nie należy przeglądać narzędziami do przetwarzania tekstów. Jak przekonać się, z jakiego typu plikiem mamy do czynienia? Należy użyć polecenia file.
$ ls postacie przybysze wszyscy zwrotka $ file postacie ascii text $ file . directory $ file /bin/ls Stripped executable binary $ _
Wykorzystując nabyte umiejętności zapoznajmy się ze strukturą katalogów systemu Unix. Naszą podróż rozpoczniemy od katalogu głównego. Uwaga: zawartości katalogów w poszczególnych instalacjach mogą się nieco różnić, zasady jednak pozostają te same.
$ cd / $ pwd / $ ls -x bin dev etc home usr unix unix.bak $ _
Katalog główny oprócz podkatalogów zawiera kilka plików. Najważniejszy z nich to plik unix --- właściwy program systemu operacyjnego (a dokładniej jego jądra), mogący (zależnie od producenta systemu) nosić także inne nazwy (np. vmunix).
Podkatalog dev zawiera pliki definiujące urządzenia logiczne używane w systemie. W podkatalogu bin umieszczone są programy podstawowych poleceń. Programy innych poleceń znajdują się w katalogu /usr/bin.
Zarządzaniem drukowaniem w systemie Unix zajmuje się podsystem lp, zwany tak od nazwy swojego podstawowego polecenia. Aby wydrukować plik postacie użyjemy polecenia
$ lpr postacie request id is 2314 (1 file) $ _
Odpowiedź systemu podaje numer zlecenia, nadany mu przez podsystem drukowania. Należy go zapamiętać. Podsystem drukowania gromadzi zlecenia od wszystkich użytkowników. Zlecenia są kolejno drukowane w miarę dostępności drukarek. O stanie swoich zleceń można przekonać się poleceniem lpstat
$ lpr przybysze request id is 2317 (1 file) $ lpstat 2314 student1 Jan 10 12:53 on hp_ljet 2317 student1 Jan 10 12:56 $ _
Polecenie lpstat z opcją -t podaje informacje o stanie podsystemu drukowania.
$ lpstat -t scheduler is running system default destination: hp_ljet device for hp_ljet: /dev/lp hp_ljet accepting requests since Jan 10 7:30 printer hp_ljet now printing 2314, enabled since Jan 10 7:41 2314 student1 Jan 10 12:53 on hp_ljet 2317 student1 Jan 10 12:56 $ _
Archiwizację wybranych plików najłatwiej wykonać poleceniem tar. Archiwa takie mogą być tworzone na dyskietkach albo na taśmach magnetycznych. My użyjemy dyskietki.
$ tar -cf /dev/fd0 postacie przybysze OK $ _
Opcja -c oznacza żądanie utworzenia nowego archiwum. Opcja -f podaje nazwę urządzenia, na którym zostanie umieszczone tworzone archiwum, w tym przypadku jest to pierwsza (być może jedyna) stacja dyskietek. Pozostałe argumenty są nazwami plików, które należy umieścić w archiwum. Jeśli chcielibyśmy otrzymać więcej informacji o tworzonym archiwum, należy użyć opcji -v.
Aby skopiować pliki z archiwum do bieżącego katalogu, polecenie tar należy wywołać z innymi opcjami.
$ tar -xf /dev/fd0 postacie OK $ _
Jako argumenty podajemy nazwy tych plików, które pragniemy odzyskać z archiwum. Brak argumentów spowoduje odzyskanie wszystkich plików.
Zawartość archiwum oglądamy używając
$ tar -tf /dev/fd0 postacie przybysze $ _