file

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

Синтаксис:

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

Поддерживаемые платформы:

Neutrino

Опции:

-b

Не выводить имя файла перед его типом.

-c

Вывести файл определения типов magic после синтаксического анализа в целях проверки. Обычно используется вместе с опцией -m для отладки нового файла определения типов перед его установкой.

-f файл_имен

Считать имена файлов для анализа из файла файл_имен (по одному на строку) перед списком аргументов. Должен быть указан либо файл_имен, либо по крайней мере один аргумент имени файла; для проверки стандартного потока вывода в качестве аргумента имени файла следует использовать -.

-L

Выполнить переход по символьным ссылкам, аналог одноименной опции ls.

-m файл

Альтернативный файл "магических" чисел. По умолчанию используется файл /usr/share/misc/magic.

-n

Вывести имя файла перед его типом (по умолчанию).

-v

Вывести версию программы и завершить работу.

-z


Осуществить попытку работы с содержимым сжатых файлов.


Описание:

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

  2. проверки по "магическому" числу;

  3. языковые проверки.

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

text

Файл содержит только символы ASCII и, вероятно, безопасен для чтения на текстовом терминале.

executable

Файл содержит результат компилирования программы в форме, доступной одной из разновидностей ядер UNIX.

data


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

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


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

Автор:

Иан Дарвин (Ian F. Darwin), адрес UUCP: {utzoo|ihnp4}!darwin!ian, адрес электронной почты: ian@sq.com, почтовый адрес: P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8.

Изменения: Роб МакМэхон (Rob McMahon), cudcv@warwick.ac.uk, 1989 г.; оператор & расширен с простой формы x&y != 0 до формы x&y op z.

Изменения: Гай Харрис (Guy Harris), guy@auspex.com, 1993г.:

Изменения Иана Дарвина и других авторов, в т.ч. Кристоса Золаса (Christos Zoulas) (christos@ee.cornell.edu), 1990-1992 гг.

Лицензия:

Авторские права © Иан Дарвин (Ian F. Darwin), Торонто, Канада, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993 гг.

Это программное обеспечение не подлежит и не может подлежать лицензированию со стороны компании American Telephone and Telegraph Company, Sun Microsystems Inc., Digital Equipment Inc., Lotus Development Inc., членов правления Калифорнийского университета (The Regents of the University of California), X Consortium или MIT, либо Фонда свободного программного обеспечения (Free Software Foundation).

Это программное обеспечение не подлежит ограничениям по экспорту Министерства торговли Соединенных Штатов и может быть экспортировано в любую страну и на любую планету.

Разрешается использовать это программное обеспечение в любых целях на любой компьютерной системе, изменять и распространять его с учетом следующих ограничений:
  1. Автор не несет ответственности за последствия использования этого программного обеспечения, независимо от степени их серьезности, даже если они являются обусловлены наличием недостатков в этом программном обеспечении.

  2. Сведения о происхождении этого программного обеспечения не должны быть искажены ни явными заявлениями, ни сокрытием информации. Поскольку пользователи редко обращаются к исходным кодам, сведения об авторстве должны быть указаны в документации.

  3. Измененные версии должны быть явно отмечены как таковые и не могут выдаваться за первоначальное программное обеспечение. Поскольку пользователи редко обращаются к исходным кодам, сведения об авторстве должны быть указаны в документации.

  4. Эту информацию запрещается удалять или изменять.

Некоторые вспомогательные файлы (getopt(), strtok()) распространяемые в составе этого пакета, созданы Генри Спенсером (Henry Spencer). На них распространяются условия, приведенные выше. Некоторые простые вспомогательные файлы (strtol(), strchr()), распространяемые в составе этого пакета, являются общественным достояниям; они отмечены соответствующим образом.

Файлы tar.h и is_tar.c написаны Джоном Гилмором (John Gilmore) на основе его программы tar, находящейся в общественном достоянии, и на них не распространяются ограничения, приведенные выше.

Источник:

Последняя версия от первоначального автора представлена на анонимном FTP по адресу tesla.ee.cornell.edu в каталоге /pub/file-X.YY.tar.gz.

Предупреждения:

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