FILE(1)

名称
file - ファイルの種類を判定する

書式
file [ -vczL ] [ -f namefile ] [ -m magicfile ] file ...

解説
file は、name で指定されたファイルの種類を判定するプログラムです。判定の ために、ファイルシステムテスト、マジックナンバーテスト、言語テストの3 つのテストを順に実行し、ファイルの種類を表示します。

ファイルの種類は大きく次の3つに分類され、さらに、細かいテストによって、可 能なかぎりファイルの種類を細かく判定します。

text
    ASCIIキャラクタだけのファイルで、ASCII端末に表示した場合、問 題が起こらないもの。プログラムの場合は、その言語もある 程度判定します。

executable
    UNIXカーネルなどにより実行可能なプログラムファイル。

data
    その他のもの。コアファイルやアーカイブファイルなど、内 部フォーマットがよく知られたファイルなどは判定されます。

オプションとしては以下のものがあります。

-m magic_file
    マジックナンバーテストの情報をmagic_fileから読み込みます。

-z  compress で圧縮されたファイルの中身についてファイルタイプを推定します。

-c  チェックのため、マジックナンバーファイルのパージングした形式で表 示します。このオプションは-mオプションとともに使い、新しいマジックナン バーファイルをインストールする前のデバッグのために使います。

-f name_file
    -fオプションのあとにはターゲットとなるファイル名を1行 ずつ列記したname_fileを指定します。name_fileが指定された場合、そのファ イルを処理してから、引数のnameで指定したファイルの種類を判定します。 引数として、少なくともname_fileが1つはなければいけません。標準入力から読 み込んでファイルの種類を判定させる場合は、nameとして、``-''を指定します。

-L  シンボリックリンクの場合は、リンクをたどって実際のファイルの中 身の種類を判定します。ちょうど、 ls(1) コマンドの -L オプションと同じです。

ファイルシステムテストは、 stat(2) システムコールによります。ファイルが 空か、スペシャルファイルかをチェックします。使っているシステムに適用され ているファイルタイプ (ソケット、シンボリックリンク、名前付きパイプなど) は、ヘッダファイル sys/stat.h に定義されています。

マジックナンバーテストは、ファイルのなかに、特定のフォーマットのデータが あるかどうかをチェックします。よい例がプログラムをコンパイルして得られる 実行ファイル a.out です。このフォーマットは、通常、インクルードファイ ルのあるディレクトリ内の a.out.h や exec.h に定義されています。これらのファイルは、OSに対し、実行可能ファイルである などのタイプを認識させるため、 ファイルの始めや、特定の場所に、マジックナンバーがつけられています。 file コマンドが扱うマジックナンバーの情報は、 /etc/magic ファイルから読み込まれます。

もしファイルが ASCII ファイルなら、 file コマンドはファイルの最初の数ブロックに特定の文字列かあるかどうかを探し、 その言語を推定します。たとえば、キー ワード .br があれば、それはおそらく troff 用のファイルですし、 struct があれば、それはC言語のプログラムに見られるキーワードです。ただし、 こうした推定は、必ずしも正しいとは言えません。

file コマンドの判定方法に関して、さらに詳しく知りたい場合は、``man file'' と してみてください。

関連ファイル
magic(5) - マジックナンバーファイルのフォーマットの説明
strings(1), od(1) - 非テキストファイルを見るツール