При регистрации пользователя ему назначается администратором собственный каталог пользователя (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 полная. |
Как правило, корневой каталог имеет следующую структуру, но администратор системы может изменять эту структуру.
Каталоги можно посмотреть командой ls:
| $ ls -l /bin | - часто используемые команды; |
| $ ls -l /usr/bin | - редко используемые команды; |
| $ ls /dev | - драйверы устройств; |
| $ ls /users | - каталоги пользователей. |
Изменение рабочего каталога производится командой (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 | - библиотечный (архивный) файл. |
Команда 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-й.
Применяется команда 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).
Типичная структура каталогов пользователей (с учетом групп):
Для создания такой структуры следует выполнить команды:
$ cd - вернуться "домой" (home); $ mkdir progs texts - создать каталоги в home; $ cd progs - перейти в каталог progs; $ mkdir c p f - создать каталоги в progs и так далее.
Это простейший способ создать файл:
$ 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 ....
Если файл назначения защищен от записи, то система печатает режим доступа и спрашивает подтверждение переноса.
Пример:
$ 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)
Можно удалить одной командой 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). |
Примеры:
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 $ rm s* $
Теперь файл удален.
Каждый файл и каталог имеют владельца - обычно это пользователь, создавший их в первый раз. Владелец может затем назначить защиту файла со стороны трех классов пользователей:
Каждый файл имеет 3 вида разрешения на доступ:
Все комбинации трех видов разрешения доступа для трех классов пользователей (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 | |
| = - назначить | |
| + - добавить | |
| - - отнять |
Пример:
$ 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,
Другие пользователи, не входящие в группу, потеряли право читать файлы.