Файл (команда) - File (command)
Разработчики) | AT&T Bell Laboratories |
---|---|
изначальный выпуск | 1973Unix Research Версия 4; 1986 повторная реализация с открытым исходным кодом | как часть
Репозиторий | github |
Написано в | C |
Операционная система | Unix, Unix-подобный, План 9, IBM i |
Платформа | Кроссплатформенность |
Тип | Тип файла детектор |
Лицензия | Лицензия BSD, CDDL |
Интернет сайт | Дарвинсис |
В файл
команда это стандарт программа из Unix и Unix-подобный операционные системы для распознавания типа данных, содержащихся в компьютерный файл.
История
Оригинальная версия файл
возник в Unix Research Версия 4[1] в 1973 г. Система V принес крупное обновление с несколькими важными изменениями, в первую очередь перемещением информации о типе файла во внешний текстовый файл, а не компиляцией ее в сам двоичный файл.
Самый крупный BSD и Linux дистрибутивы используют свободный, Открытый исходный код повторная реализация, написанная в 1986-87 гг. Ян Дарвин[2] с нуля. Он был расширен Джефф Коллиер в 1989 году, и с тех пор в нем участвовали многие другие, в том числе Гай Харрис, Крис Лоут и Эрик Фишер; с конца 1993 г. его обслуживание было организовано Христос Зулас. В OpenBSD Система имеет собственную реализацию подмножества, написанную с нуля, но по-прежнему использует коллекцию Дарвина / Зуласа магической информации в формате файла.
В файл команда также была перенесена в IBM i Операционная система.[3]
Технические характеристики
В Единая спецификация Unix (SUS) указывает, что серия тестов выполняется для файла, указанного в командной строке:
- если файл не читается, или его Тип файла Unix не определено,
файл
программа сообщит, что файл был обработан, но его тип не определен. файл
должен уметь определять типы каталог, ФИФО, разъем, блокировать специальный файл, и специальный файл символов- файлы нулевой длины идентифицируются как таковые
- рассматривается начальная часть файла и
файл
использовать позиционно-чувствительные тесты - рассматривается весь файл и
файл
использовать контекстно-зависимые тесты - файл обозначен как
данные
файл
файл
'тесты, чувствительные к положению, обычно реализуются путем сопоставления различных мест в файле с текстовой базой данных магические числа (см. раздел Использование). Это отличается от других более простых методов, таких как расширения файлов и схемы вроде MIME.
В большинстве реализаций файл
команда использует базу данных для проверки ведущих байтов. Эта база данных реализована в файле с именем магия
, чье местонахождение обычно находится в / etc / magic
, / USR / доля / файл / магия
или подобное место.
использование
SUS[4] предусматривает следующие варианты:
- -M файлукажите специально отформатированный файл, содержащий тесты, чувствительные к положению; тесты, чувствительные к положению, и контекстно-зависимые тесты по умолчанию выполняться не будут.
- -м файл, что касается -M, но тесты по умолчанию будут выполнены после тестов, содержащихся в
файл
. - -d, выполнить по умолчанию чувствительные к положению и контексту тесты для данного файла; это поведение по умолчанию, если -M или же -м указан.
- -час, не разыменовывать символические ссылки которые указывают на существующий файл или каталог.
- -L, разыменовать символическую ссылку, указывающую на существующий файл или каталог.
- -я, не классифицируйте файл дальше, чем идентифицируйте его как: несуществующий, специальный блочный файл, специальный символьный файл, каталог, ФИФО, сокет, символическая ссылка или обычный файл. Linux[5] и BSD[6] системы ведут себя иначе с этой опцией и вместо этого выводят Тип интернет-СМИ (“MIME type »), идентифицирующий распознанный формат файла.
Другой Unix и Unix-подобный операционные системы могут добавлять дополнительные параметры, чем эти, например -s 'специальные файлы', -k "продолжать" или -р 'сырые' (примеры ниже).
Команда сообщает только то, что файл похоже, а не то, что это (в случае, если файл смотрит на содержание). Программу легко обмануть, поместив магическое число в файл, содержание которого ему не соответствует. Таким образом, команда не может использоваться в качестве инструмента безопасности, кроме как в определенных ситуациях.
Примеры
$ файл file.cfile.c: C программа текст
Программа $ file: ELF 32-битный LSB исполняемый файл, Intel 80386, версия 1 (SYSV ), динамически связанный (использует общие библиотеки ), раздетый
$ файл / dev / hda 1 / dev / hda1: блокировать специальные (0/0)
$ file -s / dev / hda 1 / dev / hda1: Linux /i386 ext2 файловая система
Обратите внимание, что -s - это нестандартная опция, доступная только на некоторых платформах, которая сообщает файл
читать файлы устройств и пытаться идентифицировать их содержимое, а не просто идентифицировать их как файлы устройства. Обычно файл
не пытается читать файлы устройства, так как чтение такого файла может иметь нежелательные побочные эффекты.
$ file -k -r libmagic-dev_5.35-4_armhf.deb # (на Linux ) libmagic-dev_5.35-4_Armhf.деб: Двоичный пакет Debian (формат 2.0) - текущий ар архивные данные
Через нестандартный вариант -k программа не останавливается после первого найденного попадания, а ищет другие подходящие шаблоны. -р опция, доступная в некоторых версиях, вызывает непечатаемую новая линия символ, который будет отображаться в необработанном виде, а не в восьмеричном представлении.
$ file compressed.gzcompressed.gz: gzip сжатый данные, спущенный, оригинал имя файла, `сжатый ', последнее изменение: четверг, 26 января, 14:08:23 2006 г., Операционные системы: Unix
$ file -i compressed.gz # (на Linux ) compressed.gz: заявление /Икс -gzip; кодировка =двоичный
$ файл data.ppmdata.ppm: Netpbm PPM сырье изображение данные
$ файл / bin / cat / bin / cat: Мачо универсальный двоичный с 2 архитектуры / bin / cat [для архитектуры ppc7400 ): Мачо исполняемый файл ppc / bin / cat (для архитектура i386 ): Мачо исполняемый файл i386
Библиотека Libmagic
Начиная с версии 4.00 версии Яна Дарвина / Христоса Зуласа файл
, функциональность файл
включен в libmagic
библиотека который доступен через C (и C-совместимое) связывание;[7][8] файл
реализуется с использованием этой библиотеки.[9][10]
Рекомендации
- ^ "Исходный код файла UNIX V4" "страница руководства".
- ^ Ранняя история этой программы записана в ее частном репозитории CVS; видеть [1] журнал основной программы
- ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 2020-09-05.
- ^ Базовые спецификации Open Group, выпуск 7 - файл команда
- ^ Linux Пользователя Руководство - Пользовательские команды –
- ^ NetBSD Общие команды Руководство –
- ^ Linux Программиста Руководство - Библиотечные функции –
- ^ NetBSD Библиотечные функции Руководство –
- ^ Зулас, Христос (27 февраля 2003 г.). "file-3.41 теперь доступен". Файл (Список рассылки). Получено 1 января, 2013.
- ^ Зулас, Христос (24 марта 2003 г.). "file-4.00 теперь доступен". Файл (Список рассылки). Получено 1 января, 2013.
внешняя ссылка
- Единая спецификация UNIX, Выпуск 7 из Открытая группа : определить тип файла - Справочник по командам и утилитам,
- список рассылки файлов
- релизы файлов
Страницы руководства
- План 9 Руководство программиста, том 1 –
- Linux Пользовательские команды Руководство –
- NetBSD Библиотечные функции Руководство –
- Linux Библиотечные функции Руководство –
- OpenBSD Общие команды Руководство –
Другой
- Прекрасная команда свободного файла - домашняя страница для версии
файл
используется в основных дистрибутивах BSD и Linux. - Файл для Windows - веб-страница родного GnuWin32 порт
файл
для 32-битной Windows. - В пакет libmagic-dev на packages.debian.org
- TrID, альтернатива, предоставляющая ранжированные ответы (вместо одного) на основе статистики.