Забродин УНИХ основы командного интерфейса 2010
.pdf$date>fil1 $date>>fil2 $>fil3
< – команда для переадресации файла вместо клавиатуры $write ira<fil4
Вопросы для самоконтроля
1.Идеология и основные характеристики ОС UNIX.
2.Состав и структура ОС UNIX. Назначение систем и подсистем ОС.
3.Понятие, разновидности и функции оболочек ОС UNIX.
4.Понятие среды пользователя и средства её настройки. Пример.
5.Процедура авторизации пользователя в системе UNIX. Назначение. Результаты авторизации.
6.Команды для связи пользователей системы UNIX. Особенности их использования. Примеры.
7.Режим электронной почты. Организация и особенности работы.
8.Перенаправление ввода-вывода данных в командных строках ОС UNIX. Назначение. Примеры использования.
31
3.ФАЙЛОВАЯ СИСТЕМА UNIX
3.1. ФАЙЛЫ UNIX
Файл — единица информации, поименованный набор логически связанных данных (таблицы, программа, текст и пр.)
Обращение к файлу по его уникальному имени (собственное имя файла), структура имени:
имя_файла[.тип].
«Тип» может характеризовать стандартный тип информации, содержащейся в этом файле, его принадлежность и пр.
Файлы стандартного типа строят обрабатывающие программы, которые не входят в состав ОС, а являются системным программным обеспечением. Обрабатывающие программы используются на соответствующих последовательных этапах обработки программы, написанной на одном из языков высокого уровня (например: C, Pascal, Assembler).
Этап 1. Текстовые редакторы вводят текст и строят файлы с исходными текстами программ или текстовые файлы следующих типов:
__________.txt
__________.doc
__________.___
__________.c
__________.pas
__________.asm
В UNIX расширения имен, определяющие тип файла, не обязательны:
___________.
Этап 2. Трансляторы компилирующего типа обрабатывают исходные тексты программ и строят промежуточные файлы объектного типа:
__________.o
Объектные файлы — это разрозненные файлы, не имеющие между собой межмодульных связей и абсолютных адресов, т.е. они не настроены для исполнения в оперативной памяти компьютера
(ОП).
32
Этап 3. Библиотекари — объединяют несколько объектных файлов в единый объектный с целью сокращения перечисления модулей программ при последующей обработке:
________.a
Этап 4. Редактор межмодульных связей (компоновщик) —
вычисляет все межмодульные адреса программы в целом, тем самым строит единый программный модуль, содержащий только относительные адреса. Эта форма программы — загрузочная форма — имеет стандартное имя файла:
a.out
Этап 5. Загрузчик программы в оперативную память (входит в состав ОС) для исполнения. Загрузочная форма текста программы размещается в выделенной супервизором памяти области оперативной памяти (виртуальной памяти) и управление передается в первый байт. Таким образом, процессу данной задачи выделяется квант процессорного времени.
Например, протокол формирования, компиляции и выполнения некоторой С-программы может иметь следующий вид:
$cat |
fil.c |
|
<набор текста программы в файл fil.c> |
||
$cc |
fil.c |
<компиляция текста программы в объектную форму |
fil.o> |
|
|
$lib |
fil.o |
<формирование многомодульной программы |
$link |
fil.a |
библиотечной формы fil.a> |
<редактирование межмотульных связей, формирова- |
||
ние единой программы загрузочной формы a.out> |
||
$a.out |
<загрузка программы и исполнение> |
Независимо от системы программирования все прикладные задачи проходят эти стадии обработки. В интегрированных системах программирования просто эти этапы скрыты от конечного пользователя, и протокол работы с ОС может иметь следующий вид:
$cat fil $fil.c
Факт работы обрабатывающих программ можно определить по наличию исходного имени файла программы со стандартными расширениями в текущем каталоге.
33
Все обрабатывающие программы в процессе своего выполнения формируют собственный протокол работы в файл:___________.lst Все файлы имеют собственные описатели (дескрипторы) и хранятся во внешней памяти. Физические адреса файлов на внешней памяти концентрируются в специальных файлах — каталогах. В каталоги включаются также описатели файлов и описатели самого
каталога, так как каталог — тоже файл.
3.2. ГЕНЕРАЦИЯ ИМЕН ФАЙЛОВ
Это одна из функций shell, позволяющая:
-сократить время набора имени файла или списка имен;
-выполнять однотипные операции (команды ОС) сразу над группой файлов.
При необходимости экономного перечисления в командной строке нескольких файлов, имеющих частично совпадающие имена, могут быть использованы так называемые метасимволы:
? — для замещения одного символа; * — для замещения любой цепочки символов; исключение со-
ставляют имена файлов, начинающиеся с точки: шаблон, совпадающий с ними, должен обязательно иметь точку в начале;
[ ] — диапазон для замещения одного символа, совпадающего с одним из перечисленных в квадратных скобках, например:
file[357] — совпадает с каждым из имен: file3, file5, file7; file[3-7] — совпадает с каждым из имен: file3, file4, file5, file6,
file7.
При интерпретации метасимволов shell генерирует список всех реально существующих в системе файлов, имена которых так или иначе совпадают с указанным шаблоном. Если шаблон содержит путь к файлу, то в список попадут только файлы из указанного каталога, по умолчанию — из текущего каталога.
Примеры:
* — все имена, кроме тех, которые начинаются с точки; *.c — все имена с расширением .c ;
[abc]* — все имена, начинающиеся на a, b и c; [a-c]* — эквивалентно предыдущему примеру;
34
ch??k — все имена из пяти символов, включающие явно указанные на тех же самых позициях, что ивуказанномгрупповом имени.
В UNIX имеется дополнительная возможность защиты файлов от несанкционированного доступа посредством использования скрытых имен файлов — “скрытые файлы”. Имена скрытых файлов должны начинаться с точки:
.____________ — имена скрытых файлов и их описатели в каталогах можно посмотреть только используя специальную опцию в команде распечатки листинга каталога (ls -al ). — см. ниже.
3.3. СТРУКТУРА СИСТЕМЫ КАТАЛОГОВ UNIX
Структура системы каталогов UNIX строится в иерархической системе внешней памяти на блочных устройствах.
Рис. 3.1. Структура каталогов UNIX: 1 – коренной каталог системы (строится при инсталяции ОС); 2 – системные каталоги (инсталяция); 3 – каталоги группы пользователей (определяет администратор); 4 – головные (личные) катало-
ги пользователей (строятся при авторизации — HOME-каталоги); 5 – рабочие каталоги и файлы пользователей
35
Некоторые системные каталоги: vmunix — ядро ОС;
bin |
— утилиты оболочки; |
— файлы электронной почты; |
|
dev |
— файлы устройств; |
tmp |
— адреса рабочих пространств памяти пользователей, вы- |
деляемых супервизором памяти ОС по запросам системных вызовов из программ пользователей;
etc |
— файлы администратора; |
home |
— данные головных каталогов всех пользователей сис- |
темы. |
|
В UNIX используется простой способ описания пути к файлу в иерархической системе каталогов —
полное маршрутное имя файла (абсолютное маршрутное): $ cat /home/user/lev/f1
относительные маршрутные имена файлов:
-от головного каталога группы пользователей user/lev/f1;
-от головного (личного) каталога пользователя f1 или lev/f1;
-от текущего (рабочего в данный момент) каталога;
". " — системное имя текущего каталога (скрытый файл);
".. " — системное имя вышележащего каталога (скрытый файл). Например:
если текущий lev – то маршрутное имя файлов:
./f1, или f1, или ./lev1/fil2, или lev1/fil2;
если текущий lev1 —
./fil2, или fil2, или ./f1, или ../../ira/filira
3.4. УПРАВЛЕНИЕ КАТАЛОГАМИ В UNIX
Каталоги — средство организации файлов. Управление каталогами осуществляется средствами командного языка ОС:
-просмотр структуры и содержания системы каталогов;
-создание и удаление каталогов;
-поиск файлов в системе каталогов.
36
При работе с файлами пользователь всегда находится в одном из каталогов, который называется текущим. Для того чтобы определить, какой каталог является в настоящее время текущим, можно запросить абсолютное полное маршрутное имя текущего каталога: pwd — печать полного маршрутного имени текущего каталога
$ pwd /home/user/lev $ _
Для просмотра содержимого листинга каталога служит команда:
ls [-ключи] [имя_каталога]
Ключи используются для определения формата выдачи:
-l — полный (длинный) формат выдачи, перед ним суммарный размер всех перечисленных файлов в килобайтах;
total 127
-а — вывод полного списка файлов, включая скрытые, т.е. имена которых начинаются с точки (в том числе файлы . и ..);
-C — вывод имен файлов в несколько колонок с сортировкой по алфавиту вдоль колонок;
и т.п., всего 27 опций.
$ ls -al |
|
|
|
|
|
total 14 |
|
|
|
|
|
drwxrwxrwx |
4 |
lev |
user |
496 Mar 13 13:07 . |
|
drwxrwxrwx 11 |
root |
root |
176 Feb 23 13:47 |
.. |
|
-rwxr-xr-x |
1 |
lev |
user |
152 Mar 13 13:07 |
f1 |
drwxrwxrwx |
3 |
lev |
user |
32 Apr 4 14:52 |
lev1 |
$ |
|
|
|
|
|
Здесь необходимо обратить внимание на то, что любой каталог также является файлом типа "d" с соответствующими правами доступа.
Без ключей команда выводит отсортированные по алфавиту имена файлов и каталогов по одному имени на каждой строке.
37
Элементы каталога (слева направо):
-тип файла (“-“ — обычный, d — каталог , g — сетевой, p — файл программного канала);
-c — файл символьного (байториентированного) внешнего устройства (принтеры, графические устройства и т.д.);
-символьные коды прав доступа к файлам (r,w,x);
-число ссылок на файл (число связей): минимум 1 — для файла, 2 — для каталога;
-владелец файла;
-символьный идентификатор группы пользователя;
-размер файла в байтах;
-время и дата последней модификации файла;
-собственное имя файла.
Стандартный вывод команды можно переадресовать в файл: $ ls>fildir
$
или присоединить к существующему файлу: $ ls>>fildir
$
В текущем каталоге можно размещать как новые файлы, так и новые каталоги, являющиеся подкаталогами по отношению к текущему каталогу. Для создания одного или нескольких подкаталогов применяется команда:
mkdir [-ключи] имя_нового_каталога1 [имя-кат2] — создание каталогов.
-p — создается промежуточный подкаталог, до этого не существовавший (таким образом можно создавать сразу цепочку каталогов).
Вновь созданный каталог не будет абсолютно пустым. Он будет содержать два элемента с символьными именами "." и "..".
Пример: $ mkdir dirа $ mkdir dirb
$
38
В текущем каталоге lev создано два подкаталога dira и dirb со стандартными значениями атрибутов защиты:
$ ls -l |
|
|
|
|
drwxr-xr-x |
2 lev |
user |
32 Mar 4 14:52 |
dira |
drwxr-xr-x |
2 lev |
user |
192 Mar 9 12:53 |
dirс |
Команда mkdir может быть использована и для создания нижележащих подкаталогов по их маршрутным именам непосредственно из текущего каталога (lev):
$ mkdir dirb/dirc $ ls -l dirb
drwxr-xr-x 2 lev user1 196 Mar 9 12:53 dirb $ ls -l dirb/dirc
total 0
$
Для исключения набора длинных маршрутных имен файлов любой каталог может быть объявлен текущим с помощью команды cd [полное_имя_каталога] — смена текущего каталога на указаный
$ cd /home/user/lev/dirb/dirc $ pwd /home/user/lev/dirb/dirc
$
Еще пример: $ cd ../../dira $ pwd
/home/user/lev/dirа
$
Пример создания сразу нескольких новых подкаталогов относительно объявленного текущим каталога dira:
$mkdir -p dird/d1 dird/d2 — одновременно создается несуществующий промежуточный подкаталог dird.
Команда cd без аргументов восстанавливает в качестве текущего начальный (головной) каталог пользователя:
$ cd $ pwd
/home/user/lev $ _
39
Есть некоторые особенности использования команды ls для просмотра содержимого текущего каталога (для вышеприведенной иерархической схемы каталогов):
$ls . – вариант с «точкой» выводит только имена всех файлов и подкаталогов текущего;
dira dirb
$ls * – вариант «все» дополнительно выводит содержимое из нижележащих подкаталогов, но только первого уровня;
dira dird dirb dirc
$
Интенсивная работа в системе требует периодической чистки поддерева каталогов пользователя. Для этих целей используются две команды:
rm список_файлов — удалить указанные файлы; rmdir список_каталогов — удалить пустой подкаталог.
Процедура чистки требует некоторой обязательной последовательности действий:
-удалить все файлы в удаляемом каталоге командой rm;
-удалить сам подкаталог с помощью команды rmdir.
Но существуют некоторые особенности выполнения этих действий:
-без ключей удаляется только один последний каталог в пути;
-действие удаления файлов и самого каталога требует наличия
упользователя прав записи (кода - w) в этот каталог;
-текущий каталог не должен принадлежать поддереву удаляемых каталогов (т.е. невозможно удалить текущий каталог);
-если удаляемый файл защищен от записи, то команда rm запрашивает подтверждение на удаление файла.
Назначение некоторых ключей:
- ключ -i команды rm вводит необходимость подтверждения для каждого удаляемого файла;
40