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) - 非テキストファイルを見るツール