file コマンド
目的
ファイル・タイプを判別します。
構文
ファイル・タイプを分類する
file [ -m MagicFile] [ -d ] [ -h ] [ -i ] [ -M MagicFile ] [ -f FileList] [File...]
マジック・ファイル内で形式エラーを検査する
説明
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 ファイルを使用してマジック・ナンバーを持つファイルを識別します。
そのファイルが存在しない場合、読み取りができない場合、 あるいはファイル状況がその時点で判別できなかった場合、 それは、終了状況に影響を与えるエラーとは見なされません。 出力から、ファイルは処理されたがタイプの判別はできなかったということが分かります。
"%s: %s¥n", file, type
type の値は指定されていません。ただし、
POSIX ロケールでは、file が次の表にリストされているいずれかのタイプとして識別される場合は、
type には対応する文字列が含まれます
(しかし、対応する文字列に限定されません)。文字列内に示される各スペースは、
正確に 1 つの space になります。
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 |
"%s: %s %s¥n",
file, type, contents of link
"
file オペランドで指定されたファイルが存在しないかまたは読み取ることができない場合は、
文字列 cannot open
が type フィールドの一部として組み込まれますが、
これは終了状況に影響を及ぼすエラーとは見なされません。
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 | エラーが発生しました。 |
例
- ファイルに入っている情報のタイプを表示するには、次のように入力します。
このコマンドにより、myfile のタイプのファイル (ディレクトリー、データ、ASCII テキスト、C プログラム・ソース、アーカイブなど) が表示されます。file myfile
- ファイル名のリストに登録されている、
それぞれのファイルのタイプを表示するには、次のように入力します。file -f filenamesこのコマンドにより、filenames リストに登録されている各ファイルのタイプが表示されます。ファイル名は、それぞれ 1 行につき 1 つでなければなりません。
ファイル
項目 | 説明 |
---|---|
/usr/bin/file | file コマンドが入っています。 |
/etc/magic | ファイル・タイプ・データベースが入っています。 |