file コマンド

目的

ファイル・タイプを判別します。

構文

ファイル・タイプを分類する

file [ -m MagicFile] [ -d ] [ -h ] [ -i ] [ -M MagicFile ] [ -f FileList] [File...]

マジック・ファイル内で形式エラーを検査する

file -c [ -m MagicFile]

説明

file コマンドは、File パラメーターまたは FileList 変数で指定したファイルを読み取り、各ファイルで一連のテストを行い、各ファイルをタイプ別に分類します。 次に、そのファイル・タイプを標準出力に書き出します。 ファイル・タイプは、通常ファイル、ディレクトリー、FIFO (名前付きパイプ)、 ブロック・スペシャル、文字スペシャル、シンボリック・リンク、ソケットのいずれかです。

  • 通常ファイルで長さがゼロの場合は、空のファイルと見なされます。
  • シンボリック・リンクの場合は、デフォルトでは、 そのシンボリック・リンクが参照するファイルがそのリンクの後に続きます。

ファイルが ASCII フォーマットと見なされる場合は、 file コマンドで最初の 1024 バイトを検査して、 そのファイルのタイプを判別します。ファイルが ASCII フォーマットでなければ、file コマンドは拡張文字が入っているテキスト・ファイルとバイナリー・データ・ファイルとを区別します。

File パラメーターで実行可能ファイルまたはオブジェクト・モジュール・ファイルを指定している場合、バージョン番号が 0 より大きいと、 file コマンドはバージョン・スタンプを表示します。 ld コマンドのセクションに、a.out ファイルの使用方法が説明されています。

言語環境が C プログラミング言語である場合、file コマンドは、/etc/magic ファイルを使用してマジック・ナンバーのような番号を持つファイル、つまり、タイプを示す数値または文字列定数が入っているファイルを識別します。

ただし、言語環境が C プログラミング言語以外の言語である場合、file コマンドは、/usr/lib/nls/msg/<language_env.>/magic.cat ファイルを使用してマジック・ナンバーを持つファイルを識別します。

そのファイルが存在しない場合、読み取りができない場合、 あるいはファイル状況がその時点で判別できなかった場合、 それは、終了状況に影響を与えるエラーとは見なされません。 出力から、ファイルは処理されたがタイプの判別はできなかったということが分かります。

-i フラグを使用すると、 file を指定した各オペランドの識別に次の形式が使用されます。

"%s: %s¥n", file, type
type の値は指定されていません。ただし、 POSIX ロケールでは、file が次の表にリストされているいずれかのタイプとして識別される場合は、 type には対応する文字列が含まれます (しかし、対応する文字列に限定されません)。文字列内に示される各スペースは、 正確に 1 つの space になります。
表 1. ファイル・ユーティリティー出力文字列
file が以下に該当する場合 type には次の文字列が含まれます
ディレクトリー ディレクトリー
FIFO fifo
ソケット socket
ブロック・スペシャル block special
キャラクター・スペシャル character special
実行可能バイナリー executable
空の通常ファイル empty
シンボリック・リンク symbolic link to
ar アーカイブ・ライブラリー アーカイブ
拡張 cpio フォーマット cpio archive
拡張 tar フォーマット tar archive
シェル・スクリプト commands text
C 言語ソース c program text
FORTRAN ソース fortran program text
file がシンボリック・リンクとして識別される場合は、 次の代替出力形式が使用されます。
"%s: %s %s¥n", 
file, type, contents of link
"
file オペランドで指定されたファイルが存在しないかまたは読み取ることができない場合は、 文字列 cannot opentype フィールドの一部として組み込まれますが、 これは終了状況に影響を及ぼすエラーとは見なされません。 file オペランドで指定されたファイルのタイプが判別できない場合は、 文字列 data が、type フィールドの一部として組み込まれますが、 これは終了状況に影響を及ぼすエラーとは見なされません。

フラグ

項目 説明
-c 指定されたマジック・ファイル (デフォルトでは /etc/magic ファイル) に形式エラーがないかどうか検査します。この妥当性検査は、通常は行われません。このフラグを使うと、ファイルの分類は行われません。
-d 任意のデフォルトのシステム・テストをファイルに適用します。
-f FileList 指定されたファイル・リストを読み取ります。 ファイルは、1 行に 1 つずつ表示し、先行スペースまたは後書きスペースが入っていてはなりません。
-h シンボリック・リンクが検出されると、そのファイルをシンボリック・リンクとして識別します。 -h フラグが指定されないで、かつ file が、存在しないファイルを参照するシンボリック・リンクである場合は、 file は、-h フラグが指定されている場合と同様に、 そのファイルをシンボリック・リンクとして識別します。
-i ファイルが通常ファイルの場合は、ファイルのタイプの分類は行われません。 ただし、説明で指定されているファイルは識別されます。
-m MagicFile マジック・ファイル (デフォルトでは /etc/magic ファイル) のファイル名を指定します。
-M MagicFile ファイルを分類するためにファイルに適用されるテストを含むファイルの名前を指定します。 デフォルトのシステム・テストは適用されません。

終了状況

このコマンドは以下の終了値を返します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

  1. ファイルに入っている情報のタイプを表示するには、次のように入力します。
    file myfile
    このコマンドにより、myfile のタイプのファイル (ディレクトリー、データ、ASCII テキスト、C プログラム・ソース、アーカイブなど) が表示されます。
  2. ファイル名のリストに登録されている、 それぞれのファイルのタイプを表示するには、次のように入力します。
    file -f filenames
    このコマンドにより、filenames リストに登録されている各ファイルのタイプが表示されます。ファイル名は、それぞれ 1 行につき 1 つでなければなりません。
注: file コマンドからカスタマイズされたメッセージを取得するには、 -m オプションを指定した個別のマジック・ファイルを使用します。 読み取り専用の /etc/magic ファイルを編集することはお勧めできません。

ファイル

項目 説明
/usr/bin/file file コマンドが入っています。
/etc/magic ファイル・タイプ・データベースが入っています。