Файл определения типов для команды file (UNIX)
/usr/share/misc/magic
ЗОСРВ «Нейтрино»
Команда file позволяет определить тип файла посредством проверки соответствия начальных символов файла определенному "магическому" числу (помимо прочих проверок). В файле /usr/share/misc/magic
указаны "магические" числа для проверки, сообщение, которое будет выведено в случае обнаружения конкретного "магического" числа, а также дополнительная информация, извлекаемая из файла.
В каждой строке файла указана проверка, которую требуется выполнить. При проверке выполняется сопоставление данных, начинающихся с определенного смещения в файле, с 1-, 2- или 4-байтовым числовым значением или строкой. В случае успешного выполнения проверки выводится сообщение. Строка состоит из следующих полей:
&
и числовое значение. Это значит, что перед сопоставлением к значению следует присоединить числовое значение. Значение u
перед типом указывает, что сопоставления порядков должны быть беззнаковыми. =
– значение из файла должно совпадать с указанным значением; <
– значение из файла должно быть меньше указанного значения; >
– значение из файла должно быть больше указанного значения; &
– для значения из файла должны быть установлены все биты, установленные в указанном значении; ^
– значение из файла не должно содержать биты, установленные в указанном значении; x
– подходит любое значение. =
. =
, <
и >
(но не &
). Длина строки для сопоставления соответствует значению строкового аргумента в файле /usr/share/misc/magic
. Это означает, что строка может соответствовать любой строке, затем эта строка будет выведена путем выполнения >\0 (поскольку все строки больше нулевой строки). Некоторые форматы файлов включают дополнительную информацию, которая выводится вместе с типом файла. В строке, которая начинается с символа >
, определяются дополнительные проверки и выводимые сообщения. Число символов >
в строке обозначает уровень проверки. Строка, в начале которой отсутствуют символы >
, относится к уровню 0. Каждая строка на уровне n + 1 подчиняется строке на уровне n, наиболее близкой к ней в файле определения типов.
При успешном выполнении проверки строки на уровне n выполняются проверки, указанные во всех последующих строках на уровне n + 1. При успешном выполнении выводятся соответствующие сообщения. Процедура завершается следующей строкой на уровне n.
Если первым символом после последнего знака >
является (
, то следующая за круглой скобкой строка интерпретируется как непрямое смещение. Это означает, что число после круглой скобки используется в качестве смещения в файле. Значение при этом смещении считывается и снова используется как смещение в файле. Для непрямых смещений используется следующий формат: ((x[.[bsl]][+-][y]). В качестве смещения в файле используется значение x. При смещении считывается короткий или длинный байт в зависимости от спецификатора типа [bsl]. К этому номеру добавляется значение y, а результат используется в качестве смещения в файле. Если тип не указан, по умолчанию используется длинное значение.
Использование форматов long, belong, lelong, short, beshort, leshort, date, bedate и ledate зависит от особенностей системы. Может потребоваться указать формат в виде числа байт (2B, 4B и т.д.), т.к. распознаваемые файлы обычно передаются из системы, в которой эта длина является неизменяемой величиной.
В настоящее время данные с указанным порядком байт при непрямом смещении не поддерживаются.
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX
Предыдущий раздел: Конфигурационные файлы