# Типы файлов (MIME)

Когда вы выбираете ссылку на MP3-файл в браузере или менеджере файлов, этот файл автоматически воспроизводится в проигрывателе. Если такая связь работает, это значит, что типы MIME в системе сконфигурированы правильно.

Аббревиатура MIME означает **Multipurpose Internet Mail Extensions** — «многоцелевые расширения электронной почты». Первоначально типы MIME разрабатывались для приложений к электронным письмам. Если к письму присоединялся, например, файл в формате PostScript или JPEG, то клиент электронной почты сразу знал, с помощью какой программы следует просмотреть или обработать этот файл. Чтобы данный механизм работал, требовалось настроить конфигурацию MIME.

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

## Конфигурация MIME

Linux не была бы Linux (или UNIX), если бы в системе имелось только центральное место для проведения конфигурации MIME. Такие места, конечно, есть, но они не централизованы, и их очень много. Данные MIME для программ KDE, программ Gnome, различных браузеров, системы печати CUPS и т. д. управляются по отдельности. Кроме того, есть и центральная система конфигурации MIME для всех тех программ, которые не располагают собственными файлами MIME.

Существуют разные причины того, что конфигурация MIME в Linux была распределена по нескольким местам. При работе KDE и Gnome применяется концепция, в соответствии с которой для обработки различных типов данных используются разные компоненты. Если в файловом менеджере программы KDE необходимо открыть файл-изображение в формате PNG, то в систему просто загружаются, а затем выполняются соответствующие компоненты. Поскольку библиотеки KDE и Gnome, как правило, несовместимы друг с другом, попытка файлового менеджера KDE выполнить компоненты Gnome (и наоборот) привела бы к катастрофическим последствиям. Во избежание такой ситуации KDE и Gnome используют собственные отдельные базы данных по MIME. По сходным причинам собственная конфигурация MIME присваивается и другим программам.

При работе со многими конфигурационными файлами MIME необходимо различать глобальную и индивидуальную конфигурацию, то есть общие настройки и настройки для отдельно взятого пользователя. Далее показана базовая конфигурация компонентов MIME в системе Linux.

**Общая конфигурация MIME.** Общие файлы конфигурации MIME используются только теми программами, которые не располагают собственными файлами MIME. Настройки разделены на два файла, один из которых представляет собой глобальную версию, а другой — пользовательскую.

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F2FBm3JxdAQTqhwCXrfYb%2Fimage.png?alt=media&#x26;token=305a8a8f-0171-4a0b-bebb-373f5f27c187" alt=""><figcaption><p>Конфигурационные файлы MIME</p></figcaption></figure>

Файл _mime.types_ содержит список, в котором представлено соответствие между типами файлов (первый столбец) и расширениями файлов (все остальные столбцы). Например, типу _application/pdf_ соответствует расширение PDF. В списке _mime.types_ различаются текстовые приложения и X-приложения, типы MIME которых имеют вид _application/x-name._

_`в /etc/mime.types`_

_`...`_&#x20;

_`application/pdf      pdf`_

Файл _mailcap_ указывает, какая программа должна применяться для отображения или обработки файла того или иного типа. В следующей строке сообщается, что для отображения файлов PDF следует использовать программу _evince_. В отличие от _mime.types_, столбцы _mailcap_ должны разделяться точками с запятой; _%s_ — это подстановочный символ для имен файлов.

`в /etc/mailcap`

`application/pdf; evince %s`

## Магические файлы для распознавания типа файла

Тип MIME предназначен для того, чтобы те или иные файлы открывались или обрабатывались программами, предназначенными специально для этого. Но как вообще удается установить тип обрабатываемого файла? Как правило, тип файла определяется по его расширению. Например, расширение _\*.ps_ означает, что перед нами файл PostScript.

Если файл не имеет такого идентификатора, программа _file_ или соответствующие программы систем KDE или Gnome пытаются вычленить эквивалент типа файла по первому байту, содержащемуся в этом файле, либо по характерным для него последовательностям символов. Метод распознавания основывается на информации о том, какие байты и типичные последовательности символов может содержать файл; эта информация встраивается в команду _file_ при компиляции. В некоторых дистрибутивах стандартную конфигурацию можно изменять с помощью файлов _/etc/magic_ или _\~/.magic_.

