Provided by: manpages-ja_0.5.0.0.20161015+dfsg-1_all bug

名前

       file - ファイルタイプを判定する

書式

       file [ -bcikLnNprsvz ] [ -f namefile ] [ -F separator ] [ -m magicfiles ] file ...
       file -C [ -m magicfile ]

説明

       この man ページは file コマンド version 4.12 について記述している。

       file は各引き数をテストして分類する。 ファイルシステムテスト、マジックナンバーテスト、言語テストの 順序で
       3 つのテストを行う。 そのうちの最初に成功したテストで、ファイルタイプを表示する。

       表示されるタイプには通常以下のうち 1 つの単語が含まれる。 text  (このファイルには表示可能文字といくつかの
       一般的な制御文字のみが含まれ、 ASCII 端末で読んでも多分安全である)、 executable (このファイルにはプログラ
       ムをコンパイルした結果が含まれ、 UNIX カーネルなどにより実行可能な形式である)、 data  その他のもの  (data
       は通常「バイナリ」または表示不能なファイルである)。    ただしバイナリデータを含んでいる良く知られた形式の
       フォーマット (core ファイル、tar アーカイブなど) は例外である。 /usr/share/file/magic ファイルや file  プ
       ログラム自身を変更する場合も、  これらのキーワードは変更しないこと。 人々は、ディレクトリ内の読み取り可能
       なファイルに対しては、 全て ``text'' が表示されると思っている。 Berkeley  がかつてやったように、  ``shell
       commands  text'' を ``shell script'' に変更したりしてはいけない。 ファイル /usr/share/file/magic は、この
       プログラムのソースディストリビューションのサブディレクトリ Magdir  にある数多くの小さなファイルから機械的
       に作られている点に注意すること。

       ファイルシステムのテストは、    stat(2)   システムコールの結果の検討に基づいて行われる。   このプログラム
       は、ファイルが空であるかや、 特殊ファイルであるかをチェックする。  実行中のシステムに特有の既存のファイル
       タイプ (ソケット・シンボリックリンク・名前付きパイプ (FIFO) (ただしシステムで実装されている場合)) は、 シ
       ステムのヘッダファイル <sys/stat.h> に定義されていれば、すぐに分かる。

       マジックナンバーテストは、 特定の決まった形式のデータを含むファイルをチェックするのに使われる。  もっとも
       簡単な例は、バイナリ実行可能ファイル (コンパイルされたプログラム) a.out である。 この形式は標準インクルー
       ドディレクトリの a.out.h で定義されている (exec.h の場合もある)。  これらのファイルにはファイルの先頭付近
       の特定位置に 「マジックナンバー」が格納されている。 これにより UNIX オペレーティングシステムは、 ファイル
       がバイナリ実行可能であることが分かり、   そのうちのどのファイルタイプであるかも分かる。    「マジックナン
       バー」の考え方は、データファイルに対する拡張にも応用されている。 ファイルの先頭から近い場所に一定の識別子
       を持つファイルは、 通常はこの方法で記述できる。  これらのファイルについての情報識別子は、コンパイルされた
       マジックファイル  /usr/share/file/magic.mgc から読み込まれる。 このコンパイルされたファイルがない場合は、
       /usr/share/file/magic から読み込まれる。 更に file$HOME/.magic.mgc または  $HOME/.magic  からマジック
       ファイルのエントリを探す。

       ファイルがマジックファイルのどのエントリともマッチしなかった場合、  テキストファイルであるかを調べる。 文
       字集合内の表示可能なテキストを構成する   バイト列の範囲の違いを調べることにより、   ASCII,    ISO-8859-x,
       (Macintosh  や IBM PC システムで使用されている) ISO に準拠しない 8 ビット拡張 ASCII 文字集合、 UTF-8 エン
       コードされたユニコード、UTF-16 エンコードされたユニコード、 EBCDIC 文字集合を識別する。  ファイルがこれら
       のテストをパスすると、文字集合名が表示される。 ASCII, ISO-8859-x, UTF-8, 拡張 ASCII のファイルは、 これは
       ほぼ全ての端末で読むことができるので、 ``text'' として識別される。 UTF-16 と EBCDIC のファイルは、 たとえ
       テキストを含んでいたとしても読む前に変換が必要なので、  単なる  ``character data'' とされる。 さらに file
       はテキスト型ファイルの他の特徴も決定しようとする。 ファイルの行が Unix で標準的な LF ではなく、 CR, CRLF,
       NEL  で終了している場合は、その旨を表示する。 ファイルに組み込み (embedded) エスケープシーケンスや 重ね打
       ち (overstriking) が含まれている場合も、その旨を表示する。

       file はテキスト型ファイルで使われている文字集合を決定した後は、  ファイルが書かれている言語を決定しようと
       する。  言語テストではファイルの最初の数ブロックのどこかに現れる特定の文字列 (names.h を参照) を探す。 例
       えばキーワード  .br  があれば、そのファイルは多くの場合  troff(1)  の入力ファイルであることを示しており、
       キーワード  struct は C 言語プログラムであることを示している。 これらのテストは前のテストに比べると信頼性
       が低いので、 最後に実行される。 言語テストのルーチンは他のファイルタイプ (例えば tar(1) アーカイブ)  に関
       するテストも行う。

       上に挙げた文字集合のどれにも当てはまらないファイルは、 単に ``data'' と表示される。

オプション

       -b, --brief
               出力行の最初にファイル名を表示しない (簡易モード)。

       -c, --checking-printout
               マジックファイルの解析形式を表示してチェックする。  通常は -m オプションと一緒に用いて、 新しいマ
               ジックファイルをインストールする前のデバッグに使う。

       -C, --compile
               マジックファイルを事前に解析した内容を含む出力ファイル magic.mgc を書き出す。

       -f, --files-from namefile
               他の引き数リストより先に、検査するファイルの名前を namefile ファイルから読み込む (1 行に  1  つの
               ファイル名)。 namefile または少なくとも 1 つのファイル名引き数がなければいけない。 標準入力をテス
               トする場合は、ファイル名引き数として ``-'' を使うこと。

       -F, --separator separator
               指定した文字列をファイル名とファイルをテストした結果の区切り文字とする。 デフォルトは ``:''  であ
               る。

       -i, --mime
               file  コマンドの出力を人間が読みやすい昔ながらのものではなく、 mime タイプ文字列にする。 したがっ
               て ``ASCII text'' ではなく、 ``text/plain; charset=us-ascii'' のように出力される。 このオプション
               を動作させるため、  file コマンドが認識するファイルの取り扱い方法 (多くのテキストファイルタイプや
               ディレクトリ) を変更し、 別の ``magic'' ファイルを使うようにした。  (下記の「ファイル」のセクショ
               ンを参照)。

       -k, --keep-going
               最初にマッチしたもので停止せず、次のマッチングに進む。

       -L, --dereference
               (システムがシンボリックリンクをサポートしている場合は) ls(1) の同じ名前のオプションと同様に、シン
               ボリックリンクを辿るようにさせる。

       -m, --magic-file list
               マジックナンバーが書かれた別のファイルのリストを指定する。 1 つのファイルでも、コンマで区切られた
               ファイルのリストでもよい。  コンパイル済みのマジックファイルが一緒に指定された場合は、 代りにそれ
               を使う。

       -n, --no-buffer
               1 つのファイルをチェックする毎に、標準出力をフラッシュする。 これは複数のファイルをチェックすると
               きにのみ役立つ。  このオプションは、ファイルタイプをパイプから出力する プログラムで使われることを
               意図している。 -i または --mime オプションと一緒に指定すると、 このプログラムは各ファイル名の後に
               ".mime" を追加する。

       -N, --no-pad
               出力を整列するためのファイル名への空白の追加を行わない。

       -p, --preserve-date
               utime(2)  または  utimes(2) をサポートするシステムでは、 file(1) が解析したファイルを読み込まれな
               かったかのようにするため、 アクセス時刻を保存しようとする。

       -r, --raw
               印字不能文字を \ooo に変換しない。 通常、 file は印字不能文字を 8 進数表現に変換する。

       -s, --special-files
               通常 file は、引き数で指定されたファイルのうち stat(2) で通常のファイル (ordinary file)  とされた
               ファイルのみを読み込んで、  タイプの決定を行う。 特殊ファイルを読み込むと異常な結果を引き起こすか
               も知れないため、 この動作により問題を防止している。 -s オプションを指定すると、 file は引き数で指
               定されたブロックスペシャルファイルや  キャラクタスペシャルファイルも読み込む。 ブロックスペシャル
               ファイルである raw ディスクパーティションのデータの  ファイルシステムタイプを決定するのに役立つ。
               このオプションを指定すると  filestat(2) が返すファイルサイズを無視する。 これは raw ディスク
               パーティションのサイズを 0 として返すシステムも存在するためである。

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

       -z, --uncompress
               圧縮ファイルの中も検査する。

       --help  ヘルプメッセージを表示して終了する。

ファイル

       /usr/share/file/magic.mgc
              デフォルトのコンパイル済みのマジックナンバーのリスト。

       /usr/share/file/magic
              デフォルトのマジックナンバーのリスト。

       /usr/share/file/magic.mime.mgc
              デフォルトのコンパイル済みのマジックナンバーのリスト。 -i オプションが指定された場合に、mime  タイ
              プを出力するのに使用される。

       /usr/share/file/magic.mime
              デフォルトのマジックナンバーのリスト。  -i オプションが指定された場合に、mime タイプを出力するのに
              使用される。

       /etc/magic
              マジックナンバーについてのローカルな追加情報。

環境変数

       環境変数 MAGIC はデフォルトのマジックナンバーファイルの名前を設定する。 file はこの変数の値に ".mime"  と
       ".mgc" を適宜追加する (どちらか一方の場合もある)。 この変数が設定されると、 file$HOME/.magic をオープ
       ンしない。

関連項目

       magic(4) - マジックファイルのフォーマットについての記述。
       strings(1), od(1), hexdump(1) - 非テキストファイルを検査するためのツール。

標準への準拠

       このプログラムは System V Interface Definition の FILE(CMD) より優れていると考えている。 ファイルに含まれ
       ている曖昧な言語から決定するという点では似ている。 動作は同じ名前の System V のプログラムとほぼ互換性があ
       る。 このバージョンはより多くのマジックナンバーを認識する。 しかし多くの場合、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 releases 3.2 以降には、 System V のものから派生した file(1) コマンドが含まれて
       いるが、いくつか拡張されている。 私の作ったバージョンは、Sun のものと些細な違いしかない。 Sun  のバージョ
       ンは `&' オペレータの拡張が含まれ、 例えば以下のように使われる。
       >16  long&0x7fffffff     >0        not stripped

マジックディレクトリ

       マジックファイルのエントリは、  いろいろな情報源、主に USENET から集められ、 多くの著者から寄贈してもらっ
       た。 Christos Zoulas (アドレスは以下) はマジックファイルエントリを 集めたり修正したりしてくれた。  マジッ
       クファイルのエントリを整理統合したものは、 定期的に配布される予定である。

       マジックファイルのエントリは順番が重要である。 使用しているシステムによっては、順番の組みが不正であるかも
       しれない。 古い file コマンドがマジックファイルを使っている場合、  比較のために古いマジックファイルを残し
       ておくこと (/usr/share/file/magic.orig に名前を変更しておく)。

       $ file file.c file /dev/{wd0a,hda}
       file.c:   C program text
       file:     ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
                 dynamically linked (uses shared libs), stripped
       /dev/wd0a: block special (0/0)
       /dev/hda: block special (3/0)

       $ file -s /dev/wd0{b,d}
       /dev/wd0b: data
       /dev/wd0d: x86 boot sector

       $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
       /dev/hda:   x86 boot sector
       /dev/hda1:  Linux/i386 ext2 filesystem
       /dev/hda2:  x86 boot sector
       /dev/hda3:  x86 boot sector, extended partition table
       /dev/hda4:  Linux/i386 ext2 filesystem
       /dev/hda5:  Linux/i386 swap file
       /dev/hda6:  Linux/i386 swap file
       /dev/hda7:  Linux/i386 swap file
       /dev/hda8:  Linux/i386 swap file
       /dev/hda9:  empty
       /dev/hda10: empty

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

履歴

       少なくとも Research Version 4 以降の全ての UNIX に、 file コマンドは含まれている (man ページの日付は 1973
       年 11 月である)。 System V バージョンでは重大な変更が行われ、  マジックナンバータイプのリストを外部に保持
       するようになった。 この変更はプログラムを幾らかは遅くしたが、とても柔軟にした。

       System     V     バージョンをベースにしたこのプログラムは、     誰のソースコードも見ずに    Ian    Darwin
       <ian@darwinsys.com> によって書かれた。

       John Gilmore はコードを広範囲にわたって改訂し、 最初のバージョンより改良した。 Geoff Collyer はいくつかの
       欠点を見つけ、  マジックファイルエントリを提供した。  `&'  オペレータについては  1989  年に  Rob McMahon,
       cudcv@warwick.ac.uk が貢献した。

       Guy Harris, guy@netapp.com は 1993 年から現在に至るまで 多くの変更を行っている。

       Christos Zoulas (christos@astron.com) は 1990 年に最初の開発を行い、 現在までメンテナンスを行っている。

       2000 年の Chris Lowth, chris@lowth.com による変更: 別のマジックファイルと内部ロジックを使い、  ``-i''  で
       mime タイプ文字列を出力するようにした。

       2000 年 7 月の Eric Fischer (enf@pobox.com) による変更: 文字コードを識別し、非 ASCII ファイルの言語を識別
       するようにした。

       "Magdir" ディレクトリ (/etc/magic ファイルのソース)  の貢献者のリストは、  長すぎるのでここには含められな
       い。 貢献してくれた人は自分が貢献したことを知っているでしょう。 感謝します。

法的な注意

       Copyright  (c)  Ian F. Darwin, Toronto, Canada, 1986-1999.  このソフトウェアは standard Berkeley Software
       Distribution copyright により 保護されている。 ソース配布にある LEGAL.NOTICE ファイルを参照すること。

       ファイル tar.his_tar.c は John Gilmore によって書かれたもので、 彼のパブリックドメイン tar プログラム
       に由来する。 この 2 つのファイルには上記のライセンスが適用されない。

バグ

       magdir  にある全てのファイルから Magic ファイルを自動的に構築する もっと良い方法があるべきだ。 それはどん
       なものだろうか ?  起動を速くするためには、 マジックファイルをバイナリにコンパイルしておくべきだろう (つま
       り  ndbm(3)  や、異なる OS によるネットワーク環境で使うために固定長の ASCII 文字列にするのも良いだろう)。
       これにより、System V バージョンの柔軟性を備えたまま、 同じ名前の Version  7  のプログラムより速くなるだろ
       う。

       file  には正確さよりも速度を重視したアルゴリズムが使われているため、 テキストファイルの内容を読み誤ること
       がある。

       (主にプログラミング言語を対象とした) テキストファイルのサポートは、  単純化されていて不十分であり、更新す
       るには再コンパイルが必要である。

       後続の行を追っていくためには、``else'' 節を付けておくべきである。

       マジックファイルとキーワードで正規表現をサポートすべきである。 ASCII TAB をフィールドの区切り文字として使
       用するのは、 見苦しく編集しづらいが、定着している。 例えば troff(1) コマンドに対する man ページのマクロの
       ように、  キーワードで大文字を許可するようにするのが望ましいだろう。 正規表現がサポートされれば、これが簡
       単にできるだろう。

       このプログラムは FORTRAN を判別できない。 開始行でインデントされているキーワードを見て、 FORTRAN であると
       判断すべきである。 正規表現がサポートされれば、これが簡単にできるだろう。

       ascmagic  にあるキーワードは、多分  Magic  ファイルに入れるべきだろう。 これはオフセット値に `*' のような
       キーワードを使うことで可能だろう。

       その他の最適化としてはマジックファイルのソートがある。 これにより一度読み込んでしまえば、  最初のバイト・
       最初のワード・最初の  long 型、... というように 全てのテストで突き止めていくことができる。 マジックファイ
       ルエントリの衝突について苦情を言ってください。 マジックファイルのエントリのソートは、  マジックファイルに
       おける位置ではなくファイルオフセットで行う、 というルールにするべきだろうか ?

       推定した結果が「どのくらい良いか」を評価する手段を、  プログラムが提供すべきである。  最終的には  (例えば
       ``Newsgroups:'' に対する ``Return-Path:'' のように) 他の推定結果より良くない推定結果  (例えば、ファイルの
       最初の  5 文字が ``From '' など) は削除する。 しかし他の推定結果が出なければ、 最初の推定結果を使えるよう
       にしておくべきである。

       このプログラムは、いくつかのベンダの   file   コマンドより遅い。   複数文字コードを新しくサポートしたこと
       で、いっそう遅くなってしまった。

       この man ページ、特にこのセクションが長すぎる。

入手方法

       オリジナルの作者の最新バージョンは、anonymous   FTP   で  ftp.astron.com  のディレクトリ  /pub/file/file-
       X.YZ.tar.gz から入手できる。

                                           Copyright but distributable                                   FILE(1)