Определение типа файла (UNIX)
file [-bcLnvz] [-f файл_имен] [-m файл_magic] файл ...
-
.ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита file проверяет каждый аргумент файл и пытается его классифицировать. Существует три набора проверок, которые выполняются в следующем порядке:
Тип файла выводится после первой успешной проверки. Выводимый тип обычно содержит одно из следующих слов:
![]() | При изменении файла /usr/share/misc/magic или самой программы необходимо сохранять эти ключевые слова. Для пользователей утилиты важно, чтобы для всех файлов в каталоге, доступных для чтения, выводилось слово text. |
Проверки файловой системы основаны на исследовании значения, возвращаемого системным вызовом stat(). Программа проверяет, является ли файл пустым, или каким-либо специальным файлом. Все известные типы файлов, действительные для эксплуатируемой системы (сокеты, символьные ссылки или именованные каналы (FIFO) в системах, где они реализованы), определяются интуитивно, если они определены в системном файле заголовка /usr/include/sys/stat.h
.
Проверки по "магическому" числам используются для определения файлов с данными в определенных фиксированных форматах. "Магическое" число, расположенное в начальной части файла, позволяет операционной системе UNIX определить, что файл является двоичным исполняемым файлом, принадлежащим к одному из нескольких типов. Принцип "магических" чисел применяется для файлов данных. Обычно таким образом может быть описан любой файл с некоторым инвариантным идентификатором на небольшом фиксированном смещении от начала файла. Информация о таких файлах считывается из файла определения типов /usr/share/misc/magic.
Если аргумент представляется файлом ASCII, утилита file пытается определить его язык. В ходе языковых проверок выполняется анализ определенных строк, которые могут присутствовать где-либо в пределах первых нескольких блоков файла. Например, ключевое слово .br
указывает, что файл вероятно является файлом ввода troff, а ключевое слово struct указывает на программу на языке С. Надежность этих проверок ниже, чем в предыдущих двух группах, поэтому они выполняются в последнюю очередь. Процедуры языковой проверки также могут определить ряд прочих файлов (таких как архивы tar) и определяют, требуется-ли пометить неизвестный файл как ascii text или data.
Утилита file использует несколько алгоритмов, в которых отдано предпочтение скорости, а не точности, поэтому результат для содержимого файлов в формате ASCII может быть искажен. Поддержка файлов в формате ASCII (прежде всего для языков программирования) примитивна, неэффективна и требует перекомпиляции для обновления.
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX
ЗОСРВ
«Нейтрино»
редакции 2020
утилита обновлена до версии 5.39 (замена прежней реализации)
Предыдущий раздел: Утилиты