Материал: 396_OS_uchebnoe_posobie_part1_2012

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

указать специальный символ, необходимо перед ним поставить знак «\» (обратный слеш) или заключить имя файла в одинарные или двойные кавычки10. Такой способ также называют цитированием символа. Например,

Имя\ файла\ со\ специальными\ знаками\ \*_и_\?.doc или 'Имя файла со специальными знаками *_и_?.doc' или ”Имя файла со специальными знаками *_и_?.doc”.

Часто при работе в командной оболочке пользователям необходимо в одном имени указать сразу несколько файлов (группу)11. Для этого в имена файлов включаются специальные символы12 «*» (звёздочка), «?» (вопрос), «[]» (квадратные скобки), которые называются символами расширения. Имя, содержащее эти символы, преобразуется командной оболочкой в список имён.

Знак «*» (звёздочка) применяется для того, чтобы указать, что в этом месте имени файла может находиться любое число (включая нуль) любых символов. Например, имя а* определяет все файлы, начинающиеся с буквы «а». Имя *xx*.dat включает любое имя файла, оканчивающееся символами .dat, в имени которого присутствуют буквы «хх». Это могут быть имена abxx.dat, lxx33.dat, xxyyzz.dat или даже xx.dat.

Знаком «?» (вопрос) указывается, что на его месте в имени файла может находиться один (не больше и не меньше) любой символ. Например, имя ???

определяет все файлы, имена которых состоят только из трёх символов. Сгенерировать список имён, окачивающихся тремя символами, отделёнными от остальной части имени точкой, позволяет выражение .???.

«[]» (квадратные скобки) используются для указания множества символов, которые могут находиться в имени файла на том месте, где располагается открывающаяся квадратная скобка. Между скобками указываются необходимые символы или их диапазон (с использованием символа «-» (тире)). Например, имя f[124], соответствует файлам f1, f2, f4. А

имя f[1-4] – файлам f1, f2, f3, f4. Имя f[abc-f] – файлам fa, fb, fc, fd, fe, ff. С

помощью квадратных скобок и знака «-» можно указывать сразу несколько диапазонов символов. Например, [123, 5-8, аbе, А-Е]. Следует отметить, что если символы «*» и «?» указаны внутри квадратных скобок, то они являются обычными символами, а не символами расширения. А символ «-» наоборот имеет смысл диапазона только внутри скобок. Например, имя -[*?]abc будет определять группу из всего лишь двух имён: -*abc и -?abc.

3.2. Система именования файлов. Каталоги. Путь файла

Для структурирования хранимой информации файлы, в свою очередь, объединяются в каталоги (директории или папки), организованные в виде

10Об отличии одинарных кавычек от двойных будет рассказано далее.

11Например, для того чтобы удалить несколько ненужных файлов с похожими именами.

12Эти символы указываются без обратного слеша. Если перед ними поставить обратный слеш, то они потеряют свою функцию символов расширения, а станут просто символом «звездочка», «вопросик», «квадратные скобки».

16

древовидной структуры (дерева). Имя каталога, как и имя файла, – это последовательность символов из заданного алфавита.

Основным каталогом для файловой системы является корневой каталог, обозначаемый символом «/» (слеш). Все остальные файлы и каталоги располагаются в рамках структуры, порождённой корневым каталогом, независимо от их физического местонахождения13.

Чтобы указать, в каком каталоге находится файл, нужно определить его путь – перечень каталогов, которые необходимо пройти до файла. При перечислении каталоги разделяются символом «/» (слеш). Например, путь кат1/кат2/кат3/файл – означает, что файл находится в каталоге кат3, который находится в каталоге кат2, находящемся в каталоге кат1.

Указывать путь файла можно либо относительно (начало пути находится в каком-то каталоге), либо абсолютно (началом пути является корневой каталог). Например, кат1/кат2 – это относительный путь, в котором говорится, что надо перейти в кат1, который находится в текущем каталоге, а затем – в кат2. А /кат1/кат2 – это абсолютный путь, в котором говорится, что надо перейти в кат1, который находится в корневом каталоге, а затем – в кат2.

Для указания в относительном пути текущего или родительского каталога используются символы «.» (точка) и «..» (две точки) соответственно. Путь

./файл означает, что файл находится в текущем каталоге. Путь

../кат2/кат3/файл означает, что файл находится в каталоге кат3, который находится в каталоге кат2, находящемся в родительском (для текущего) каталоге. Можно перемещаться сразу на несколько уровней по дереву каталогов, задавая имя «..» соответствующее количество раз. Например, путь

../../ означает родительский каталог, расположенный на два уровня вверх.

В операционной системе Linux, как и в любой другой ОС, предусмотрен ряд обязательных каталогов:

каталог /bin. В нём находятся наиболее часто употребляемые программы и утилиты системы, как правило, общего пользования;

каталог /dev содержит специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Каталог /dev может содержать несколько подкаталогов, группирующих специальные файлы устройств одного типа;

каталог /etc. В этом каталоге находятся системные конфигурационные файлы и многие утилиты администрирования;

каталог /lib. В нём находятся библиотечные файлы языка Си и других языков программирования. Стандартные названия библиотечных файлов имеют вид lib*.a (или lib*.so). Например, стандартная библиотека Си называется libc.a, библиотека системы Х Window System имеет имя libX11.a. Часть библиотечных файлов также находится в каталоге /usr/lib;

каталог /lost+found. Каталог «потерянных» файлов. Ошибки файловой

системы, возникающие при неправильном выключении компьютера или аппаратурных сбоях, могут привести к появлению так называемых

13 Подробнее о физической организации смотрите ниже.

17

«безымянных» файлов. Структура и содержимое файла являются правильными, однако для него отсутствует имя в каком-либо из каталогов. Программы проверки и восстановления файловой системы помещают такие файлы в каталог /lost+found под системными числовыми именами;

каталог /mnt. Стандартный каталог для временного связывания (монтирования) физических файловых систем с корневой для получения дерева логической файловой системы. Обычно содержимое каталога /mnt зависит от назначения системы и полностью определяется администратором;

каталог /home. Содержит домашние каталоги пользователей. Например, для домашнего каталога пользователя student он будет называться

/home/student;

каталог /usr. В этом каталоге находятся подкаталоги различных сервисных подсистем. /usr/bin – исполняемые утилиты, /usr/local – дополнительные программы, используемые на данном компьютере, /usr/include – заголовочные файлы, /usr/man – электронные справочники и т.д.;

каталог /var. Этот каталог используется для хранения временных файлов различных сервисных программ (системы печати, почтового сервиса и т.п.);

каталог /tmp. Общедоступный каталог. Используется для хранения

временной информации.

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

Например, путь ~/имя_пользователя будет равен пути /home/имя_пользователя.

А путь ~/кат1/файл обозначает файл, находящийся в каталоге кат1, располагающемся в домашнем каталоге текущего пользователя.

3.3.Типы файлов

Взависимости от содержимого в операционной системе Linux различают несколько типов файлов, например:

обычный файл (англ. regular file). Содержит информационные данные. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл, для которой содержимое файла представляется в определённом формате. К этим файлам относятся текстовые файлы, бинарные данные, исполняемые программы и т. п.

специальный файл устройства (англ. special device file). Является интерфейсом для взаимодействия с устройствами вычислительной

18

машины. Различают символьные (англ. character) и блочные (англ. block) файлы устройств. Символьные файлы устройств используются для небуферизированного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины – блоков.

файлы взаимодействия между процессами – именованный канал FIFO (англ. named pipe) и сокет (англ. socket)14.

ссылка (англ. link). Содержит указатель на другой файл или каталог. Операционная система Linux позволяет создавать указатели (ссылки) на файлы или каталоги, которые позволяют одним и тем же файлам иметь несколько имён. Указатели бывают двух типов: жёсткие и символьные (символические). Жёсткие ссылки, по сути, являются именем файла или каталога. Пока существует хотя бы одна жёсткая ссылка, существует и сам файл или каталог. При создании файла для него обязательно создаётся одна жёсткая ссылка. Символьная ссылка является файлом, который содержит лишь путь, указывающий на другой файл или каталог. Если удалить символьную ссылку, то файл, на который она указывает, останется нетронутым. И обратно, если удалить файл, на который указывает символьная ссылка, то она останется, но будет «неразрешённой».

3.4.Атрибуты файлов. Контроль доступа к файлам и каталогам

Кроме имени и содержимого каждый файл и каталог имеет ряд атрибутов, предназначенных для описания его свойств. К атрибутам относятся:

дата и время создания файла;

дата и время последней модификации файла;

пользователь и группа пользователей (используется для организации доступа к файлу или каталогу);

права доступа к файлу или каталогу;

тип содержимого файла;

и т.д.

Атрибуты «Дата и время создания» и «Дата и время модификации» задаются и изменяются операционной системой при создании файла или каталога или их модификации соответственно.

Контроль доступа к файлам и каталогам в операционной системе Linux осуществляется путём указания прав на чтение, запись и исполнение (изменение). Указанные права определяются для трёх типов пользователей – владельца файла, группы пользователей, всех остальных.

Права владельца определяют, что может делать с файлом тот пользователь, которому этот файл непосредственно принадлежит (кто указан в атрибуте «пользователь»). Права группы определяют, что могут делать с файлом члены группы, указанной в атрибуте «группа». И, наконец, права прочих пользовате-

14 Подробнее о способах межпроцессного взаимодействия будет сказано далее.

19

лей определяют возможные действия тех пользователей, которые не принадлежат к предыдущим двум категориям.

Пользователь, имеющий право чтения, может просматривать содержимое файла или каталога. Пользователь, имеющий право записи, может редактировать файл или изменять содержимое каталога. И, наконец, пользователь, имеющий право выполнения, может запускать программу, содержащуюся в этом файле, или делать каталог текущим (переходить в него).

Контрольные вопросы

1.Что такое файл? Какова максимальная длина имени файла в ОС Linux?

2.Что такое расширение? Возможно ли наличие нескольких расширений?

3.В каких случаях необходимо использовать «\» в имени файла?

4.Какие символы расширения Вы знаете? Для чего они используются?

5.Можно ли указывать символы «*» и «?» внутри «[ ]»? Что они значат в том случае?

6.Что такое каталог? Какой каталог является основным для файловой системы ОС Linux?

7.Что такое относительный и абсолютный путь к файлу?

8.Что означают символы «.» и «..» в пути к файлу?

9.Перечислите обязательные каталоги ОС Linux? Для чего они нужны?

10.Какое значение имеет символ «~»?

11.Какие типы файлов различают в ОС Linux?

12.В чём отличие символьных файлов от блочных?

13.В чём отличие жёстких ссылок от символьных? Если удалить символьную ссылку, то удалится ли файл, на который она указывает?

14.Какими атрибутами обладают файлы?

15.Как осуществляется контроль доступа к файлам и каталогам в ОС Linux?

16.Какими правами могут обладать владельцы файла, члены группы и прочие пользователи?

20

Источник: https://studfile.net/preview/16708918/