/usr/share/misc/magic

Файл определения типов для команды file (UNIX)

Синтаксис:

/usr/share/misc/magic

Платформы:

ЗОСРВ «Нейтрино»

Описание:

Команда file позволяет определить тип файла посредством проверки соответствия начальных символов файла определенному "магическому" числу (помимо прочих проверок). В файле /usr/share/misc/magic указаны "магические" числа для проверки, сообщение, которое будет выведено в случае обнаружения конкретного "магического" числа, а также дополнительная информация, извлекаемая из файла.

В каждой строке файла указана проверка, которую требуется выполнить. При проверке выполняется сопоставление данных, начинающихся с определенного смещения в файле, с 1-, 2- или 4-байтовым числовым значением или строкой. В случае успешного выполнения проверки выводится сообщение. Строка состоит из следующих полей:

смещение
число, определяющее смещение в байтах в проверяемом файле данных.
тип
проверяемый тип данных. Возможные значения:
byte
однобайтовое значение.
short
двухбайтовое значение (в большинстве систем) с специфичным для машины порядком байт.
long
четырехбайтовое значение (в большинстве систем) с специфичным для машины порядком байт.
string
строка байт.
date
четырехбайтовое значение, интерпретируемое как дата UNIX.
beshort
двухбайтовое значение (в большинстве систем) с обратным порядком байт.
belong
четырехбайтовое значение (в большинстве систем) с обратным порядком байт.
bedate
четырехбайтовое значение (в большинстве систем) с обратным порядком байт, интерпретируемое как дата UNIX.
leshort
двухбайтовое значение (в большинстве систем) с прямым порядком байт.
lelong
четырехбайтовое значение (в большинстве систем) с прямым порядком байт.
ledate
четырехбайтовое значение (в большинстве систем) с прямым порядком байт, интерпретируемое как дата UNIX.

После числовых типов может следовать символ & и числовое значение. Это значит, что перед сопоставлением к значению следует присоединить числовое значение. Значение u перед типом указывает, что сопоставления порядков должны быть беззнаковыми.
проверка
Значение, сравниваемое со значением из файла. Если значение тип является числом, это значение указывается в формате языка C; если это строка, она определяется как строка C с возможностью использования обычных управляющих последовательностей (например, символ \n для обозначения новой строки).

Перед числовыми значениями может стоять символ, определяющий выполняемую операцию: Если символ не указан, автоматически подставляется =.

Числовые значения устанавливаются в формате C, например, 13 является десятичным числом, 013 – восьмеричным, а 0x13 – шестнадцатеричным.

Для строковых значений строка байт из файла должна совпадать с указанной строкой байт. К строкам могут быть применены операторы =, < и > (но не &). Длина строки для сопоставления соответствует значению строкового аргумента в файле /usr/share/misc/magic. Это означает, что строка может соответствовать любой строке, затем эта строка будет выведена путем выполнения >\0 (поскольку все строки больше нулевой строки).
сообщение
Сообщение, выводимое в случае успешного завершения сравнения. Если в строке содержится спецификация формата printf(), то значение из файла (если выполнены все указанные операции маскирования) будет выведено с использованием значения сообщение в качестве строки формата.

Некоторые форматы файлов включают дополнительную информацию, которая выводится вместе с типом файла. В строке, которая начинается с символа >, определяются дополнительные проверки и выводимые сообщения. Число символов > в строке обозначает уровень проверки. Строка, в начале которой отсутствуют символы >, относится к уровню 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

Тематические ссылки:

file




Предыдущий раздел: Конфигурационные файлы