file

Определение типа файла (UNIX)

Синтаксис:

file [-bcLnvz] [-f файл_имен] [-m файл_magic] файл ...

Опции:

-b
Не выводить имя файла перед его типом.
-c
Вывести файл определения типов magic после синтаксического анализа в целях проверки. Обычно используется вместе с опцией -m для отладки нового файла определения типов перед его установкой.
-f файл_имен
Считать имена файлов для анализа из файла файл_имен (по одному на строку) перед списком аргументов. Должен быть указан либо файл_имен, либо по крайней мере один аргумент имени файла; для проверки стандартного потока вывода в качестве аргумента имени файла следует использовать -.
-L
Выполнить переход по символьным ссылкам, аналог одноименной опции ls.
-m файл
Альтернативный файл "магических" чисел. По умолчанию используется файл /usr/share/misc/magic.
-n
Вывести имя файла перед его типом (по умолчанию).
-v
Вывести версию программы и завершить работу.
-z
Осуществить попытку работы с содержимым сжатых файлов.

Платформы:

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

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита file проверяет каждый аргумент файл и пытается его классифицировать. Существует три набора проверок, которые выполняются в следующем порядке:

  1. проверки файловой системы;
  2. проверки по "магическому" числу;
  3. языковые проверки.

Тип файла выводится после первой успешной проверки. Выводимый тип обычно содержит одно из следующих слов:

text
Файл содержит только символы ASCII и, вероятно, безопасен для чтения на текстовом терминале.
executable
Файл содержит результат компилирования программы в форме, доступной одной из разновидностей ядер UNIX.
data
Любые другие файлы (данные обычно бывают в "двоичной" или непечатаемой форме). Исключение составляют широко известные форматы файлов (файлы core, архивы tar), которые наверняка содержат двоичные данные.


Note: При изменении файла /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.

Файлы:

/usr/share/misc/magic
Список "магических" чисел, используемый по умолчанию.

Предостережения:

Утилита file использует несколько алгоритмов, в которых отдано предпочтение скорости, а не точности, поэтому результат для содержимого файлов в формате ASCII может быть искажен. Поддержка файлов в формате ASCII (прежде всего для языков программирования) примитивна, неэффективна и требует перекомпиляции для обновления.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», UNIX

В ЗОСРВ «Нейтрино» редакции 2020 утилита обновлена до версии 5.39 (замена прежней реализации)

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

/usr/share/misc/magic




Предыдущий раздел: Утилиты