Linuxのコマンド1つで、ファイルやファイルシステムに関するすべての情報を取得できます。
GNUのcoreutilsパッケージに含まれるstatコマンドは、ファイル・サイズ、ノードの位置、アクセス許可、SELinuxコンテキスト、作成・変更時間など、ファイルやファイルシステムに関するさまざまなメタデータを提供します。多くの場合、複数の異なるコマンドで得られる情報が必要ですが、このコマンド1つでそれが可能です。
Linuxへのstatコマンドのインストール
Linuxシステムでは、statコマンドはコア機能パッケージの一部であり、通常はLinuxディストリビューションにデフォルトで含まれているため、すでにプリインストールされている場合があります。
stat コマンドがシステムにインストールされていない場合は、パッケージ・マネージャを使用して coreutils パッケージをインストールできます。
あるいは、 coreutilsパッケージをソースからコンパイルしてインストールすることもできます。
ファイルの状態取得
statコマンドを実行すると、指定したファイルやディレクトリに関するステータス情報を簡単に読み取ることができます。
$ stat planets.xmlFile: planets.xmlSize: 325 Blocks: 8 IO Block: 4096 regular fileDevice: fd03h/64771d Inode: Links: 1Access: (0664/-rw-rw-r--) Uid: (1000/tux) Gid: (100/users)Context: unconfined_u:object_r:user_home_t:s0Access: . +0210Modify: . +0210Change: . +0210Birth: . +0210
出力はわかりやすいですが、多くの情報が含まれています:
$ stat planets.xmlFile: planets.xmlファイルサイズ(バイトSize: 325 Blocks: 8 IO Block: 4096 regular fileハードドライブ上のファイル用に予約されたデータブロック数Device: fd03h/64771d Inode: Links: 1システムのブロックサイズAccess: (0664/-rw-rw-r--) Uid: (1000/tux) Gid: (100/users)種類Context: unconfined_u:object_r:user_home_t:s0: ファイルがあるデバイスAccess: . +0210: ファイルがあるInode番号Modify: . +0210ドキュメントへのリンク数Change: . +0210UID、GID:ファイルのパーミッション、ユーザーとグループの所有者Birth: . +0210- アクセス、修正、変更、誕生:ファイルへのアクセス、修正、変更ステータス、作成時のタイムスタンプ
合理化された出力
出力に習熟している人や、他のツールを使って出力を解析したい人は、ここで--terseパラメーターを使うと、ヘッダーや改行のない書式付き出力が得られます。
$ stat --terse planets.xmlplanets.xml fd 1 0 0 4096 unconfined_u:object_r:user_home_t:s0
カスタムフォーマット
printfパラメータと printf 似た構文を使用して、独自の出力形式を定義できます。statの各属性には一連の形式があるので、出力形式を定義できます。
$ stat --printf="%n %C " planets.xmlplanets.xmlunconfined_u:object_r:user_home_t:s0$ $ stat --printf="Name: %n Modified: %y " planets.xmlName: planets.xmlModified: . +0210
以下は一般的なフォーマットシーケンスです:
- アクセス
%a種類- 文書
%F regular fileファイルの種類- ユーザーID
InodeファイルがあるInode番号Linksファイルへのリンク数- 修正時間
フォーマットされた配列の完全なリストは、スタットマニュアルと Access 情報ページにあります。
ドキュメント情報
ls -lの出力を解析しようとしたことがあれば、statコマンドの柔軟性を理解できるでしょう。statが提供するすべての情報を常に必要とするわけではありませんが、その一部またはすべてが必要な場合には非常に便利です。デフォルトの出力を読んでいる場合でも、自分で作成したクエリの出力を読んでいる場合でも、statコマンドは必要なデータを調べることができます。
via:





