file(1) FreeBSD 一般コマンドマニュアル

file

前のページ 上に戻る 次のページ

file


     file -C [-m magicfile]


解説

     このマニュアルは file コマンドのバージョン 3.36 について記載しています。

     file は、引数で指定されたファイルの種類を判定するプログラムです。判定のた
     めに、ファイルシステムテスト、マジックナンバテスト、言語テストの 3 つのテ
     ストをこの順に実行し、 最初に判定できた結果からファイルの種類を表示しま
     す。

     ファイルの種類として表示されるのは、 ``text'' (印字可能文字と少数の制御文
     字だけのファイルで、 ASCII 端末に表示した場合、問題が起こらないもの)、
     ``executable'' ( UNIX カーネル等に理解可能な形にコンパイルされたプログラ
     ムを含むファイル)、その他のものを意味する ``data'' (data は、通常 `バイナ
     リ' か表示不能なもの) のうちの 1 つです。例外は、内部フォーマットがよく知
     られた、バイナリデータを含むファイル (コアファイルや tar アーカイブ) で
     す。ファイル /usr/share/misc/magic やプログラムそのものを変更するときは、
     これらのキーワードを残して下さい。ディレクトリ内のすべての可読なファイル
     は、単語 ``text'' を表示することが期待されています。 Berkeley で行われた
     ように、 ``shell commands text'' を ``shell script'' と変更するようなこと
     はしないで下さい。ファイル /usr/share/misc/magic は、 file のソース配布中
     の Magdir サブディレクトリ中の大量の小さなファイルから機械的に構築される
     ことに注意してください。

     ファイルシステムテストは、 stat(2) システムコールからの戻り値を調べること
     に基づいています。このプログラムは、ファイルが空であるかどうか、ある種の
     特殊ファイルであるかどうかを調べます。使っているシステムに合った既知の
     ファイルの種類 (システムに実装されたソケット、シンボリックリンク、名前付
     きパイプ (FIFO)) は、システムヘッダファイル <sys/stat.h> で定義されていれ
     ば表示されます。

     マジックナンバテストは、ファイルが固定フォーマットのデータであるかどうか
     をチェックするために使われます。よい例が、実行可能なバイナリ実行形式 (コ
     ンパイルされたプログラム) a.out ファイルです。このフォーマットは標準イン
     クルードディレクトリ内の <a.out.h> や場合により <exec.h> で定義されていま
     す。実行ファイルは、ファイルの先頭近くの特定の場所に、 `マジックナンバ'
     を持ちます。これは UNIX オペレーティングシステムに対し、ファイルがバイナ
     リ実行形式であり、どのタイプの実行可能ファイルであるかを知らせます。 `マ
     ジックナンバ' の概念は拡張され、データファイルにも適用されています。ファ
     イルの先頭に近い固定位置に固定識別子があるファイルは、このように記述でき
     ます。これらのファイル識別情報は、組み込みのマジックファイル
     /usr/share/misc/magic.mgc または組み込みファイルが存在しない場合は
     /usr/share/misc/magic から読み込まれます。

     ファイルがマジックファイルのどのエントリにもマッチしない場合、 text ファ
     イルに見えるかどうか検査されます。 ASCII, ISO-8859-x, 非 ISO 8-bit 拡張
     ASCII 文字集合 (Macintosh および IBM PC システムで使用), UTF-8-encoded
     Unicode, UTF-16-encoded Unicode, EBCDIC の文字集合が区別可能であり、これ
     には各文字集合における印字可能 text を構成するバイトの範囲およびシーケン
     スを使用します。ファイルがこれらのテストのいずれかを通過した場合、文字集
     合が報告されます。 ASCII, ISO-8859-x, UTF-8, extended-ASCII ファイルは
     ``text'' として識別されます。なぜなら、ほとんどどのような端末においても読

     上記の文字集合のいずれで記述されているとも識別できなかったファイルは、単
     に ``data'' と呼ばれます。


オプション

     -b      出力行の前にファイル名を付けません (短縮モード)。

     -c      マジックファイルを解析した形式を、調査できるように表示します。通
             常、新しいマジックナンバファイルを使う前にデバッグするために、 -m
             オプションとともに用います。

     -C      magic.mgc 出力ファイルを書きます。これには構文解析される前のバー
             ジョンのファイルが含まれます。

     -f namefile
             引数の前に name_file から調べるべきファイル名を (1 行に 1 つ) 読
             み込みます。 name_file もしくは引数の filename は少なくとも 1 つ
             は指定しなければなりません。標準入力のファイルの種類を判定させる
             場合は、ファイル名として、 ``-'' を指定します。

     -i      file に、伝統的な人間が読める形式の代りに、 mime タイプ文字列を出
             力させます。よって、 ``ASCII text'' の代りに ``text/plain;
             charset=us-ascii'' となります。本オプションが動作するようにするた
             めに、 file はファイル認識方法 (例えば、多くの text ファイルタイ
             プやディレクトリ等) を変え、別の magic ファイルを使用します (後述
             の 関連ファイル節を参照してください)。

     -k      最初にマッチしても停止せずに、処理を継続します。

     -m list
             マジックナンバを含む別のファイルの list を指定します。これは、1
             つのファイルか、コロン (:) で分けられたファイルのリストです。

     -n      各ファイルのチェック後に、標準出力をフラッシュします。ファイルの
             一覧をチェックしているときのみ、有用です。ファイルタイプをパイプ
             から出力するプログラムにおいて使用することを意図します。

     -v      プログラムのバージョンを表示して、終了します。

     -z      compress で圧縮されたファイルの中身を見ようとします。

     -L      オプションは(システムがシンボリックリンクを提供していれば)、
             ls(1) コマンドの -L オプションと同様にシンボリックリンクをたどっ
             て実際のファイルの中身の種類を判定します。

     -s      通常、 file が引数のファイルの読み込みとタイプの判定を行うのは、
             stat(2) が通常ファイルであると報告した場合のみです。これにより問
             題を回避しています。なぜなら、特殊ファイルの読み込みは、特定の結
             果を発生させる場合があるからです。 -s オプションを指定すると、
             file は、ブロックおよびキャラクタの特殊ファイルも読み込みます。こ
             れは、raw ディスクパーティション中のデータに存在するファイルシス
             テムタイプの判定に有用です。なぜなら、raw ディスクパーティション

     ことができます。


関連項目

     hexdump(1), od(1), strings(1), magic(5)


標準適合性

     FILE(CMD) の System V Interface Definition, Fourth Edition (``SVID4'') の
     曖昧な記述から判断する限りにおいては、このプログラムはこの仕様を越えてい
     ると思われます。同名の System V のプログラムと、ほとんど動作は同じです。
     しかし、このバージョンはより多くのマジックを知っているので、多くの場合に
     異なった (より正確な) 出力を出します。

     このバージョンと System V のものとの大きな違いは、このバージョンは全ての
     空白を区切り文字として扱うためパターン内の空白はエスケープしなければなら
     ないということです。たとえば、

           >10  string    language impress    (imPRESS data)

     とマジックファイルに書かれていた場合は、次のように変更せねばなりません。

           >10  string    language\ impress   (imPRESS data)

     またこのバージョンでは、バックスラッシュを含んでいるパターンもエスケープ
     しなくてはいけません。たとえば、

           0    string         \begindata     Andrew Toolkit document

     とマジックファイルに書かれていた場合は、次のように変更せねばなりません。

           0    string         \\begindata    Andrew Toolkit document

     Sun Microsystems の SunOS リリース 3.2 もしくはそれ以降には、 System V 由
     来の file(1) コマンドが含まれていますが、拡張がなされています。このバー
     ジョンは SUN のものとは、細かい点でしか異なりません。このバージョンには
     `&' 演算子の拡張が含まれています。使い方は、次のようなものです。

           >16  long&0x7fffffff     >0        not stripped


マジックディレクトリ

     マジックファイルのエントリは様々なソース (主に USENET) から集められたり、
     様々な作者から提供されました。 Chirstos Zoulas (下記のアドレス) が、マ
     ジックファイルエントリをさらに集めたり訂正するでしょう。統合したマジック
     ファイルエントリは、定期的に配布されるでしょう。

     マジックファイルにおけるエントリの順序は重要です。使っているシステムに
     よって、エントリの順序が正しくなくなることがあります。もし、あなたの古い
     file コマンドがマジックファイルを使っているのなら、比較のため古いマジック
     ファイルを保存して下さい (たとえば、 /usr/share/misc/magic.orig という名
     前に変更します) 。


使用例

     $ file file.c file /dev/hda
     /dev/hda8:  Linux/i386 swap file
     /dev/hda9:  empty
     /dev/hda10: empty

     $ file -i file.c file /dev/hda
     file.c:      text/x-c
     file:        application/x-executable, dynamically linked (uses shared libs), not stripped
     /dev/hda:    application/x-not-regular-file


歴史

     file コマンドは、少なくとも Research Version 6 (マニュアルページの日付
     は、1975 年 1 月 16 日) からはどの UNIX にもありました。 System V バー
     ジョンはある重要な変更、すなわち外部マジックナンバリストを導入しました。
     これによってプログラムのスピードはわずかに低下しましたが、更にまた柔軟に
     なりました。

     このプログラムは、System V バージョンを基づいており、 Ian Darwin
     <ian@darwinsys.com> によって、他の誰かのソースコードを見ることなく書かれ
     ました。

     John Gilmore は、コードを拡張し、最初の版よりもよいものにしました。 Geoff
     Collyer は、不適当なところが数箇所あるのを発見し、いくつかマジックファイ
     ルエントリを提供しました。 Rob McMahon <cudcv@warwick.ac.uk> は、1989 年
     に、 `&' 演算子を寄贈しました。

     Guy Harris <guy@netapp.com> は、1993 年から現在に至り、多くの変更を行って
     います。

     基本開発と 1990 年から現在に至るメンテナンスを、 Christos Zoulas
     <christos@astron.com> が行っています。

     2000 年に Chris Lowth <chris@lowth.com> が修正を行い、 -i オプションが
     mime タイプ文字列を出力し、別のマジックファイルと内部ロジックを使用するよ
     うになりました。

     2000 年 7 月に Eric Fischer <enf@pobox.com> が修正を行い、文字コードを識
     別し、非 ASCII ファイルの原語を識別しようとするようになりました。

     Magdir ディレクトリ ( /usr/share/misc/magic ファイルのソース) に対する寄
     贈者は、ここに含めるには長過ぎます。ご了承ください。


法律上の注意

     Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.  Covered by the
     standard Berkeley Software Distribution copyright; see the file
     LEGAL.NOTICE in the source distribution.

     The files tar.h and is_tar.c were written by John Gilmore from his pub-
     lic-domain tar program, and are not covered by the above license.


バグ

     Pagicdir から Magic ファイルを自動的に作成するよりよい方法があるはずで
     す。それは何なのでしょうか。より起動を速くするためマジックファイルをバイ
     をフィールドの識別子にすることは醜く、ファイルの編集を難しくしています
     が、残されています。

     キーワードに大文字を許すことが勧められます。たとえば、 troff(1) コマンド
     と man page マクロの区別です。正規表現のサポートで、このことは簡単になる
     でしょう。

     FORTRAN に対してプログラムが働きません。行の先頭にインデントされているキ
     ーワードを見ることにより FORTRAN だと判別すべきです。正規表現のサポートに
     よりこれは簡単になるでしょう。

     ascmagic に入っているキーワードのリストは、おそらく Magic ファイルに入れ
     るべきものです。これはオフセットの値として `*' のようなキーワードを使うこ
     とで可能でしょう。

     最初の文字、最初の語、最初の long などに関するテストを 最初に読み込んだと
     きに全て行うことができるようマジックファイルを並べ直す最適化法はないだろ
     うか。マジックファイルの矛盾について述べるようにならないか。エントリーの
     順序をマジックファイル上の位置ではなく、ファイルオフセット順にすることは
     できないだろうか。

     プログラムは、推定が ``どれぐらいよい'' のかを知る方法を提供すべきです。
     ファイルの最初の 5 文字が ``From '' であるときに推測をしても、
     ``Newsgroups:'' や ``Return-Path:'' といった文字による推測ほどよくはない
     ので、推測結果を捨てることになります。しかし、もしそういった文字が現れな
     ければ最初の推定を使わなければなりません。

     このプログラムは、いくつかの商用の file コマンドより遅いです。複数の文字
     コードのサポートにより、より遅くなっています。

     このマニュアルページ、特にこの節が長過ぎます。


入手性

     オリジナル作者の最新のバージョンを anonymous FTP で、 ftp.deshaw.com/pub/file/file-X.YY.tar.gz から手に入れることができます。

FreeBSD 4.4                      April 4, 2001                     FreeBSD 4.4

ABELNET VPSサービス