stringtranslate.com

файл (команда)

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

История

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

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

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

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

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

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

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

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

Применение

SUS [4] предписывает следующие варианты:

Другие Unix и Unix-подобные операционные системы могут добавлять дополнительные параметры, кроме этих. Реализация Яна Дарвина добавляет, среди многих других, -s«специальные файлы», -k«непрерывные» или -r«необработанные» (примеры ниже). [5]

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

Примеры

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

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

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

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

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

Идентификация символических ссылок доступна не на всех платформах и будет разыменована, если она -Lбудет передана или POSIXLY_CORRECTустановлена.

Библиотека Либмагик

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

Рекомендации

  1. ^ «Источник справочной страницы файла UNIX V4» . Архивировано из оригинала 10 декабря 2019 г. Проверено 13 марта 2022 г.
  2. ^ Ранняя история этой программы записана в ее частном репозитории CVS; см. [1] Архивировано 1 апреля 2017 г. на Wayback Machine, журнал основной программы.
  3. ^ «IBM System i Версия 7.2 Программирование Qshell» (PDF) . ИБМ . Архивировано (PDF) из оригинала 05 марта 2021 г. Проверено 05 сентября 2020 г.
  4. ^ «Базовые спецификации открытой группы, выпуск 7 — команда file» . Архивировано из оригинала 12 октября 2018 г. Проверено 20 августа 2014 г.
  5. ^ ab file(1) -  Руководство пользователя Linux - Пользовательские команды
  6. ^ file(1)  -  Руководство по общим командам NetBSD.
  7. ^ libmagic(3)  -  Руководство программиста Linux - Библиотечные функции
  8. ^ libmagic(3)  -  Руководство по функциям библиотеки NetBSD.
  9. Зулас, Христос (27 февраля 2003 г.). «Файл-3.41 теперь доступен». Файл (список рассылки). Архивировано из оригинала 4 марта 2016 года . Проверено 1 января 2013 г.
  10. Зулас, Христос (24 марта 2003 г.). «Файл-4.00 теперь доступен». Файл (список рассылки). Архивировано из оригинала 28 декабря 2016 года . Проверено 1 января 2013 г.

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

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

Другой