Więcej o plikach

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.

Własności i atrybuty plików

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

rprawo do odczytywania pliku
wprawo 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:

uzmiana uprawnień właściciela pliku (od ang. user)
gzmiana uprawnień grupy dysponującej
ozmiana uprawnień innych użytkowników (od ang. other)
azmiana 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.

Pliki konfiguracyjne

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.

Rodzaje plików

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.

Drukowanie

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 
$ _

Archiwowanie plików

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
$ _