Каждая система предполагает наличие составляющих ее элементов. В случае ФС – это файлы. Перечислим их типы.
1. Обыкновенные (регулярные) файлы. Это, конечно, прежде всего, программы. Даже ядро системы Linux относится к этому типу. Но есть и много других, например, файлы настроек, сохраняющие рабочие свойства программ, документы, создаваемые пользователями.
2. Каталоги. Для удобства работы с тысячами и даже сотнями тысяч элементов файловой системы вводится иерархическая система, в основе которой каталоги. Как мы уже отмечали, для семейства UNIX/Linux корнем иерархии файловой системы является только одна вершина. Ее имя «/». В Windows количество корневых вершин определяется составом внешних устройств.
3. Файлы устройств. Они существуют в системе для единообразия основных операций с устройствами. Притом, что ФС UNIX позволяет подключать широкий спектр оборудования, устройства бывают двух видов – символьные (например, консоль) или блочные (их примером служат диски). Первые используются для передачи данных без буфера, а вторые производят обмен данными пакетами фиксированной длины – блоками.
4. Связи. Их наличие позволяет иметь доступ к файлу из разных точек иерархической системы. Они бывают двух видов – жесткие и символические. Для первых характерно равноправие всех ссылок. Во втором случае значение ссылки представляет полный путь к файлу (его размер равен количеству символов в полном имени).
5. Именованные каналы (named pipe) или файлы типа fifo. Этот тип файлов используется на системном уровне для передачи данных между процессами.
6. Сокеты. Они применяются в сетевых технологиях. Интерфейс сокетов часто используют для реализации доступа к сетям с поддержкой TCP/IP. Такой же механизм применяют для межпроцессорного взаимодействия при реализации системных сервисов.
Узнать о типе файла, можно задавая команду file. Она на основании специального файла (его имя magic) и некоторых эвристических правил выдает описание типа изучаемого файла, его принадлежность к одной из многочисленных групп (исполнимый файл, документ, архивный файл определенного типа и т.д.).
Первый символ команды ls с опцией -l для каждого файла указывает принадлежность одному из пернечисленных выше типов. Существует следующее закрепления символов (в правом столбце приведено соответствие символов и типов файлов, принятое в популярном для UNIX файловом менеджере Midnight Commander).
Тип файла
Символ типа в
ls
Символ типа в mc
простые
(обыкновенные файлы)
нет символа
* для исполнимых файлов или нет символа
каталоги
d
/
символьные файлы устройств
b
-
блочные файлы устройств
c
+
жесткие ссылки
нет символа
нет символа
символические ссылки
l
@ ~
файлы типа fifo
p
|
сокеты
s
=
Рассмотрим примеры файлов разного типа
Выше были перечислены все типы файлов в UNIX. Теперь приведем их примеры из одного каталога. Его имя /dev и он содержит информацию об устройствах. Для каждого даем две команды file (фиксирует тип файла) и ls с параметром –l (выдает полную информацию о каждом файле). Обратите внимание на то, какими правами обладает пользователь выполнять операции с перечисленными файлами устройств (напомним, что работа выполняется в сеансе главного администратора системы root).
Как было уже сказано, подробное описание типов файлов, собирается в одном месте. Его адрес - /usr/share/file, а имя - magic. Сначала определим тип этого файла.