任意のファイルに含まれるデータ型を識別する必要があります。私はLinuxに初めて触れました。
私はこのfile
コマンドを使用してファイルのデータ型を知る予定です。私はコマンドを試してみて、以下の結果を得ました。
誰かが私に、このfile
コマンドがデータ型を決定するためにファイルの最初のバイトを調べることを提案しました。このfile
コマンドはファイル拡張子をまったく確認しません。そうですか?私は見たマニュアルページしかし、あまりにも技術的だと感じました。誰かがコマンドがどのように機能するかについての簡単な説明を含むリンクを提供できることをfile
感謝します。
コマンドを実行した後に得られる他の答えは何ですかfile
?たとえば、次のレコードでは、JPEG、ISOメディア、ASCIIなどを取得します。
画面出力は次のとおりです
m7% file date-file.csv
date-file.csv: ASCII text, with CRLF line terminators
m7% file image-file.JPG
image-file.JPG: JPEG image data, EXIF standard
m7% file music-file.m4a
music-file.m4a: ISO Media, MPEG v4 system, iTunes AAC-LC
m7% file numbers-file.txt
numbers-file.txt: ASCII text
m7% file pdf-file.pdf
pdf-file.pdf: PDF document, version 1.4
m7% file text-file.txt
text-file.txt: ASCII text
m7% file video-file.MOV
video-file.MOV: data
アップデート1
ご回答ありがとうございます。彼らは私にいくつかのことを明確にしました。
したがって、正しく理解している場合は、/usr/share/mime/magicフォルダには、現在利用可能なファイル形式(fileコマンドの後にファイルを入力したときに得られる出力)を提供するデータベースがあります。そうですか? 「file」コマンドの出力に「text」という単語が含まれるたびに、これは実際にはテキストビューアを使用して読み取ることができる項目を参照しますが、「text」を持たない項目は一種のバイナリファイルですか?
ベストアンサー1
file
複数のテストを使用:
1: もし文書存在しない、読み取れない、またはファイルの状態を確認できない場合、出力はファイルが処理されたがそのタイプを確認できないことを示す必要があります。
それからcannot open file: No such file or directory
。
2:ファイルが通常のファイルではない場合は、そのファイルタイプを識別する必要があります。ファイルタイプディレクトリ、FIFO、ソケット、特殊ブロック、および特殊文字はこのように識別する必要があります。他の実装定義ファイルタイプも認識されます。ファイルがシンボリックリンクの場合、リンクはデフォルトで検証され、ファイルはシンボリックリンクによって参照されるファイル形式をテストする必要があります。 (以下
-h
と-i
オプションを参照してください。)
.: directory
すると、とのような内容が出力されます/dev/sda: block special
。これと以前のポイントのほとんどの形式は次のとおりです。POSIXによって部分的に定義されている- 出力の特定の文字列を使用できます。
3:ファイル長が0の場合は空のファイルとして認識されます。
これはfoo: empty
。
4:ファイルユーティリティはファイルの初期セグメントをチェックし、位置区分テストに基づいてその内容を推測識別する必要があります。 (正解は保証されていません。下記の-d、-M、および-mオプションを参照してください。)
5:ファイルユーティリティはファイルをスキャンし、状況に応じた基本的なシステムテストに基づいてその内容を推測識別する必要があります。 (回答が正確であるという保証はありません。)
これら2つの用途マジックナンバー認識はコマンドの最も興味深い部分です。 ㅏマジックナンバーそのタイプを識別するファイルの既知の場所にある特別なバイトシーケンス。伝統的に、この場所は最初の2バイトですが、長い文字列やその他の場所を含むように用語がさらに拡張されました。バラよりこれは別の質問ですコマンドのマジックナンバーの詳細file
。
コマンドfile
にはこれらの数値とその種類を含むデータベースがあり、通常、データベースは/usr/share/mime/magic
ファイルの内容を次の場所にマップします。MIMEタイプ。そこの出力(通常はfile -i
基本的にこれが得られない部分)は次のとおりです。定義されたメディアタイプまたは拡張。 「状況に合ったテスト」は同じアプローチを使用しますが、もう少しあいまいです。これらのどれも正確であることを保証することはできませんが、良い推測のためのものです。
file
また、これらのタイプを名前にマップするデータベースがあり、それによって認識されるファイルapplication/pdf
がPDF document
。これは、常にマシンではない人が理解できる方法でファイル形式の上位レベルの説明です。
得ることができるさまざまな結果のほとんどは、この段階から来ます。magic
サポートされているタイプのリストとそのタイプの識別方法に関するファイルを表示できます。私のシステムは376種類をサポートしています。指定された名前とサポートされているタイプはシステムのパッケージングと構成によって決まります。libmagic
追加のハードコーディングされたテストも含まれています。
6:そのファイルはデータファイルとして認識する必要があります。
foo: data
これは、単にファイルに関する情報を特定できない場合です。
他の小さなラベルも表示されます。実行可能ファイル()ファイルには出力に ""が含まれ、通常は+x
カンマで区切られています。また、executable
実装file
では、「」などのファイル形式に関するその他の事項を説明できるように、特定のファイル形式に関する追加情報を知ることもできますPDF document, version 1.4
。