はじめに
Linuxのfile
コマンドは、ファイルのタイプとそのデータを判別するのに役立ちます。このコマンドはファイル拡張子を考慮せず、代わりに一連のテストを実行してファイルデータの種類を検出します。
このチュートリアルでは、file
コマンドが機能し、その使用方法。
前提条件
- Linuxを実行しているシステム。
- ターミナルウィンドウへのアクセス。
ファイルコマンド構文
file
コマンドは次の基本構文を使用します:
file [option] [file name]
上記の構文では、file name
テストするファイルの名前を表します。 file
コマンドは、ファイルタイプを決定するために、次の順序で3セットのテストを実行します。
- ファイルシステムテスト stat(2)システムコールを実行し、結果をシステムヘッダーファイルと照合します。このように、
file
コマンドは、ファイルがシステムの一般的なタイプ(テキストファイル、画像、ディレクトリなど)であるかどうかを判断します。 - 魔法のテスト ファイルの先頭近くに格納されている短い数字の文字列(「マジックナンバー」)を使用して、ファイルがバイナリ実行可能ファイルであるかどうかをテストし、バイナリ実行可能ファイルである場合はそのタイプを判別します。これらのテストを実行するために必要な情報は、 / etc / magicに保存されています。 または/usr / share / misc / magic コンパイルされたマジックファイルから。
- 言語テスト 特別なタグを使用して、バイナリ実行可能ファイルが書き込まれるプログラミング言語を判別します。
コマンド出力は、ファイルとデータ型の簡単な説明を提供します。たとえば、file
を使用します テキストファイルをテストするコマンド:
file example.txt
ファイルコマンドオプション
file
コマンドは次のオプションを使用します:
オプション | 説明 |
---|---|
--apple | コマンド出力を古いバージョンのMacOSで使用されているものに変更します。 |
-b, --brief | コマンド出力をブリーフモードに変更します。 |
-C, --compile | 事前に解析されたバージョンのマジックファイルまたはディレクトリを含む出力ファイルを作成します。 |
-c, --checking-printout | 解析されたバージョンのマジックファイルのプリントアウトをチェックします。 |
-d | 内部デバッグ情報を標準エラー形式で出力します。 |
-E | ファイルシステムエラーが発生すると、エラーメッセージを発行して終了します。 |
-e, --exclude | ファイルに対して実行されたテストのリストからテストを除外します。 |
--exclude-quiet | file のテストを除外します コマンドは知りません。 |
--extension | ファイルタイプの有効な拡張子のリストを出力します。 |
-F, --separator | 指定された文字列をファイル名とファイルタイプの区切り文字として使用します。 |
-f, --files-from | テストするファイルのリストとして提供されたテキストファイルを使用します。リストには、1行に1つのファイル名のみを含める必要があります。 |
-h, --no-deference | シンボリックリンクをたどるのを無効にします。 |
-i, --mime | コマンド出力をMIMEタイプの文字列に変更します。 |
--mime-type, --mime-encoding | コマンド出力をMIMEタイプの文字列に変更し、指定された要素(タイプまたはエンコーディング)のみを表示します。 |
-k, --keep-going | 最初の結果が一致した後もテストを続行します。 |
-l, --list | 一致するパターンのリストを強度の降順で表示します。 |
-L, --deference | 次のシンボリックリンクを有効にします。 |
-m, --magic-file | ユーザーが提供する代替のマジックファイルを使用します。 |
-N, --no-pad | 出力に合わせてファイル名を埋め込みません。 |
-n, --no-buffer | 各ファイルをチェックした後に出力をフラッシュします。 |
-p, --preserve-date | ファイルが最後にアクセスされた時刻を保持して、file のように見せようとします コマンドはそれをテストしませんでした。 |
-P, --parameter | 最大バイト数や再帰、カウント、長さの制限など、さまざまなパラメータを設定します。 |
-r, --raw | 印刷できない文字の翻訳を無効にします。 |
-s, --special-files | 特殊ファイルの読み取りを有効にします。 |
-S, --no-sandbox | それをサポートするシステムでサンドボックスを無効にします。 |
-v, --version | file のバージョンを表示します コマンド。 |
-z, --uncompress | 圧縮ファイルをチェックします。 |
-Z, --uncompress-noreport | 圧縮されたファイルをチェックし、圧縮されていないファイルタイプのみを表示します。 |
-0, --print0 | ファイル名の終わりの後にヌル文字を表示します。 |
--help | ヘルプメッセージを表示します。 |
ファイルコマンドの例
以下は、file
の一般的な使用例です。 コマンド。
複数のファイルをテストする
複数のファイルを同時にテストするには、ファイル名をfile
の最後に追加します コマンド:
file [file name 1] [file name 2] … [file name n]
たとえば、ディレクトリ、テキストファイル、画像、およびWebページをテストします。
file Example example.txt sample.png index.html
ディレクトリ内のすべてのファイルをテストする
ワイルドカード文字を追加します( *
)file
に 現在の作業ディレクトリ内のすべてのファイルとディレクトリをテストするコマンド:
file *
ディレクトリへのパスをワイルドカード文字に追加して、そのディレクトリの内容をテストします。
file [path to directory]/*
たとえば、例の内容をテストするには ディレクトリ、使用:
file Example/*
範囲内のテストファイル
file
コマンドを使用すると、正規表現スタイルの範囲を使用して、ディレクトリ内のファイルのサブセットをテストできます。値を角かっこで囲んで範囲を選択します。たとえば、名前がa〜lの範囲のファイルとディレクトリをテストします。
file [a-l]*
正規表現スタイルの範囲では大文字と小文字が区別されるため、上記の例の出力には、小文字のa〜lで始まるファイルのファイルタイプのみが表示されます。別の範囲を追加すると、大文字も含めることができます:
file [a-l]* [A-L]*
リストからのテストファイル
file
コマンドを使用すると、テストするファイルのリストとしてテキストファイルを使用できます。テキストファイルには、1行に1つのファイル名のみを含める必要があります。
-f
を使用します オプションを選択し、リストファイルへのパスをfile
に追加します コマンド:
file -f list.txt
特別なファイルをテストする
file
コマンドは、システムファイルなどの特別なファイルを常に読み取ることができるとは限りません:
file /dev/sda5
上記の例では、fileコマンドの出力は / dev / sda5を示しています。 はブロック特殊ファイルですが、追加の詳細は提供していません。 -s
を使用する オプションを使用すると、特別なファイルを完全にテストできます:
sudo file -s /dev/sda5
圧縮ファイルのテスト
-z
を使用します 圧縮ファイルを完全にテストし、その内容を検出しようとするオプション:
file -z install.tar.gz
解析されたバージョンのファイルをテストする
-c
を使用する オプションは、ファイルの解析されたバージョンのチェックプリントアウトを表示します:
file -c example.txt
このオプションは通常、 -m
で使用されます 新しいマジックファイルをデバッグしてインストールするオプション。
簡単な出力を表示する
-b
を使用する オプションは、出力の簡単なバージョンを表示します。このバージョンの出力では、ファイルタイプのみが表示され、ファイル名は省略されています。
file -b Example example.txt sample.png index.html
出力にセパレータを追加
-F
を使用する オプションを使用すると、出力のファイル名セクションとファイルタイプセクションの間の区切り文字として機能する文字を定義できます。たとえば、プラス記号( +
)を追加します )区切り文字として:
file -F + Example example.txt sample.png index.html
出力からファイル名のパディングを削除
-N
を使用します 出力のファイル名セクションとファイルタイプセクションの間のパディングを削除するオプション:
file -N Example example.txt sample.png index.html
結果の出力は垂直方向に整列されなくなります: