Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_1_8_Файловая система_пользовательский аспек...doc
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
1.37 Mб
Скачать

Правила именования каталогов и файлов

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

Имя пути поиска необязательно должно начинаться с корня, в нем можно указывать маршрут относительно текущего (для выполняемого процесса) каталога, при этом первый символ "наклонная черта" в имени пути опускается. При движении по иерархии используются специальные символы: либо символ точка, который обозначает текущий каталог, либо две точки, которые обозначают имя вышележащего каталога (Примеры: ./myfile1 ../../dir1/dir2/myfile2).

Пользователь может давать каталогам или файлам любые имена в соответствии со следующими правилами:

  • допустимы все символы, за исключением /;

  • некоторые имена лучше не использовать, такие как пробел, табуляция и следующие: ? " # $ ^ ( ) ; < > [ ] | \ * @ ' ~ &. Если вы воспользуетесь символами пробел или табуляция в имени файла или каталога, то вы должны заключить имя в двойные кавычки в командной строке;

  • избегайте использования знаков "+", "-" или "." в качестве первого символа в имени файла;

  • система UNIX различает большие и малые буквы. Например, система предполагает, что каталог (или файл) названный draft отличается от DRATF.

Пример. memo MEMO section2 raf:list DRAFT

file.d chap3+4 item1_10 outline draft

С труктура каталога

Каталог в UNIX – это особый файл, содержащий информацию о том, какие файлы и/или другие каталоги в него входят.

По существу каталог представляет собой таблицу, каждая запись который соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (номер inode), а второе определяет имя файла (рис. 1).

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

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

Команда ls –i показывает эту таблицу. А ls –l во втором столбце указывает число жестких связей файла.

Жесткие связи и символические ссылки

Как уже говорилось, каталог содержит имена файлов и указатели на их метаданные. Сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе. Такая связь имени файла с его данными называется жесткой связью (hard link). C помощью команды ln можно создать еще одно имя файла (second), на которое указывает имя first (рис. 2): ln first /home/ivan/second .

.

Жесткие связи абсолютно равноправны. В списках файлов каталогов, которые можно получить с помощью команды ls, файлы first и second будут отличаться только именем. Номер inode у них будет один и тот же, а значит и метаданные одни и те же. Все остальные атрибуты будут абсолютно одинаковыми. С точки зрения пользователя – это два разных файла. Но изменения, внесенные в один, затронут и другой, поскольку эти имена ссылаются на одни и те же данные. Легко проверить, что удаление одного из файлов не приведет к удалению самого файла, т.е. его метаданных и данных (если это не специальный файл устройства). ОС сама проверяет, сколько жестких ссылок (имен) у файла и ведет их учет в метаданных каждого файла.

Файлу «безразлично», какие он имеет имена в разных каталогах, но не безразлично число этих имен. Если ни одно имя файловой системы не ссылается на файл, он должен быть удален.

Жесткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файлов.

Особым типом файла является символическая связь, позволяющая косвенно адресовать файл. Команда ln с ключом –s позволяет создать такую связь:

(текущий каталог - /home/alla)

…>ln –s first /home/ivan/second

…>cd /home/ivan

…>ls –l

. . .

lrwxrwxrwx 1 ivan groupe1 13 feb 25 8:05 second ->../alla/first

Здесь файл first адресуется символической связью косвенно (рис. 3). Данные файла, являющегося символической связью, содержат только имя целевого файла (размер этого файла равет всего 13 байт, символ “l” в первой позиции говорит о том чт оэто связь, ограничений на доступ у него нет - rwxrwxrwx). При выводе на экран содержимого этого файла выведencz данные файла /home/alla/first.

Для чего нужны ссылки? Прежде всего, для удобства пользователя. Например, рабочий каталог Open Office – это ~/OpenOffice.org1.0/user/work. Представьте, что каждый раз при переходе в него нужно вводить cd ~/OpenOffice.org1.0/user/work. Намного удобнее создать ссылку work на этот каталог и тогда можно использовать cd work.

Основные команды файловой системы

Рассмотрим кратко основные команды, которые являются фундаментальными в использовании файловой системы.

Четыре системные команды, позволяющие организовывать и использовать структуру каталога:

mkdir создать новый каталог или подкаталог в вашем текущем каталоге;

ls напечатать список имен всех подкаталогов и файлов в каталоге;

cd изменить местоположение пользователя в файловой системе, т.е. перейти из одного каталога в другой;

rmdir удалить пустой каталог. Эти команды могут использовать либо полное имя пути, либо родственное. Две команды могут применяться без имени пути.

pwd