2

Я ничего не делал с Linux в течение десятилетия, поэтому я надеюсь, что этот вопрос все еще актуален. Я всегда хотел знать, как Linux это сделал, и я только сейчас подумал об этом снова.

В мире ОС Windows файлы ассоциируются с приложением по их расширению. Например, файл foo.txt можно открыть с помощью блокнота (txt). И foo.xls будет открыт в Excel (xls).

В Linux имена файлов не имеют расширений (они сейчас?), Так как же он узнал, какое приложение использовать для открытия файла? Если файл называется foo, и я дважды щелкну по нему, он откроется в правильном приложении. Как?

2 ответа2

4

Большинство рабочих столов Linux используют xdg-open для этого негласно. Это запрашивает локальную базу данных XML xdg-mime , которая может идентифицировать файлы по их расширениям, как в Windows, или по магическим байтам в самих файлах, в зависимости от конфигурации.

Если вы хотите добавить поддержку дополнительных типов файлов, вы можете сделать это с помощью xdg-mime . Эта страница документирует свою семантику XML.

В принципе, для этого также можно использовать mailcap (с помощью run-mailcap), который рассматривает только расширения, но я не видел среды рабочего стола, которая делает это очень долго.

3

На самом деле, Linux сам не заботится о типах файлов, он заботится только о том, является ли файл исполняемым или нет, и это определяется свойствами файла, а не содержимым. Однако здесь может помочь инструмент для работы с file , который распространяется вместе с Linux. file сравнивает содержимое файла с базой данных и ищет совпадение Различные форматы файлов используют магические числа в своих заголовках, например, каждый файл JPEG начинается с FFD8 и заканчивается FFD9 . вы, возможно, помните, что старые исполняемые файлы DOS всегда начинаются с MZ , что опять-таки магическое число.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .