Введение в UNIX

Дегтярев Е.К.

Оглавление

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 полная.

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          - каталоги пользователей.

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 - библиотечный (архивный) файл.

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-й.

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|   . . .   каталоги групп
----------           ----------
    |                     |
    |                     ------------------
    |                              . . .
    --+--------------------+-------------------------------
      |                    |
  ----------           ----------        корневые катало-
  |  mary  |           |  peter |        ги пользователей
  ----------           ----------        группы group1
      |
      -+------------------------+------------
       |                        |
  ----------                ----------  внутренние каталоги
  |  progs |                |  texts |  пользователе, соз-
  ----------                ----------  даваемые по mkdir
       |                        |
       |                        ----------
      -+----------+----------------      |
      |           |               |      |
   ---------- ----------      ---------- |
   |    c   | |   p    |      |    f   | |
   ---------- ----------      ---------- |              |- ф
       |          |               |      |  ----------  |- а
     --+--      --+--           --+--    ---|letters |--+- й
     /////      /////           /////       ----------  |- л
     файлы      файлы           файлы                   |- ы

   Для создания такой структуры следует выполнить команды:
   $ cd                          - вернуться "домой" (home);
   $ mkdir progs texts           - создать каталоги в home;
   $ cd progs                    - перейти в каталог progs;
   $ mkdir c p f                 - создать каталоги в progs
и так далее.

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 ....
   Если файл назначения защищен от записи,  то система печа-
тает режим доступа и спрашивает подтверждение переноса.

   Пример:
   $ 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)
   Можно удалить одной командой 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).

   Примеры:
   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
   $ rm s*
   $
   Теперь файл удален.

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

В начало страницы

   Каждый файл  и каталог имеют владельца - обычно это поль-
зователь,  создавший их в первый раз.  Владелец может  затем
назначить  защиту  файла со стороны трех классов пользовате-
лей:
   - владелец  (сам);
   - группа - пользователи этой же группы, где владелец;
   - остальные - все, имеющие доступ к системе.

   Каждый файл имеет 3 вида разрешения на доступ:
   - чтение  (r)  read  - можно читать (смотреть) содержимое
                             файла или  каталога  (читать  с
                             ключом -l в ls);

   - запись  (w)  write  - можно менять содержимое файла или
                             каталога (создавать или удалять
                             файлы в каталоге);

   - выполнять  (x)  execute - использовать файл как команду
                             UNIX и искать (search) в  ката-
                             логе.
   Все комбинации трех видов  разрешения  доступа  для  трех
классов  пользователей (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
   = - назначить
   + - добавить
   - - отнять
   
   Пример:
   $ 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,
   Другие пользователи, не входящие в группу, потеряли право
читать файлы.

В начало страницы


<<< Оглавление Страницы: 4  5 >>>