MIMEタイプとFile .extensionsの関係は何ですか?


19

ここで間違った考えを持っているかもしれませんが、私はそれを考えました:

MIMEタイプは、ファイルに埋め込また識別コードです。
ファイル.extensionsはファイルの名前に接尾辞が付いた識別コードです。

薄暗い暗黒時代に聞いたものから、Linuxは.extensionに依存しないと思っていました...(多分それは初期の頃で、それから状況は変わったのでしょうか...)

私は最近、Windowsの世界から来ました。オペレーティングシステムレベルでは、ファイル.extensionが(私の知る限り)それを関連するアプリケーションプログラムに関連付ける唯一の方法です。

私にはわからないので、なぜ、私はそれは少し「フレッド」という名前のファイルという当惑を見つける、テキストエディタで開いている両方のアップ「fred.txtを」という名前のファイル。

ここには明確な階層がありますか?

回答:


16

MIMEタイプは、タイプに名前を付けるための単なる方法です。ファイルの種類がどのように決定されるかには関係ありません。

ファイルの種類を判断するには、2つの方法があります。a)拡張子を見て、正確であることを期待するか、b)その内容を見て、それに基づいて推測します。ファイルに拡張子がない場合は、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ページであると想定し、Webブラウザーで開きます。同じことがバイナリファイル形式でも機能します。たとえば、ビットマップファイル形式はASCIIの「BMP」で始まり、その後に画像を表すバイナリデータが続くことを知っています。

簡単に言えば、Linuxプログラムは、ファイル内のデータとそのファイル拡張子に基づいて、経験に基づいた推測を行います。これは非常に信頼できるとは思えないかもしれませんが、使用されるアルゴリズムは、私が説明した例よりも複雑で、実際に正確です。


5

Linuxの世界では、ファイル拡張子はファイルの種類を示す1つの指標にすぎません。ファイルのタイプを推測する「ファイル」と呼ばれるコマンドラインツールがあります。

このタイプを取得するには、主に3つのインジケーターがあります。

  • 拡張子
  • ファイルシステムの特別な属性(シンボリックリンクまたはハードリンク、フォルダー、入力デバイスなど)
  • コンテンツ
    • バイナリ(実行可能ファイルのELF情報など)
    • テキスト(<html>、など#!/bin/bash

ファイルタイプとMIMEタイプの関係は、MIMEがファイルのタイプを表すための唯一の標準であるということです(などtext/css)。

Linuxはファイルタイプを「推測」し、そのタイプに関連付けられたプログラムを開きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.