ファイル名拡張子

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

ファイル名拡張子ファイル名拡張子、またはファイル拡張子は、コンピューターファイル名前の接尾辞です(例、、、拡張子は、ファイルの内容またはその使用目的の特性を示します。ファイル名拡張子は通常、ピリオド(ピリオド)でファイル名の残りの部分から区切られます、一部のシステム[1]ではスペースで区切られています。その他の拡張フォーマットには、GNULinuxの初期バージョンおよびIBMAIXの一部のバージョンでのダッシュおよび/またはアンダースコアが含まます[要出典].txt.docx.rs

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

使用法

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

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

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

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

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

改善

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

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

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

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

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

最終的に、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を提供します。この方法は、アソシエーションマッピングの本質的にグローバルな性質と、開発者がプロ​​グラムを呼び出すときに拡張機能を不完全に回避すること、および開発者がその回避を強制できないという問題があります。

事実上すべてのバージョンの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からダウンロードした場合や、e-として受信した場合など、操作の特定の「ゾーン」で「危険」と見なされるファイル名拡張子のカスタマイズ可能なリストが含まれていました。メールの添付ファイル。最新のウイルス対策ソフトウェアシステムは、可能な場合、そのような攻撃の試みからユーザーを保護するのにも役立ちます。

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

も参照してください

参考文献

  1. ^ 「ファイルとは何ですか?」 (PDF)z / VM-バージョン7リリース1-CMS入門書 (PDF)IBM。2018-09-11。p。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. ^ 「ファイル拡張子とは何ですか?」

外部リンク