日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
FILE(1) FreeBSD 一般コマンドマニュアル FILE(1) 名称 file -- ファイルタイプを判定する 書式 file [-bcdEhiklLNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] [-P name=value] file ... file -C [-m magicfiles] file [--help] 解説 このマニュアルページは、file コマンドのバージョン "5.32" を文書化していま す。 file は、各引数を分類する試みにおいて各引数をテストします。次の順序で実行 される 3 つのテストがあります: ファイルシステムテスト、マジックテスト、言 語テストです。成功した最初のテストによって、ファイルタイプが、印刷されま す。 通常、印刷されるタイプは、text (ファイルは、印刷文字といくつかの共通の制 御文字だけを含んでいて、ASCII 端末で読み込むためにたぶん安全です) executable (ファイルは、いくつかの UNIX カーネルまたはその他で理解できる 形式でプログラムをコンパイルした結果を含んでいます) または、他の何かを意 味する data (データは、通常 ``バイナリ'' または印刷不可能です) という単語 の 1 つを含みます。例外は、バイナリデータを含むことが知られている、よく知 られたファイル形式 (コアファイル、tar アーカイブ) です。マジックファイル またはプログラム自体を変更するとき、これらのキーワードを保存することを確 認してください。ユーザは、ディレクトリのすべての読み込み可能なファイル が、印刷された単語 ``text'' があることを知っていることを当てにします。 Berkeley で行われたように ``shell commands text'' を ``shell script'' と 変更しないでください。 ファイルシステムのテストは、stat(2) システムコールからの返り値を調べるこ とに基づいています。プログラムは、ファイルが空であるかどうか、または、あ る種の特殊ファイルであるかどうか確認します。実行しているシステムに適切な 既知のファイルのタイプ (それらを実装するシステムの、ソケット、シンボリッ クリンク、または名前付きパイプ (FIFO)) は、それらがシステムヘッダファイル <sys/stat.h> で定義されるなら、直感で理解できます。 マジックのテストは、特に固定の形式であるファイルをチェックするために使用 されます。この規範的な例は、形式が、標準のインクルードディレクトリの <elf.h>, <a.out.h> あるいは <exec.h> で定義されている、バイナリの実行可能 (コンパイルされたプログラム) a.out ファイルです。これらのファイルには、 ファイルがバイナリの実行形式で、それについていくつかのタイプのどれである かと UNIX オペレーティングシステムに伝える、ファイルの始まりの近くの特定 の場所に格納されている、``マジック'' があります。``マジック番号'' の概念 は、データファイルへの拡張によって適用されています。通常、ファイルの小さ な固定のオフセットのある不変の識別子があるファイルは、このような方法で説 明することができます。これらのファイルを識別する情報は、コンパイルされた マジックファイル /usr/share/misc/magic.mgc または、コンパイルされたファイ ルが存在しないなら、ディレクトリ /usr/share/misc/magic のファイルから読み 込まれます。さらに、$HOME/.magic.mgc または $HOME/.magic が存在しているな ら、システムのマジックファイルに優先して使用されます。 ファイルがマジックファイルのエントリのいずれにもマッチしないなら、テキス トファイルのように思えるかどうか確かめるために検査されます。各文字集合で 印字可能なテキストを構成する、異なったバイトの範囲とシーケンスによって、 ASCII, ISO-8859-x, (Macintosh と IBM PC システムで使用されるような) 非 ISO 8-bit 拡張 ASCII 文字集合、UTF-8 でエンコードされた Unicode, UTF-16 でエンコードされた Unicode, EBCDIC 文字集合を、識別することができます。 ファイルがこれらのテストのいずれかをパスするなら、その文字集合を報告しま す。ASCII, ISO-8859-x, UTF-8, 拡張された ASCII ファイルは、ほとんど、どの 端末でもたいてい読み込み可能であるので、``text'' として識別されます。 UTF-16 と EBCDIC は、それらが、テキストを含んでいますが、それを読み込む前 に、変換を必要とするテキストであるので、``character data'' のみです。さら に、file は、テキストタイプのファイルの他の特性を決定することを試みます。 ファイルの行が、Unix 標準の LF でなく、CR、CRLF、または NEL で終了するな ら、これは、報告されます。また、埋め込まれたエスケープシーケンスまたは重 ね打ちを含むファイルも識別されます。 いったん、file は、テキストタイプのファイルで使用される文字集合を決定する と、ファイルがどのような言語で書かれているかを決定することを試みます。言 語のテストは、ファイルの最初の数ブロックで、どこでも現れることができる特 定の文字列 (<names.h> を参照) を探します。例えば、キーワード .br は、ちょ うどキーワード struct が C プログラムを示すように、ファイルがたぶん troff(1) の入力ファイルであることを示します。これらのテストは、前の 2 つ のグループほど信頼できないので、最後に実行されます。また、言語テストルー チンは、(tar(1) アーカイブのような) 何らかの寄せ集めでないかどうかテスト されます。 上記にリストされた文字集合のどれかで書かれているように識別できないファイ ルは、単に ``data'' と言われいます。 オプション --apple file コマンドは、より古い MacOS バージョンによって使用されるよう なファイルタイプとクリエータコードを出力します。コードは、最初に ファイルタイプについての記述、最後にクリエータの 8 個の文字から成 ります、 -b, --brief 出力行の前にファイル名を付けません (簡潔モード)。 -C, --compile マジックファイルまたはディレクトリの前もって解析されたバージョン を含む magic.mgc 出力ファイルに書き込みます。 -c, --checking-printout マジックファイルの解析された形式のチェックをプリントアウトしま す。通常、これは、インストールする前に、新しいマジックファイルを デバッグするために -m フラグとともに使用されます。 -d 標準エラー (stderr) に内部デバッグ情報を印刷 (表示) します。 -E ファイルシステムエラー (ファイルが見つからないなど) で、POSIX の 権限と維持として規則的な出力としてのエラーを扱う代わりに、エラー メッセージを発行して、終了します。 -e, --exclude testname ファイルのタイプを決定するために行われるテストのリストから testname で指定されたテストを排除します。有効なテスト名は、次の通 りです: apptype (EMX でのみ) EMX アプリケーションタイプ。 ascii テキストファイルの各種のタイプ (このテストは、 `encoding' オプションの設定のにかかわらず、テキストのエ ンコーディングを推測しようします)。 encoding ソフトマジックテストのための異なったテキストエンコー ディング。 tokens 後方互換性のために無視されます。 cdf 複合文書ファイル (Compound Document Files) の詳細を印刷 します。 compress 圧縮されたファイルをチェックして、内容を調べます。 elf ELF ファイルの詳細を印刷 (表示) し、提供されたソフトマ ジックテストは、有効にされ、elf マジックは、見つけられ ます。 soft マジックファイルを調べます。 tar tar ファイルを調べます。 text `ascii' と同義語。 --extension 見つけられたファイルのタイプのために有効な拡張のスラッシュで区切 られたリストを印刷 (表示) します。 -F, --separator separator ファイル名と返されたファイルの結果の間の分離記号として指定された 文字列を使用します。デフォルトは、`:' です。 -f, --files-from namefile 引数リストの前に、(1 行に 1 つの) namefile から調べられるファイル の名前を読み込みます。namefile または、少なくとも 1 つのファイル 名の引数のどれかは、存在していなければなりません。標準入力をテス トするためには、ファイル名の引数として `-' を使用します。namefile は、アンラップ (unwrap) され、このオプションに遭遇し、それ以上の オプションの処理が終る前に、囲まれたファイル名が処理されることに 注意してください。これによって、同じ file の起動で、異なるコマン ド行の引数があるファイルの複数のリストを処理することを可能にしま す。したがって、デリミタを設定したいなら、次のように、ファイルの リストを指定する前に、それを行う必要があります: ``-f namefile -F @'' の代わりに ``-F @ -f namefile。'' -h, --no-dereference (シンボリックリンクをサポートするシステムで) オプションによって、 シンボリックリンクをたどりません。環境変数 POSIXLY_CORRECT が定義 されないなら、これは、デフォルトです。 -i, --mime file コマンドは、伝統的な人間に読み込み可能ななものよりむしろ、 mime タイプ文字列を出力します。したがって、``ASCII text'' よりむ しろ `text/plain; charset=us-ascii' とします。 --mime-type, --mime-encoding 指定された要素だけを印刷するのを除いた同様の -i。-i と同様です が、指定された (複数の) 要素だけを印刷します。 -k, --keep-going 最初の一致でも停止せずに、処理を継続します。その後の一致には、先 頭に追加された文字列 `\012- ' があります。(改行が必要なら、-r オ プションを参照してください。) 最高の強さがあるマジックパターン が、最初に来ます (-l オプションを参照)。 -l, --list パターンのリストと照合のために使用される (また、-k オプションを参 照)、magic(4) の強度によって、記述されるソートされたそれらの強度 を表示します。 -L, --dereference (シンボリックリンクをサポートするシステムで) オプションによって、 ls(1) の link-named オプションのように、シンボリックリンクをたど ります。これは、環境変数 POSIXLY_CORRECT が定義されているなら、デ フォルトです。 -m, --magic-file magicfiles マジックを含むファイルとディレクトリの代替のリストを指定します。 これは、単一の項目、またはコロン (:) で区切られたリストを指定でき ます。コンパイルされたマジックファイルが、ファイルまたはディレク トリと一緒に見つけられるなら、それが、代わりに使用されます。 -N, --no-pad 出力が整列するようにファイル名をパディングしません。 -n, --no-buffer 各ファイルをチェックした後に、stdout を強制的にフラッシュします。 ファイルのリストをチェックする場合にだけ、これは、役に立ちます。 パイプからファイルタイプの出力を必要とするプログラムによって使用 されることを目的としています。 -p, --preserve-date utime(3) または utimes(2) をサポートするシステムで、file が、それ らを決して読み込まなかったふりをするために、分析されたファイルの アクセス時刻を保存しようと試みます。 -P, --parameter name=value 様々なパラメータの制限を設定します。 名前 デフォルト 説明 indir 15 間接的なマジックのための再帰的な制 限 name 30 name/use マジックのための使用カウン トの 制限 elf_notes 256 処理された最大の ELF 注釈 elf_phnum 128 処理された最大の ELF プログラムのセ ク ショ ン elf_shnum 32768 処理された最大の ELF セクション regex 8192 regex 検索のための長さ制限 bytes 1048576 ファイルから読み込むバイトの最大数 -r, --raw 印刷できない文字を \ooo に変換しません。通常、file は、印刷できな い文字をそれらの 8 進数表現へに変換します。 -s, --special-files 通常、file は、stat(2) が報告する引数ファイルのタイプが通常のファ イルだけを読み込んで判断することを試みます。特殊ファイルの読み込 みには、特別の結果があるので、これは、問題を回避します。また、-s オプションを指定することによって、file は、ブロックまたはキャラク タ特殊ファイルである引数ファイルを読み込みます。これは、ブロック 特殊ファイルである、raw (生の) ディスクパーティションのデータの ファイルシステムタイプを判断するために役に立ちます。また、いくつ かのシステムで、raw (生の) ディスクパーティションに対して 0 のサ イズを報告するので、このオプションによって、file は、stat(2) に よって報告されたファイルサイズを無視します。 -v, --version プログラムのバージョンを印刷 (表示) して、終了します。 -z, --uncompress 圧縮されたファイルの内容を見る調べることを試みます。 -Z, --uncompress-noreport 圧縮されたファイルの内側を見ようと試みますが、圧縮されない内容の みに関する情報を報告します。 -0, --print0 ファイル名の終わりの後ろに、ヌル文字 `\0' を出力します。cut(1) の 出力に良いです。これは、いまでも印刷されるセパレータ (分離記号) に影響しません。 このオプションが複数回繰り返されるなら、file は、ちょうど、エント リごとにファイル名にヌル文字が続き、説明 (または ERROR: テキスト) が続き、2 番目のヌル文字が続いているものを印刷 (表示) します。 --help ヘルプメッセージを印刷 (表示) して、終了します。 関連ファイル /usr/share/misc/magic.mgc デフォルトのコンパイルされたマジックのリスト。 /usr/share/misc/magic デフォルトのマジックファイルを含むディレクト リ。 環境変数 デフォルトのマジックのファイル名を設定するのに、環境変数 MAGIC を使用する ことができます。その変数が設定されているなら、file は、$HOME/.magic を オープンすることを試みません。file は、``.mgc'' を適切にこの変数の値に追 加します。しかしながら、file は、考慮される file.mime のための順序が存在 しなければなりません。(シンボリックリンクをサポートしているシステムで は)、環境変数 POSIXLY_CORRECT は、file がシンボリックリンクをたどるかどう かの試みを制御します。設定されているなら、file は、シンボリックリンクをた どり、そうでなければ、だどりません。また、これは、-L と -h オプションに よっても制御されます。 関連項目 hexdump(1), od(1), strings(1), magic(5), fstyp(8) 標準適合性 このプログラムは、FILE(CMD) の System V Interface Definition に含まれたあ いまいな言語から決定できる限りでは、その仕様を超えていると信じられます。 その振る舞いは、同じ名前の System V プログラムとほとんど互換性がありま す。しかしながら、このバージョンは、より多くのマジックを知っているので、 多くの場合、異なった (より正確ですが) 出力を作り出します。 このバージョンと System V との間の 1 つの著しい違いは、このバージョンが、 デリミタとして任意の空白類を扱うので、パターン文字列中の空白を、エスケー プしなければならないことです。例えば、既存のマジックファイルの >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 コマンドを含んでいますが、いくつかの拡張があります。このバージョン は、細かな点のみ Sun のものと異なっています。それは、例えば、次のように使 用される、`&' 演算子の拡張を含んでいます。 >16 long&0x7fffffff >0 not stripped マジックディレクトリ マジックファイルのエントリは、主に USENET のような、様々なソースから集め られて、様々な作者によって寄稿されました。Christos Zoulas (下記のアドレ ス) は、追加されるか、修正されたマジックファイルのエントリを集めていま す。整理統合されたマジックファイルのエントリは、定期的に配布されていま す。 マジックファイルのエントリの順序は、重要です。利用者が使用しているシステ ムによって、それらが統合されている順序が、不正確となるかもしれません。利 用者の古い file コマンドがマジックファイルを使用しているなら、(それを /usr/share/misc/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 /dev/hda: application/x-not-regular-file /dev/wd0a: application/x-not-regular-file 歴史 少なくとも Research Version 4 以降のすべての UNIX (1973 年 11 月の日付の マニュアルページ) には、file コマンドがあります。System V バージョンは、 次の 1 つの重要な大きな変更を導入しました: マジックのタイプの外部のリスト です。これによって、プログラムがわずかに遅くなりましたが、はるかにフレキ シブル (柔軟性があるよう) になりました。 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> によって、次の変更がおこなわれ ました: mime タイプ文字列を出力して、代替のマジックファイルと内部の論理を 使用するために、-i オプションを取り扱います。 文字コードを識別し、非 ASCII ファイルの言語を識別しようと試みるように、 2000 年 7 月に、Eric Fischer <enf@pobox.com> によって変更されました。 2007 年から 2011 年に、MIME サポートを改良し、MIME と非 MIME マジックを マージし、マジックのファイルと同様にディレクトリをサポートし、多くのバグ フィックスを適用して、構築システムを改良し、文書を改良し、純粋な Python で Python 構築を書き換えるために、Reuben Thomas <rrt@sc3d.org> によって変 更されました。 `magic' ディレクトリ (マジックファイル) への寄稿者のリストは、ここに含め るには長過ぎます。誰もがあなたのことを知っています。感謝しています。多く の貢献者は、ソースファイルにリストされています。 法律上の注意 Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Covered by the standard Berkeley Software Distribution copyright; see the file COPYING in the source distribution. ファイル tar.h と is_tar.c は、John Gilmore のパブリックドメイン tar(1) プログラムから彼によって書かれました、上記のライセンスの適用を受けませ ん。 戻り値 file は、成功すれば 0 を返し、エラーであれば、0 以外を返します。 バグ http://bugs.gw.com/ のバグトラッカか、または <file@mx.gw.com> (申し込むた めには、最初に http://mx.gw.com/mailman/listinfo/file を訪問してください) のメーリングリストにバグを報告してパッチを送ってください。 TODO (しなければならないこと) MIME と APPLE のフラグのためにテストが、至る所で必要がなく、実際の出力 が、1 つの場所でのみ行うことができるように出力を修正します。これは、設計 を必要とします。提案: リストに可能な出力をプッシュし、次に、終わりで最後 にプッシュした (ほとんど特有の、1 つの望み) 値をピックするか、またはリス トが空であるなら、デフォルトを使用します。これは、評価を遅くするべきでは ありません。 MAGIC_CONTINUE の扱いと \012- とエントリの間の印刷は、不格好で、複雑で す。リファクタリングと集中化。訳注: リファクタリングは、保守性と可読性を 高めるように書き直すこと。 エンコードロジックのいくらかは、encoding.c でハードコード (決め打ち) さ れ、!:charset 注釈があったなら、マジックファイルに移動することができま す。 すべてのマジックのバグをすつぶし続ける。よいソースについては、Debian BTS を参照。 例えば、%s パターンのような、それらを印刷することができるように、任意の長 い文字列を格納します。Debian バグ #271672 を修正。これは、マジックファイ ルの終わりで文字列プールを格納して、すべての文字列ポインタを文字列プール から相対的なオフセットに変換して、文字列プールの文字列を割り付けることに よって行うことができます。 現在のレベル (Debian バグ #466037) の後に相対的なオフセットのための構文を 追加する。 ファイル -ki が動作するようにする、すなわち、複数の MIME タイプを与えま す。 zip ライブラリを追加するので、それらの内容に関する詳細を印刷 (表示) する ために、Office2007 文書の内部をのぞき見することができます、 ファイル記述のソースのための URL を印刷するオプションを追加する。 組み合わされたスクリプトは、(例えば、結果の文字列が、テーブルで検索され る、!:mime のためのマジックの値がある) MIME タイプへの実行形式の名前を マップする方法を検索して追加します。これは、新しいハッシュバング (#!) イ ンタプリタごとに繰り返し同じマジックを追加しないようにします。 ファイル記述子が利用可能なとき、現在行う、hacky バッファ管理の代わりに バッファをスキップし、調整することができます。 (未定義の ``name'' を指す、複写する ``name'', ``use'') コンパイル時に一貫 性をチェックするために ``name'' と ``use'' を修正します。``name'' / ``use'' を、名前のソートされたリストの維持することによってより効率的にし ます。それをエスケープして、それを文書化する必要がないように、パーサのエ ンディアン化ををひっくり返す特殊なケース ^。 ファイルの内部で指定されたオフセットがバッファサイズ (file.h の HOWMANY 変数) を越えているなら、そのオフセットにシークしませんが、ギブアップしま す。ファイル記述子が利用可能なとき、バッファの管理が行われたなら、ファイ ルのまわりを移動するので、それはより良いでしょう。これは、性能 (とセキュ リティの考慮) があったので、やはり、慎重でなければなりません。 入手性 利用者は、ftp.astron.com のディレクトリ /pub/file/file-X.YZ.tar.gz で、 anonymous FTP によって、原作者の最新版を取得することができます。 FreeBSD 11.2 October 19, 2016 FreeBSD 11.2