Автор: Пользователь скрыл имя, 21 Февраля 2013 в 20:34, доклад
Файловая система – это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными.
Под файлами понимается логически связанная совокупность данных, ассоциированная с носителем информации и внешним устройством. Файл является абстрактным понятием, и его свойства не зависят от носителя информации.
Работа с файлами и каталогами
Понятие файла и файловой системы
Файловая система – это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными.
Под файлами понимается логически связанная совокупность данных, ассоциированная с носителем информации и внешним устройством. Файл является абстрактным понятием, и его свойства не зависят от носителя информации.
Информация на носителях информации может храниться только в виде файлов. Однажды созданный файл становится независимым от процесса, пользователя и системы, создавшей его.
Каждый файл
характеризуется некоторым
Файловая система хранит информацию о каждом файле в структуре, называемой индексным дескриптором. Каждый индексный дескриптор содержит около 40 полей, в том числе имя файла, тип, размер, количество жестких ссылок, информацию о владельце файла, о правах доступа к нему, дату/время последней модификации файла и дату/время последнего доступа к нему. Именно с индексным дескриптором работает ОС при обращении к файлу.
Типы файлов
В операционной системе (ОС) Unix поддерживаются несколько типов файлов:
Структура файловой системы Unix
Файловая система ОС Unix имеет иерархическую (древовидную) структуру, основанием которой является корневой каталог, который имеет имя /. Корневой каталог файловой системы Unix всегда один. Расположение файлов в файловом дереве не определяется их расположением на том или ином физическом или логическом диске. Файловые структуры, находящиеся на различных дисках, в том числе на дисках других компьютеров, с помощью специальной команды (mount) монтируются на файловое дерево Unix, становясь частью единого файлового дерева. Все операции над файлами с точки зрения пользователя выполняются одинаковым образом, независимо от их физического месторасположения.
Kорневой каталог Unix обычно содержит такие каталоги, как:
bin |
для наиболее используемых команд; |
boot |
загрузчик операционной системы; |
dev |
для специальных файлов, представляющих устройства (дисплеи, диски, CD-ROM, принтеры и т.п.); |
etc |
для хранения большинства конфигурационных файлов системы; |
home |
для хранения домашних каталогов пользователей; |
lib |
важнейшие библиотеки; |
mnt |
для подключения новых файловых систем; |
tmp |
для хранения временных файлов; |
usr |
содержит каталоги и обычные файлы,
содержащие информацию, привлекаемую
при решении задач |
var |
содержит буферные каталоги, файлы регистрации, учетную информацию, базы данных и другие данные, которые быстро разрастаются и изменяются. |
Последовательность имен каталогов, разделенных символом «/», ведущая от некоторого каталога к каталогу, в котором располагается данный файл, называется маршрутом к этому файлу. Последовательность имя_маршрута/имя_файла называется путевым именем файла. Если путевое имя отсчитывается от корневого каталога, оно называется абсолютным (полным), в противном случае – относительным.
Например, каталог /usr, кроме прочего, содержит такие каталоги, как:
bin |
хранит дополнительные команды; |
include |
хранит фрагменты системных |
lib |
хранит дополнительные библиотеки. |
Полные имена этих каталогов будут такими: /usr/bin, /usr/include и /usr/lib
Если в каталоге /usr/bin содержится файл perl, то полное имя файла perl будет таким: /usr/bin/perl
Если же пользователь в данный момент находится в каталоге /usr файловой системы и ему необходимо открыть файл /usr/include/sys/conf, то он может обратиться к этому же файлу по относительному имени: include/sys/conf
Существует два специальных имени:
. |
это имя текущего каталога; |
.. |
это имя родительского каталога (т.е. каталога, находящегося на уровень выше данного на пути к корневому каталогу). |
В качестве имен файлов, как правило, может использоваться любая последовательность из букв, цифр и спецсимволов, кроме символа «/». Причина этого ограничения очевидна: данный символ используется как разделитель имен в составе пути, поэтому не должен встречаться в самих именах. Длина имени ограничивается 256 символами. Прописные и строчные буквы в именах файлов различаются. Например, файл myfile и файл myFile – это разные файлы. Имя файла может включать в себя расширение, обычно используемое для указания на тип файла. Расширение определяется как часть имени файла, располагающаяся после последней точки. Файлы, имена которых начинаются с точки, являются скрытыми.
Есть несколько символов, допустимых в именах файлов и каталогов, которые нужно использовать с осторожностью. Это так называемые спецсимволы: «*», «\», «&», «<», «>», «;», «(«, «)», «|», а также символы пробела и табуляции. Дело в том, что эти символы имеют специальное значение, поэтому нужно будет специально позаботиться о том, чтобы эти символы воспринимались как часть имени файла или каталога. Для этого необходимо предварить спецсимвол символом «\» (обратный слэш).
Шаблоны подстановки
Используя специальные символы, можно формировать шаблоны имен файлов.
* |
соответствует любой (возможно, пустой) последовательности символов |
? |
соответствует точно одному любому символу |
[ ] |
используются для
|
! |
используется для отрицания |
Примеры:
f* |
соответствует файлам с именами, начинающимися с буквы f |
*f* |
соответствует файлам с именами, содержащими букву f |
program.? |
соответствует файлам с именами program, имеющими однобуквенные расширения |
??[a-d]* |
соответствует файлам с именами, в которых третьей буквой является a, b, c или d |
[!A-Z]*[2468] |
соответствует файлам с именами, не начинающимися
с большой буквы и |
Если в имя файла должен входить какой-либо спецсимвол, то при указании шаблона этот спецсимвол необходимо предварять с помощью обратного слэша («\»), или экранировать, например:
[AEIOUYaeiouy]\*??? |
соответствует файлам с именами, начинающимися с гласной буквы, за которой следует символ *, а за ней – три произвольных символа |
При использовании диапазонов символов следует учитывать, что они могут зависеть от выбранных настроек локализации. Например, диапазон [b-e] означает символы от b до е включительно. В английском языке, где сортировка букв идет по порядку (ABC…XYZabc…xyz), указанному набору соответствует набор символов b, c, d, e. Согласно правилам русского языка, сортировка тех же символов идет в другом порядке (аАбБвВ…эЭюЮяЯaAbBcC…xXyYzZ) и тому же диапазону соответствуют символы b, B, c, C, d, D, е. Для решения таких проблем имеются объявления некоторых классов и категорий символов:
[:upper:] |
Латинские буквы верхнего регистра |
[:lower:] |
Латинские буквы нижнего регистра |
[:alpha:] |
Латинские буквы верхнего и нижнего регистров |
[:alnum:] |
Латинские буквы верхнего и нижнего регистров, цифры |
[:digit:] |
Цифры |
[:xdigit:] |
Шестнадцатеричные цифры |
[:punct:] |
Знаки пунктуации |
[:blank:] |
Пробел и табуляция |
[:space:] |
Символы пропуска (пробел, табуляция, перевод каретки, перевод строки и т.п.) |
[:cntrl:] |
Управляющие символы (клавиша [Ctrl]+символ) |
[:graph:] |
Символы печати |