файл (команда) - file (command)

редактировать
файл
Разработчик (и) ATT Bell Laboratories
Первоначальный выпуск1973 (1973) как часть Unix Research Version 4 ; 1986 (1986) переопределение открытого исходного кода
Репозиторий github.com / file / file
Написано наC
Операционной системе Unix, Unix-like, Plan 9, IBM i
Platform Cross-Platform
Тип Тип файла детектор
Лицензия Лицензия BSD, CDDL
Веб-сайтdarwinsys.com / file /

Команда file стандартная программа в Unix и Unix-подобных операционных системах для распознавания типа данных, содержащихся в компьютерном файле.

Содержание

  • 1 История
  • 2 Спецификация
  • 3 Использование
  • 4 Примеры
  • 5 Библиотека Libmagic
  • 6 Ссылки
  • 7 Внешние ссылки
    • 7.1 Страницы руководства
    • 7.2 Прочее

История

Исходная версия файлавозникла в Unix Research Version 4 в 1973 году. System V принесла крупное обновление с несколько важных изменений, в первую очередь перемещение информации о типе файла во внешний текстовый файл, а не компиляция поместите его в сам двоичный файл.

Большинство основных дистрибутивов BSD и Linux используют бесплатную, повторную реализацию с открытым исходным кодом, которая была написана в 1986- 87 с нуля. В 1989 году его расширил Джефф Коллиер, и с тех пор в него вошли многие другие, включая Гая Харриса, Криса Лоута и Эрика Фишера; с конца 1993 года его обслуживание было организовано. Система OpenBSD имеет собственную реализацию подмножества, написанную с нуля, но по-прежнему использует коллекцию Darwin / Zoulas с информацией в формате волшебного файла.

Команда file также была перенесена в операционную систему IBM i.

Спецификация

Единая спецификация Unix ( SUS) указывает, что для файла, указанного в командной строке, выполняется серия тестов:

  1. , если файл не может быть прочитан или его тип файла Unix не определен, файл программа укажет, что файл был обработан, но его тип не был определен.
  2. файлдолжен иметь возможность определять типы каталог, FIFO, socket, блок специальный файл и символьный специальный файл
  3. файлы нулевой длины идентифицируются как таковые
  4. начальная часть файла рассматривается и файл- использовать тесты, чувствительные к положению,
  5. рассматривается весь файл, а файл- использовать контекстно-зависимые тесты
  6. файл идентифицируется как datafile

fileчувствительные к положению тесты обычно реализуются путем сопоставления различных мест в файле с текстовая база данных магических чисел (см. раздел «Использование»). Это отличается от других более простых методов, таких как расширения файлов и таких схем, как MIME.

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

Использование

SUS требует следующих опций:

-M file, укажите файл в специальном формате, содержащий тесты, чувствительные к положению; тесты с учетом положения по умолчанию и тесты с учетом контекста не будут выполняться.
-m file, как для -M, но тесты по умолчанию будут выполняться после тестов, содержащихся в файл.
-d, выполнить по умолчанию чувствительные к положению и контексту тесты для данного файла; это поведение по умолчанию, если не указано -Mили -m.
-h, не разыменовывать символические ссылки, которые указывают на существующий файл или каталог.
-L, разыменовать символическую ссылку, которая указывает на существующий файл или каталог.
-i, не классифицируйте файл дальше, чем идентифицируйте его как: несуществующий, специальный блочный файл, специальный символьный файл, каталог, FIFO, сокет, символическая ссылка или обычный файл. Системы Linux и BSD работают по-разному с этой опцией и вместо этого выводят Интернет-тип носителяMIME тип»), идентифицирующий распознанный формат файла.

Другое Unix и Unix-подобные операционные системы могут добавлять дополнительные параметры помимо этих, например -s'специальные файлы', -k'keep-going' или -r'raw' (примеры ниже).

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

Примеры

$ file file.c file.c: C program text 
$ file program program: ELF 32-битный LSB исполняемый файл, Intel 80386, версия 1 (SYSV ), динамически связанный (использует общие библиотеки ), разделено 
$ file / dev / hda 1 / dev / hda1: специальный блок (0 / 0)
$ file -s / dev / hda 1 / dev / hda1: Linux /i386 ext2 файловая система 

Обратите внимание, что -s - это нестандартная опция, доступная только на некоторых платформах, которая сообщает fileчитать файлы устройств и пытаться идентифицировать их содержимое, а не просто идентифицировать их как файлы устройств. Обычно файлне пытается читать файлы устройства, поскольку чтение такого файла может иметь нежелательные побочные эффекты.

$ file -k -r libmagic-dev_5.35-4_armhf.deb # (в Linux ) libmagic-dev_5.35-4_ armhf. deb : двоичный пакет Debian (формат 2.0) - текущий ar архив - данные

Через нестандартную опцию -kпрограмма не останавливается после обнаружено первое совпадение, но выполняется поиск других подходящих шаблонов. Параметр -r, который доступен в некоторых версиях, вызывает отображение непечатаемого символа новой строки в его необработанном виде, а не в восьмеричном представлении.

$ file compressed.gz compressed.gz: gzip compressed data, deflated, исходное имя файла, `сжатый ', последнее изменение: четверг, 26 января, 14:08:23 2006, os : Unix 
$ file -i compressed.gz # (в Linux ) compressed.gz: приложение /x -gzip ; кодировка = двоичный 
$ file data.ppm data.ppm: Netpbm PPM "rawbits" image data 
$ file / bin / cat / bin / cat: Mach-O универсальный двоичный файл с 2 архитектурами / bin / cat [для архитектуры ppc7400 ): Mach-O исполняемый ppc / bin / cat (для архитектуры i386 ): Mach-O исполняемый файл i386 

Библиотека Libmagic

Начиная с версии 4.00 версии файлаЯна Дарвина / Христоса Зуласа, функциональность файлавключена в libmagicбиблиотеку, доступную через C (и C-совместимую) компоновку; файлреализован с использованием этой библиотеки.

Ссылки

Внешние ссылки

В Викибуке Руководство по Unix есть страница по теме: Команды

Страницы руководства

Другое

  • Fine Free File Command - домашняя страница версии файла, используемой в основных дистрибутивах BSD и Linux.
  • Файл для Windows - веб-страница собственного порта GnuWin32 файла для 32-битной Windows.
  • Пакет libmagic-dev на packages.debian.org
  • TrID, альтернатива, обеспечивающая ранжированные ответы (вместо одного) на основе статистики.
Последняя правка сделана 2021-05-20 03:41:15
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте