Как обнаруживаются ПАНТОМИМЫ

Я искал вокруг, но, может казаться, не нахожу информации о теме.

Как Вы устанавливаете тип MIME для существующего файла?

Например, я пытаюсь создать файл с типом text/html

1
задан 2 April 2017 в 03:22

1 ответ

Типы MIME на самом деле не хранятся в файловой системе. Они - просто удобный способ знать, как обработать файл. Для получения типа MIME необходимо запустить программу.

Некоторые программы обнаружат тип пантомимы файла только путем рассмотрения расширения файла, в то время как другие проверят файл на магическое число или специальный волшебный шаблон (по существу regex).


Как пример, выполненный touch test.html, который создает пустой файл.

Затем выполненный xdg-mime query filetype test.html или mimetype test.html. Они оба возвратят тип text/html.

Однако, если Вы работаете file --mime-type -b test.html, это возвратится inode/x-empty.


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

Что такое магическое число?

Выполнение xxd image | head -1 на моем аватаре создает вывод следующим образом:

00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR

Согласно Википедии, 89 50 4E 47 0D 0A 1A 0A стандартный заголовок для всех image/png файлы.

Как файл управляет работой?

От file(1) страница справочника:

Существует три набора тестов, выполненных в этом порядке: тесты файловой системы, волшебные тесты и тесты языка...

Тесты файловой системы основаны на исследовании возврата из a stat(2) системный вызов. Проверки программы, чтобы видеть, пуст ли файл, или если это - своего рода специальный файл...

Волшебные тесты используются для проверки на файлы с данными в особенности фиксированных форматов.... Этим файлам сохранили 'магическое число' в конкретном месте около начала файла, который говорит операционной системе UNIX, что файл является двоичным исполняемым файлом, и который из нескольких типов этого.... Если файл не соответствует ни одной из записей в волшебном файле, он исследован, чтобы видеть, кажется ли это, текстовый файл...

Любой файл, который не может быть определен как записанный ни в одном из наборов символов, перечисленных..., как просто говорят, является 'данными'.

Как файл знает что волшебные шаблоны использовать?

Снова, от file(1) страница справочника:

Информация, определяющая эти файлы, читается из скомпилированного волшебного файла /usr/share/misc/magic.mgc, или файлы в каталоге /usr/share/misc/magic если скомпилированный файл не существует. Кроме того, если $HOME/.magic.mgc или $HOME/.magic существует, это будет использоваться в предпочтении к системным файлам волшебства. Если/etc/magic будет существовать, то он будет использоваться вместе с другими волшебными файлами.

Если я работаю strace file image |& grep magic мы видим это file команда ищет эти файлы:

/usr/lib/x86_64-linux-gnu/libmagic.so.1 => libmagic (3) ~/.magic.mgc
~/.magic
/etc/magic.mgc
/etc/magic
/usr/share/misc/magic.mgc

Существуют другие файлы как /etc/mime.types который используют другие программы. Этот файл присваивает расширение типа пантомимы. Например, grep -i text/html /etc/mime.types производит:

text/html                   html htm shtml
2
ответ дан 7 December 2019 в 13:34

Другие вопросы по тегам:

Похожие вопросы: