ファイルサフィックスを使わずにファイル形式をどのように知ることができますか?

ファイルサフィックスを使わずにファイル形式をどのように知ることができますか?

ファイル名にサフィックスがない場合は、ファイルの種類を知る方法を知りたいです。

たとえば、名前付きファイルはmyfileバイナリまたはテキストで始めることができます。システムは、ファイルがバイナリかテキストかどうかをどのように知ることができますか?

ベストアンサー1

これfileユーティリティは、次の3つの方法でファイルの種類を決定します。

まずファイルシステムのテスト:これらのテストの1つで統計資料一連のシステムコールがファイルに対して呼び出されます。これは別の結果を返します。UNIXファイルの種類:通常のファイル、ディレクトリ、リンク、文字デバイス、ブロックデバイス、名前付きパイプまたはソケット。それに応じて魔法テストを行います。

これ魔法テスト少し複雑です。ファイル形式は、スキーマと呼ばれるデータベースを介して推測されます。マジックファイル。一部のファイル形式は、ファイル内の特定の場所(バイナリファイルなど)からビットまたは数字を読み取ることによって決定できます。マジックファイルには「マジックナンバー「ファイルにその内容が含まれているか、どのテキスト情報を印刷するかをテストします。マジックナンバー1〜4バイトの値、文字列、日付、または正規表現です。追加のテストで追加情報を見つけることができます。実行可能ファイルの場合、追加情報はファイルが実行可能ファイルかどうかです。動的リンクまたは、剥がれたそれとも建築ではありません。ファイル形式を実際に識別するには、複数のテストに合格する必要がある場合があります。しかし、とにかく何回テストをしても、常に良い結果が出てくる。推測する

以下は、魔法の数がどのように見えるかを理解するのに役立ついくつかの一般的なファイル形式のファイルの最初の8バイトです。

             Hexadecimal          ASCII
PNG   89 50 4E 47|0D 0A 1A 0A   ‰PNG|....
JPG   FF D8 FF E1|1D 16 45 78   ÿØÿá|..Ex
JPG   FF D8 FF E0|00 10 4A 46   ÿØÿà|..JF
ZIP   50 4B 03 04|0A 00 00 00   PK..|....
PDF   25 50 44 46|2D 31 2E 35   %PDF|-1.5

マジックテストでファイル形式が見つからない場合は、ファイルがテキストファイルとして表示され、fileコンテンツのエンコードが見つかります。エンコーディングは、各グループで印刷可能なテキストを構成するさまざまな範囲とバイトシーケンスによって区別されます。

改行文字も16進値に基づいて研究されています。

  • 0A( \n) Un*x/Linux/BSD/OSX 終了ファイル分類
  • 0D 0A\r\n)はMicrosoftオペレーティングシステムのファイルです。
  • 0D\r)はバージョン9より前のMacオペレーティングシステム用です。
  • 15\025)はIBMのAIXです。

言語テストスタート。テキストファイルの場合は、ファイルに特定の文字列が含まれているかどうかを検索して、そのファイルに含まれる言語(C、Perl、Bash)を見つけます。一部のスクリプト言語は、次のように使用することもできます。ハッシュボーン#!/bin/interpreter)スクリプトの最初の行にあります。

ファイルに適用される内容がない場合、ファイル形式を確認できず、file「データ」のみが印刷されます。

したがって、サフィックスは必要ありません。誤って設定すると、サフィックスが混乱を招く可能性があります。

おすすめ記事