Який взаємозв'язок між типами MIME і розширеннями файлу?


19

У мене може бути неправильна думка тут, але я вважав, що:

Типи MIME - це ідентифікаційні коди, вбудовані у файл.
Файл .extensions є idenifying коди, суфікса до файлу по імені .

Я подумав, із чогось, що я чув у тьмяному темному віці, що Linux був. Агностиком розширення ... (можливо, це було в перші дні, і все змінилося відтоді ...?)

Нещодавно я прийшов зі світу Windows, де на рівні операційної системи файл .exension файлу є єдиним способом (наскільки я знаю) пов’язати його з відповідною програмою Приклад.

Оскільки я не знаю чому , я вважаю трохи неприємним, що в текстовому редакторі відкриваються файл з назвою "fred" і файл з назвою "fred.txt".

Чи існує чітка ієрархія на роботі?

Відповіді:


16

Типи MIME - це лише спосіб назви типів. Вони не мають нічого спільного з тим, як визначається тип файлу.

Існує два способи визначення типу файлу: а) Подивіться на його розширення та сподівайтеся, що він є точним, або б) подивіться на його вміст, а потім здогадайтесь на основі цього. Якщо файл не має розширення b, це єдиний варіант.

Багато (бінарні) формати файлів мають певний заголовок, який ви можете подивитися, щоб визначити їх тип. Це робить варіант b досить надійним для цих типів.

Прості формати текстових файлів часто можна визначити за їх структурою (якщо файл містить багато html-тегів, це, мабуть, файл html).

У системах unix та linux ви можете використовувати fileутиліту командного рядка, щоб дізнатися тип файлу на основі його вмісту.

Файловий менеджер часто використовує якусь комбінацію опцій a і b (наприклад, спочатку подивіться на розширення файлу, якщо це не відомо (або у файлу немає розширення), подивіться на вміст).

Тип файлу не зберігається як метадані у загальних файлових системах Linux.


14

В Linux розширення файлу є частиною імені файлу і насправді нічого не означає для операційної системи. Тип MIME - це опис вмісту файлу. fredі вони fred.txtб мали тип MIME text/plain.

Файлові менеджери, такі як Nautilus, використовують цей тип MIME, щоб знати, з якою програмою відкрити файл. У терміналі xdg-openкоманда робить те саме. Однак це рівень простору користувача, а не рівень операційної системи.

Файли насправді не містять цей тип mime, але програми, що їх відкривають, використовують різні методи, щоб розробити, що таке тип MIME. Деякі покладаються лише на розширення файлу, але більшість використовують суміш методів, включаючи перегляд даних на початку файлу.

Якщо початок файлу містить лише байти, які можуть бути представлені у вигляді символів ASCII, можна припустити, що це текстовий файл. Якщо тоді розширення є чимось на зразок .html, програма передбачає, що це HTML-сторінка, і відкриває її веб-браузером. Те ж саме працює з бінарними форматами файлів. Наприклад, я знаю, що формат файлу растрових зображень починається з 'BMP' в ASCII, а потім бінарні дані, що представляють зображення.

Простіше кажучи, програми Linux роблять освічені здогадки на основі даних у файлі та його розширення. Це може здатися не дуже надійним, але використовувані алгоритми складніші, ніж приклади, які я наводив, і насправді дуже точні.


5

У світі Linux розширення файлів - лише один показник для типу файлу. Існує інструмент командного рядка під назвою "файл", який вгадує тип файлу.

Для отримання цього типу в основному є 3 показники:

  • Розширення
  • Спеціальні атрибути у файловій системі (наприклад, для символьних або твердих посилань, папок, пристрою введення тощо)
  • Контент
    • Двійкові (як інформація ELF у виконуваних файлах)
    • Текстовий (як <html>, #!/bin/bash)

Співвідношення між типом файлу та типом MIME полягає в тому, що MIME є лише стандартом для представлення типу файлу (як text/css).

Linux "здогадується" тип файлу та відкриває пов'язану програму для цього типу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.