Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Забродин УНИХ основы командного интерфейса 2010

.pdf
Скачиваний:
159
Добавлен:
16.08.2013
Размер:
1.33 Mб
Скачать

$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

— утилиты оболочки;

mail

— файлы электронной почты;

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