ファイル名拡張子

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

ファイル名の拡張子ファイルの拡張子ファイルの種類がに接尾辞として指定された識別子である名前コンピュータファイル拡張子は、ファイルの内容またはその使用目的の特性を示します。ファイル名の拡張子は、典型的には、ファイル名とから区切られているピリオド(期間)が、いくつかのシステムでは、[1]には、スペースで区切られています。

一部のファイルシステムは、ファイルシステム自体の機能としてファイル名拡張子を実装し、拡張子の長さと形式を制限する場合がありますが、他のファイルシステムは、特別な区別なしにファイル名拡張子をファイル名の一部として扱います。

使用法

ファイル名拡張子は、メタデータの一種と見なすことができます[2]これらは通常、データがファイルに保存される方法に関する情報を暗示するために使用されます。ファイル名のどの部分がその拡張子であるかを決定するための基準を与える正確な定義は、使用される特定のファイルシステムの規則に属します。通常、拡張子は、ドット文字の最後の出現に続く部分文字列です例: txtはファイル名の拡張子readme.txtでありhtml、の拡張子ですmysite.index.html)。以下のようないくつかのメインフレーム・システムのファイル・システム上のCMSでのVMVMS、およびなどのPCシステムのCP / MMS-DOSなどの派生システムの場合、拡張子はファイル名とは別の名前空間です。 Microsoftの下でDOSWindowsのような拡張子EXECOMまたはBATファイルがプログラムであることを示している実行可能。ではOS / 360および後継者、最後のピリオド以下のデータセット名の一部は、例えば、いくつかのソフトウェアにより拡張として扱われTSO EDITは、それは、オペレーティングシステム自体に特別な意味を持ちません。同じことがMVSのUnixファイルにも当てはまります。

UNIXライクなオペレーティングシステムのファイルシステムは、拡張子のメタデータを残りのファイル名から分離しません。ドット文字は、メインファイル名の単なる別の文字です。ファイル名には、拡張子を付けない、単一の拡張子、または複数の拡張子を付けることができます。複数の拡張は、通常のようなネストされた変換を表すfiles.tar.gz.tarファイルがあることを示しているtarアーカイブ1つのまたは複数のファイルの、および.gztarアーカイブ・ファイルを用いて圧縮されていることを示しGZIP)。ファイルを変換または作成するプログラムは、(出力ファイル名が明示的に指定されていない限り)入力ファイル名から推測される名前に適切な拡張子を追加できますが、ファイルを読み取るプログラムは通常、情報を無視します。これは主に人間のユーザーを対象としています。特にバイナリファイルでは、ファイル自体にその内容を説明する内部メタデータが含まれていることがより一般的です。このモデルでは通常、コマンドで完全なファイル名を指定する必要がありますが、メタデータアプローチでは、拡張子を省略できることがよくあります。

Windows用VFATNTFS、およびReFSファイルシステムも、拡張子のメタデータを残りのファイル名から分離せず、複数の拡張子を許可します。

グラフィカルユーザーインターフェイスの出現により、ファイル管理とインターフェイスの動作の問題が発生しました。 Microsoft Windowsでは、複数のアプリケーションを特定の拡張子に関連付けることができ、ファイルの表示、編集、印刷のいずれかを選択できるコンテキストメニューなど、必要なアプリケーションを選択するためのさまざまなアクションを利用できました。それでも、拡張子は単一のファイルタイプを表すと想定されていました。拡張機能とアイコンの間に明確なマッピングがありました。

古典的なMac OSは、完全に、ファイル名ベースの拡張メタデータの配置されました。代わりに、ファイル形式を識別するために個別のファイルタイプコードを使用しました。さらに、ファイルのアイコンダブルクリックされたときに起動されるアプリケーションを決定するための作成者コードが指定されましたただし、macOSは、UNIXライクなNeXTSTEPオペレーティングシステムから派生した結果として、ファイル名のサフィックス、タイプコード、作成者コードを使用します。

改善

ファイル名拡張子は、もともとファイルのジェネリック型を決定するために使用されていました。[要出典]ファイルのタイプを3文字に凝縮する必要があるため、拡張子が省略されることがよくありました。例としては、使用することを含む.GFX、グラフィックファイル用.TXTのために、プレーンテキスト、および.MUS音楽のため。ただし、これらのデータ型(およびその他)をさまざまな方法で処理するさまざまなソフトウェアプログラムが作成されているため、ファイル名拡張子は特定の製品、さらには特定の製品バージョンと密接に関連するようになりました。たとえば、使用された初期のWordStarファイル.WSまたは、ここでn.WSnプログラムのバージョン番号でした。また、いくつかのファイル名拡張子の競合する使用法が開発されました。 1つの例は.rpmRPM PackageManagerパッケージとRealPlayerMediaファイルの両方に使用されます。[3]その他は.qifDESQviewフォント、Quicken財務元帳、およびQuickTime画像で共有されます。[4] .gbaGrabItスクリプトとゲームボーイアドバンスROMイメージで共有[5] .sbSmallBasicおよびScratchに使用されます;および.dtsDynamix ThreeSpaceおよびDTSに使用されています。

ファイル名拡張子を使用する他のいくつかのオペレーティングシステムでは、通常、ファイル名に対する制限が少なくなっています。多くの場合、14文字以上の完全なファイル名の長さが許可され、最大255の名前の長さも珍しくありませんでした。MulticsUNIXなどのオペレーティングシステムのファイルシステムファイル名を単一の文字列として保存し、ベース名と拡張子のコンポーネントに分割せず、「。」を許可しました。ファイル名で許可されている別の文字にすること。このようなシステムでは、通常、可変長のファイル名が許可され、複数のドット、したがって複数のサフィックスが許可されます。MulticsとUNIXの一部のコンポーネント、およびそれらで実行されるアプリケーションは、ファイルタイプを示すためにサフィックスを使用する場合がありましたが、ファイルタイプを示すためにサフィックスを使用していました。たとえば、実行可能ファイルや通常のテキストファイルの名前にはサフィックスがありませんでした。

高性能ファイルシステム、マイクロソフトとで使用される(HPFS)、IBMOS / 2はまた、長いファイル名をサポートし、名前と拡張子にファイル名を分割しませんでした。HPFSがファイルの拡張属性をサポートしていても、接尾辞を使用する規則は継続され、ファイルのタイプを拡張属性としてファイルに格納できるようになりました。

MicrosoftのWindowsNTのネイティブファイルシステムであるNTFSは、長いファイル名をサポートし、ファイル名を名前と拡張子に分割しませんでしたが、既存のバージョンのWindowsとの互換性のために、拡張子をシミュレートするためにサフィックスを使用する規則が継続されました。

インターネット時代が最初に到来したとき、まだ8.3ファイル名形式に制限されているWindowsシステムを.HTM使用している人名前がで終わるWebページを作成する必要がありましたがMacintoshまたはUNIXコンピューターを使用している人は推奨される.htmlファイル名拡張子を使用できました。また、これは使って実験プログラマのための問題となったのJavaプログラミング言語、それがあるため、必要と4文字の接尾辞.javaのためのソースコードファイルと5文字の接尾辞.classのJava用コンパイラの オブジェクトコードの出力ファイルを。[6]

最終的に、Windows 95は長いファイル名のサポートを導入し、VFATと呼ばれる一般的に使用されるFAT ファイルシステムの拡張バージョンで、NT以外のWindowsからファイル名の8.3名/拡張子の分割を削除しました。 VFATは、Windows NT3.5およびWindows95で最初に登場しました。 VFATでの長いファイル名の内部実装は、主に応急修理と見なされます[誰が? ]、ただし、Windows NTを適切に実行できないマシンでは、重要な長さの制限が削除され、ファイルに大文字小文字を混在させることができました

コマンド名の問題

コマンド名でのファイル拡張子の使用は、通常、スクリプトとして実装されたコマンドの副作用として表示されることがあります。たとえば、BourneシェルまたはPythonの場合、およびコマンド名の末尾にインタプリタ名が付いている場合などです。ファイル拡張子とインタプリタの関連付けに依存するシステムでは一般的ですが、LinuxOracle SolarisBSDベースのシステム、AppleのmacOSなどのUnixのようなシステムで大幅に非推奨になります[7]。インタプリタは通常、スクリプトのヘッダー(「shebang」)。

アソシエーションベースのシステムでは、ファイル名拡張子は通常、その拡張子のインタプリタの単一のシステム全体の選択にマップされ(Pythonを使用することを意味する「.py」など)、コマンド自体はコマンドラインから実行可能です。拡張は省略されます(適切なセットアップが行われていることを前提としています)。実装言語が変更されると、コマンド名の拡張子も変更され、OSは、どちらの場合も同じ拡張子のないバージョンのコマンドを使用できるようにすることで、一貫したAPIを提供します。この方法は、アソシエーションマッピングの本質的にグローバルな性質と、プログラムを呼び出すときに開発者が拡張機能を不完全に回避すること、および開発者がその回避を強制できないという問題があります。 Windowsは、このメカニズムを広く採用している唯一の企業です。

事実上すべてのバージョンのUnixを含むインタプリタディレクティブを備えたシステムで、コマンド名拡張子は特別な意味を持たず、スクリプトのインタプリタを設定する主な方法は、インタプリタを指定する1行で開始することであるため、標準的な方法では使用されません。使用(これは縮退したリソースフォークと見なすことができます)。これらの環境では、コマンド名に拡張子を含めると、実装の詳細が不必要に公開され、実装が変更された場合に、他のプログラムからのコマンドへのすべての参照が将来のリスクにさらされます。たとえば、シェルスクリプトがPythonまたはRubyで再実装され、後でCまたはC ++で再実装されることは完全に正常であり、これらはすべて、使用される拡張機能でコマンドの名前を変更します。拡張子がない場合、プログラムは常に同じ拡張子のない名前を持ち、インタプリタディレクティブマジックナンバーのみが変更され、他のプログラムからのプログラムへの参照は引き続き有効です。

セキュリティの問題

Microsoft Windows提供されるファイルブラウザであるファイルエクスプローラのデフォルトの動作では、ファイル名拡張子は表示されません。悪意のあるユーザーは、のように形成されたファイル名を使用してコンピュータウイルスコンピュータワームを広めようとしました。これが、この場合はVBScriptで記述された有害なコンピュータプログラムであるという事実をユーザーに警告することなく、無害なテキストファイルとして表示されることを期待していますReactOSのデフォルトの動作は、ReactOSエクスプローラーでファイル名拡張子を表示することです。 LOVE-LETTER-FOR-YOU.TXT.vbsLOVE-LETTER-FOR-YOU.TXT

それ以降のWindowsバージョン(Windows XP Service Pack2およびWindowsServer 2003以降)には、Webからダウンロードした場合や、電子メールとして受信した場合など、特定の操作の「ゾーン」で「危険」と見なされるファイル名拡張子のカスタマイズ可能なリストが含まれていました。メールの添付ファイル。最新のウイルス対策ソフトウェアシステムは、可能な場合、そのような攻撃の試みからユーザーを防御するのにも役立ちます。

一部のウイルスは「間の類似性を利用.COMトップレベルドメイン「.COM」ファイル名の拡張子のURL(に似た名前で悪質な、実行可能なコマンドの添付ファイルを電子メールで送信することにより、例えば、 『myparty.yahoo.com』 )、知らないユーザーがWebサイトにつながると思われる電子メールに埋め込まれたリンクをクリックするが、実際には悪意のある添付ファイルをダウンロードして実行するという効果があります。

一部のWindowsアプリケーションの脆弱性を悪用するように作成されたマルウェアのインスタンスがあり、長すぎる未処理のファイル名拡張子を持つファイルを開くと、スタックベースのバッファオーバーフローが発生する可能性があります

ファイル名拡張子は単なるマーカーであり、ファイルの内容はそれと一致する必要はありません。[8]これは悪意のあるコンテンツを偽装するために使用できます。したがって、セキュリティ上の理由でファイルを識別しようとする場合、拡張子のみに依存することは危険であると見なされ、ファイルの内容を適切に分析することが推奨されます。たとえば、UNIX派生システムでは、ファイル(command)などのコマンドが代わりに使用されることを意図しており、ファイルのヘッダーを読み取ってその内容を判別するため、拡張子のないファイルを見つけることは珍しくありません

代替案

HTTPMIME電子メールなどの多くのインターネットプロトコルでは、ビットストリームのタイプは、ファイル拡張子ではなく、ストリームメディアタイプまたはMIMEタイプとして記述されます。これは、Content-type:text / plainなど、ストリームの前にあるテキスト行で指定されます

ファイル名拡張子とメディアタイプの間に標準のマッピングがないため、インターネット経由でファイルを転送するときに、作成者、Webサーバー、およびクライアントソフトウェア間で解釈が一致しない可能性があります。たとえば、コンテンツ作成者は圧縮されたスケーラブルベクターグラフィックスファイルの拡張子svgz指定できますが、この拡張子を認識しないWebサーバーは、適切なコンテンツタイプapplication / svg + xmlとそれに必要な圧縮ヘッダーを送信せず、Webブラウザーを離れる可能性があります。画像を正しく解釈して表示することができません。

BFSファイルシステムが拡張属性をサポートしているBeOSはメディアタイプを拡張属性としてファイルにタグ付けします。KDEGNOME デスクトップ環境はの方法で、ファイル名の拡張子やファイルの内容の両方を調べることで、ファイルをメディアタイプを関連付けるファイルとして、コマンドヒューリスティック。彼らは、そのメディアタイプに基づいてファイルが開かれたときに起動するアプリケーションを選択し、ファイル名拡張子への依存を減らします。macOSは、ファイル名拡張子とメディアタイプの両方、およびファイルタイプコードを使用して、ファイルタイプを内部で識別するためのUniform TypeIdentifierを選択します

も参照してください

参考文献

  1. ^ 「ファイルとは何ですか?」 (PDF)z / VM-バージョン7リリース1-CMS入門書 (PDF)IBM。2018-09-11。NS。7.SC24-6265-00。z / VMを使用したファイルの作成について知っておく必要があることの1つは、各ファイルには独自の3つの部分からなる識別子が必要であるということです。識別子の最初の部分はファイル名です。2番目の部分はファイルタイプです。そして3番目の部分はファイルモードです。これらの3つのファイル識別子は、しばしばfn ftfmと省略されます。
  2. ^ スタウファー、トッド; McElhearn、Kirk(2006)。Mac OSXをマスターするジョンワイリー&サンズ。pp。95–96。ISBN 97807821512822017年10月2日取得
  3. ^ filext.comからのファイル拡張子.RPMの詳細
  4. ^ filext.comからのファイル拡張子.QIFの詳細
  5. ^ filext.comからのファイル拡張子.GBAの詳細
  6. ^ 「javac–Javaプログラミング言語コンパイラ」Sun Microsystems、Inc.2004 2009年5月31日取得ソースコードファイル名には.javaサフィックスが必要であり、クラスファイル名には.classサフィックスが必要であり、ソースファイルとクラスファイルの両方にクラスを識別するルート名が必要です。
  7. ^ 有害と見なされるコマンド名拡張
  8. ^ 「ファイル拡張子とは何ですか?」

外部リンク