4. КАТАЛОГИ И ФАЙЛЫ

При регистрации пользователя ему назначается администра-

тором собственный каталог пользователя (Home directory).

 

4.1. Печать рабочего каталога

Узнать его имя можно так:

$ pwd (print working directory)

/users/mary

Выводится полное имя рабочего (текущего) каталога

/users/mary, где users - имя охватывающего каталога в иерар-

хии каталогов ФС. Еще один охватывающий каталог root подра-

зумевается по умолчанию (корневой главный каталог):

root/users/mary = /users/mary.

Изменение текущего каталога можно сделать командой cd,

рассматриваемой позже.

 

4.2. Печать содержимого каталога

$ ls - печать текущего каталога;

$ ls -al -a(all) - все файлы и подкаталоги;

-l(long) - полную информацию;

$ ls / - печать каталога root;

$ ls -l / - печать каталога root полная.

 

 

 

- 8 -

4.3. Структура корневого каталога

Как правило, корневой каталог имеет следующую структуру,

но администратор системы может изменять эту структуру.

                          ---------
                          ?   /   ?
                          ---------
                              ?
   ---------+--------+--------+--------+--------+---------
   ?        ?        ?        ?        ?        ?        ?
   ?        ?        ?        ?        ?        ?        ?
-------  -------  -------  -------  -------  -------  -------
? dev ?  ? lib ?  ? bin ?  ? usr ?  ? etc ?  ? tmp ?  ?users?
-------  -------  -------  -------  -------  -------  -------
 специ-  библио-   часто      ?     команды   вре-   каталоги
 альные  теки      исполь-    ?     админи-   менные пользова-
 файлы   (под-     зуемые     ?     стратора  файлы   телей
         прогр.)   команды    ?                         ?
                     ---------+---------           -----+----
                     ?        ?        ?           ?
                  -------  -------  -------     -------
                  ? lib ?  ?games?  ? bin ?     ?peter?------
                  -------  -------  -------     -------
                  библио-    игры    редко
                  теки            используемые
                                    команды

 

Каталоги можно посмотреть командой ls:

$ ls -l /bin - часто используемые команды;

$ ls -l /bin/bin - редко используемые команды;

$ ls /dev - драйверы устройств;

$ ls /users - каталоги пользователей.

 

 

- 9 -

 

4.4. Изменение рабочего каталога

Изменение рабочего каталога производится командой

(cd - change directory).

 

$ cd /etc

$ ls -l - печать команд администратора

$ cd /usr

$ ls -l bin - редко используемые команды

$ cd - без параметров - возврат к собственному

(home) каталогу.

 

4.5. Соглашения по наименованию каталогов и файлов

 

Малые и большие буквы считаются различными. Символы . и _

разрешены только внутри имени. Тип файла указывается оконча-

нием имени точкой с символом (основные):

.c - программа на C (например, program.c);

.h - текст на C, включаемый в программу на C (header);

.f - программа на языке ФОРТРАН;

.p - программа на языке ПАСКАЛЬ;

.o - объектный код, полученный транслятором с любого языка;

.a - библиотечный (архивный) файл.

 

 

 

 

- 10 -

4.6. Печать содержимого файла

Команда cat (от concatenate) - сцепить несколько (или

один) файлов и направить результат на стандартный вывод

(Standart Output), обычно на экран дисплея.

Пример:

$ cat /etc/motd - посмотреть файл (message of today)

The system will down at 17:00.

Этот файл, создаваемый администратором для текущих объяв-

лений, обычно печатается автоматически при входе в систему

(login). Если Вы забыли его содержание, можно напечатать еще

раз как в примере.

 

4.7. Просмотр конца файла

 

Команда tail печатает конец файла. По умолчанию - 10 пос-

ледних строк:

 

$ tail /usr/pub/greek

.

.

.

.

Явно можно задать количество (со знаком -) или номер

строки, от которой печатать до конца (со знаком +):

$ tail -3 /usr/greek - три последние строки;

$ tail +6 /usr/greek - последние строки, начиная с 6-й.

 

 

 

- 11 -

4.8. Определение типа файла

 

Применяется команда file:

$ file /bin/ls /usr/bin etc/passwd usr/include/stdio.h

/bin/ls: pure executable - исполняемый;

/usr/bin: directory - каталог;

/etc/passwd: ascii text - текст в коде ASCII;

/usr/include/stdio.h:C program text - текст C-программы.

 

4.9. Создание каталога пользователем

 

Ваш рабочий каталог, являющийся корнем вашей ветви ФС,

создается администратором. Вы можете создать нижележащие ка-

талоги командой mkdir (make directory).

Типичная структура каталогов пользователей (с учетом

групп):

                      ----------
                      ?  users ?
                      ----------
                           ?
    ---------------------+-+-------------------------------
    ?                    ?
----------           ----------
? group 1?           ? group 2?   . . .   каталоги групп
----------           ----------
    ?                     ?
    ?                     ------------------
    ?                              . . .

    ?                              - 12 -
    --+--------------------+-------------------------------
      ?                    ?
  ----------           ----------        корневые катало-
  ?  mary  ?           ?  peter ?        ги пользователей
  ----------           ----------        группы group1
      ?
      -+------------------------+------------
       ?                        ?
  ----------                ----------  внутренние каталоги
  ?  progs ?                ?  texts ?  пользователе, соз-
  ----------                ----------  даваемые по mkdir
       ?                        ?
       ?                        ----------
      -+----------+----------------      ?
      ?           ?               ?      ?
   ---------- ----------      ---------- ?
   ?    c   ? ?   p    ?      ?    f   ? ?
   ---------- ----------      ---------- ?              ?- ф
       ?          ?               ?      ?  ----------  ?- а
     --+--      --+--           --+--    ---?letters ?--+- й
     /////      /////           /////       ----------  ?- л
     файлы      файлы           файлы                   ?- ы

 

 

 

Для создания такой структуры следует выполнить команды:

$ cd - вернуться "домой" (home);

$ mkdir progs texts - создать каталоги в home;

$ cd progs - перейти в каталог progs;

$ mkdir c p f - создать каталоги в progs

и так далее.

 

 

 

- 13 -

4.10. Копирование файлов командой cp

 

Это простейший способ создать файл:

$ cp /etc/motd message.

Полагая, что текущий каталог progs/c, мы создали файл

progs/c/message.

Можно копировать файл в текущий или другой каталог, не

меняя его имени: cp /etc/motd progs/c.

Будет создан файл progs/c/motd.

Если текущий каталог progs/c, того же эффекта достигает

команда:

$ cp /ets/motd . (с точкой в качестве параметра).

Если второй аргумент каталог, то в качестве первого

можно указывать несколько файлов:

$ cp /etc/motd /usr/include/stdio.h progs/c

Режим доступа файла - копии совпадает с режимом доступа

исходного файла (см. раздел 4.16).

 

4.11. Перенос и переименование файлов командой mv

 

Эта команда переносит файл или каталог из одного места

файловой системы в другое. Побочный эффект - переименование

(если исходный и конечный каталоги совпадают).

Отличие от копирования: исходный файл пропадает.

Пример: $ mv message mesg

$ ls

mesg ....

 

 

- 14 -

Если файл назначения защищен от записи, то система печа-

тает режим доступа и спрашивает подтверждение переноса.

Пример:

$ cp message mesg

$ chmod 444 message - только чтение

$ mv mesg message

message: mode 444? y

Второй аргумент может быть каталогом, тогда файл перено-

сится под тем же именем:

$ mv message progs/c

$ cd progs.c

$ ls

message ....

Как и в случае cp может быть перенесено несколько

файлов, если "второй" аргумент - каталог.

 

4.12. Удаление файлов командой rm

 

rm удаляет файл из каталога и уничтожает его:

$ cd progs/c

$ rm motd

$ ls

message (нет motd)

 

 

- 15 -

Можно удалить одной командой rm несколько файлов. Есть интерак-

тивный вариант, требующий подтверждения на каждый файл (ключ

-i):

$ rm -i file1 file2

file1 : n (no - нет)

file2 : y (yes - да)

Можно форсировать уничтожение ключом -f (даже если файл

защищен по записи): -f и -i взаимно исключают друг друга.

$ rm -f stdio.h.

Однако этими средствами нельзя уничтожить каталог, пока

не уничтожены все файлы. Это можно сделать рекурсивно: ключ

-r (уничтожить все поддиректории)

$ rm -r progs.

Вариант: $ rm -r * - уничтожить все поддерево.

 

4.13. Уничтожение пустого каталога: rmdir

Пустой каталог удаляется (remove directory):

$ rmdir progs

[rmdir:progs not empty] - сообщение, если каталог не

пуст.

 

4.14. Использование метасимволов *, ?, []

Метасимволы служат для подстановки любых строк и симво-

лов. В именах файлов в командах языка заданий Shell:

* - представляет произвольную строку (возможно, пустую);

? - любой одиночный знак;

[C1 - C2] - любая литера из диапазона C1 - C2 (в стандар-

те ASCII).

 

 

- 16 -

Примеры:

1) $ ls c?

c1 c2 c3 cs cz

2) $ ls c*

c1 c12 c2 c23 c3 cs cs1 cxy cz

3) $ ls ?1*

c1 c12

4) $ ls *1*

c1 c12 cs1

5) $ ls c [12 x y z]

c1 c2 cz

6) ls c [12 x y z *]

c1 c2 c12 c25 cz cxy

 

4.15. Непечатные символы в именах файлов

Символы со знаком control: ^A, ^[ (escape) и т.п., полу-

ченные одновременным нажатием клавиши Ctrl и указанной после

символа ^ клавиши, не видны на печати. Команда ls может по-

казать файл, а rm и другие команды могут не принять имя это-

го файла (т.к. часть символов не видна). Выход - в использо-

вании * в именах (или использование режима rm -i):

$ ls

arron circle square triangle

$ rm square

rm: square non-existent (если вместо q в имени ^q)

$ ls s*

square

 

 

- 17 -

$ rm s*

$

Теперь файл удален.

 

4.16. Владелец файла и защита файла

Каждый файл и каталог имеют владельца - обычно это поль-

зователь, создавший их в первый раз. Владелец может затем

назначить защиту файла со стороны трех классов пользовате-

лей:

- владелец (сам);

- группа - пользователи этой же группы, где владелец;

- остальные - все, имеющие доступ к системе.

 

Каждый файл имеет 3 вида разрешения на доступ:

- чтение (r) read - можно читать (смотреть) содержимое

файла или каталога (читать с

ключом -l в ls);

 

- запись (w) write - можно менять содержимое файла или

каталога (создавать или удалять

файлы в каталоге);

 

- выполнять (x) execute - использовать файл как команду

UNIX и искать (search) в ката-

логе.

 

 

- 18 -

Все комбинации трех видов разрешения доступа для трех

классов пользователей (9 комбинаций) записываются в формате

(если все права есть)

     rwx               rwx                 rwx     или 777
      ?                 ?                   ?
   Владелец             ?                   ?
                      Группа                ?
                                          Остальные

Отсутствие права доступа указывается минусом:

r--r--r- или 444

Пример:

$ ls -l /bin

-r-xr-xr-x 1bin 1986 Nov.26 12:00 ar

...

Эта команда показывает режимы доступа.

 

4.17. Установка и изменение режима доступа к файлу: chmod

Формат команды chmod(change mode) для установки режима:

chmod <режим> <файлы>

Пример:

$ chmod 644 f1 f2 f3

где 644 соответствует rw-r--r--

Формат команды chmod для изменения режима:

chmod <изменения> <файлы>

В изменениях используются обозначения:

u - user r - read

g - group w - write

o - other x - execute

a - all

 

 

- 19 -

= - назначить

+ - добавить

- - отнять

Пример:

$ ls -l

-r-------- ... f1

-r-------- ... f2

-r-------- ... f3

$ chmod a = r, u + w f1 f2 f3

или (эквивалентный вариант изменения прав доступа)

$ chmod u = rw, go = r f1 f2 f3

$ ls -l

-rw-r--r-- ... f1

-rw-r--r-- ... f2

-rw-r--r-- ... f3

$ chmod o-r f1 f2 f3

$ ls -l

-rw-r----- ... f1

-rw-r----- ... f2

-rw-r----- ... f3,

Другие пользователи, не входящие в группу, потеряли право

читать файлы.