При регистрации пользователя ему назначается администра-
тором собственный каталог пользователя (Home directory).
Узнать его имя можно так:
$ pwd (print working directory)
/users/mary
Выводится полное имя рабочего (текущего) каталога
/users/mary, где users - имя охватывающего каталога в иерар-
хии каталогов ФС. Еще один охватывающий каталог root подра-
зумевается по умолчанию (корневой главный каталог):
root/users/mary = /users/mary.
Изменение текущего каталога можно сделать командой cd,
рассматриваемой позже.
$ ls - печать текущего каталога;
$ ls -al -a(all) - все файлы и подкаталоги;
-l(long) - полную информацию;
$ ls / - печать каталога root;
$ ls -l / - печать каталога root полная.
- 8 -
Как правило, корневой каталог имеет следующую структуру,
но администратор системы может изменять эту структуру.
--------- ? / ? --------- ? ---------+--------+--------+--------+--------+--------- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------- ------- ------- ------- ------- ------- ------- ? dev ? ? lib ? ? bin ? ? usr ? ? etc ? ? tmp ? ?users? ------- ------- ------- ------- ------- ------- ------- специ- библио- часто ? команды вре- каталоги альные теки исполь- ? админи- менные пользова- файлы (под- зуемые ? стратора файлы телей прогр.) команды ? ? ---------+--------- -----+---- ? ? ? ? ------- ------- ------- ------- ? lib ? ?games? ? bin ? ?peter?------ ------- ------- ------- ------- библио- игры редко теки используемые команды
Каталоги можно посмотреть командой ls:
$ ls -l /bin - часто используемые команды;
$ ls -l /bin/bin - редко используемые команды;
$ ls /dev - драйверы устройств;
$ ls /users - каталоги пользователей.
- 9 -
Изменение рабочего каталога производится командой
(cd - change directory).
$ cd /etc
$ ls -l - печать команд администратора
$ cd /usr
$ ls -l bin - редко используемые команды
$ cd - без параметров - возврат к собственному
(home) каталогу.
Малые и большие буквы считаются различными. Символы . и _
разрешены только внутри имени. Тип файла указывается оконча-
нием имени точкой с символом (основные):
.c - программа на C (например, program.c);
.h - текст на C, включаемый в программу на C (header);
.f - программа на языке ФОРТРАН;
.p - программа на языке ПАСКАЛЬ;
.o - объектный код, полученный транслятором с любого языка;
.a - библиотечный (архивный) файл.
- 10 -
Команда cat (от concatenate) - сцепить несколько (или
один) файлов и направить результат на стандартный вывод
(Standart Output), обычно на экран дисплея.
Пример:
$ cat /etc/motd - посмотреть файл (message of today)
The system will down at 17:00.
Этот файл, создаваемый администратором для текущих объяв-
лений, обычно печатается автоматически при входе в систему
(login). Если Вы забыли его содержание, можно напечатать еще
раз как в примере.
Команда tail печатает конец файла. По умолчанию - 10 пос-
ледних строк:
$ tail /usr/pub/greek
.
.
.
.
Явно можно задать количество (со знаком -) или номер
строки, от которой печатать до конца (со знаком +):
$ tail -3 /usr/greek - три последние строки;
$ tail +6 /usr/greek - последние строки, начиная с 6-й.
- 11 -
Применяется команда 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-программы.
Ваш рабочий каталог, являющийся корнем вашей ветви ФС,
создается администратором. Вы можете создать нижележащие ка-
талоги командой 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 -
Это простейший способ создать файл:
$ 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).
Эта команда переносит файл или каталог из одного места
файловой системы в другое. Побочный эффект - переименование
(если исходный и конечный каталоги совпадают).
Отличие от копирования: исходный файл пропадает.
Пример: $ 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 может быть перенесено несколько
файлов, если "второй" аргумент - каталог.
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 * - уничтожить все поддерево.
Пустой каталог удаляется (remove directory):
$ rmdir progs
[rmdir:progs not empty] - сообщение, если каталог не
пуст.
Метасимволы служат для подстановки любых строк и симво-
лов. В именах файлов в командах языка заданий 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
Символы со знаком 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*
$
Теперь файл удален.
Каждый файл и каталог имеют владельца - обычно это поль-
зователь, создавший их в первый раз. Владелец может затем
назначить защиту файла со стороны трех классов пользовате-
лей:
- владелец (сам);
- группа - пользователи этой же группы, где владелец;
- остальные - все, имеющие доступ к системе.
Каждый файл имеет 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
...
Эта команда показывает режимы доступа.
Формат команды 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,
Другие пользователи, не входящие в группу, потеряли право
читать файлы.