ファイルの詳細情報を確認したい¶
概要¶
statコマンドは、ファイルに関する詳細な情報を表示するために使用されるコマンドラインツールです。ls -l
コマンドでは、ファイルの所有者やパーミッションなどファイルに関するより詳細な情報を提供しますが、statコマンドはさらに細かい情報を確認できます。
Linuxのstatコマンドの構文は、以下のとおりです。
stat [OPTION] ファイル名1 ファイル名2...
コマンドの詳細については、helpオプションを使用して確認できます。
stat --help
引数無しのstatコマンド¶
パラメータを指定しないでstatコマンドを実行すると、デフォルトの出力を表示します。この出力には、ファイルのサイズと種類、デバイスの種類、inode番号、UID、GID、リンク数、アクセス/更新日時などが含まれます。 たとえば、現在のホームディレクトリにあるファイルの詳細を表示するには、次のように実行します。
$ stat file1.txt
各項目の内容は以下のとおりです。
項目 | 説明 |
---|---|
File | ファイル名 |
Size | ファイルの大きさ(Bytes) |
Block | ファイルに割り当てられているブロックの数 |
IO Block | ブロックごとのバイトサイズ |
Device | デバイス番号(16進数または10進数) |
Inode | ファイルのinode番号 |
Links | ファイルに関連するハードリンクの数 |
Access | シンボル形式または数値形式のファイルパーミッション |
Uid | 所有者のユーザーIDおよび名前 |
Gid | グループIDおよび所有者の名前 |
Context | SELinuxのセキュリティコンテキスト |
File Type | ファイルの種類(通常のファイルか、シンボリックリンクかなど) |
Access | ファイルが最後にアクセスされた時刻 |
Modify | ファイルの内容が最後に変更された日時 |
Change | ファイルのメタデータ(パーミッションや所有権など)が最後に変更された日時 |
ファイルシステムの状態を表示する¶
-fオプションを使用すると、ファイルが置かれているファイルシステムの状態を確認することができます。ブロックサイズ、総ブロック数、空きブロック数など、いくつかの属性が表示されます。
stat -f /home
File: "/var"
ID: fd0300000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 132848765 Free: 129860959 Available: 129860959
Inodes: Total: 265827328 Free: 265631487
簡潔な表現で情報を表示する¶
tオプションは、以下のように、情報を簡潔なフォーマットで表示するために使用されます。シェルで出力結果を連携して処理するのに向いています。
$ stat -t /etc/hosts
/etc/hosts 158 8 81a4 0 0 fd03 268444994 1 0 0 1646368204 1536580263 1619747299 1584771715 4096
シンボリックリンクの追跡を有効にする¶
通常、シンボリックリンクに対してstatコマンドを実行すると、リンクに関する情報のみが得られ、リンクが指し示すファイルに関する情報は得られません。例えば、/etc/system-releaseというシンボリックリンクがあるとします。
stat /etc/system-release
File: /etc/system-release -> almalinux-release
Size: 17 Blocks: 0 IO Block: 4096 シンボリックリンク
Device: fd03h/64771d Inode: 268444971 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-03-05 05:10:05.744408221 +0900
Modify: 2021-12-22 04:51:00.000000000 +0900
Change: 2021-12-26 04:36:42.830507826 +0900
Birth: 2021-12-26 04:36:42.830507826 +0900
上記の例では、シンボリックリンクの /etc/system-release が almalinux-release を指しています。 リンクが指すファイルの情報を得るには、-Lオプション(dereferenceオプションとも呼ばれる)を使用します。
stat -L /etc/system-release
File: /etc/system-release
Size: 38 Blocks: 8 IO Block: 4096 通常ファイル
Device: fd03h/64771d Inode: 268569981 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-03-01 05:10:19.091125110 +0900
Modify: 2021-12-22 04:51:00.000000000 +0900
Change: 2021-12-26 04:36:42.822508121 +0900
Birth: 2021-12-26 04:36:42.822508121 +0900
リンクではなく、ファイルに関する情報を表示するようになりました。
書式の順序付け¶
特定の情報が必要な場合、フォーマット・シーケンスを使用して出力をカスタマイズし、必要なものだけを表示することができます。 出力をカスタマイズするためによく使われる表現には、-printfまたは-formatオプションがあります。
例えば、ファイルのinodeのみを表示する場合は、図のように%iの書式列を使用します。nオペランドは、改行を表示します。
stat --printf='%in' file1.txt
アクセス権やuid(ユーザーID)を表示するには、%aおよび%uの書式シーケンスを使用します。
stat --printf='%a:%un' file1.txt
format オプションは、追加のオペランドを必要とせずに、新しい行を出力します。
stat --format='%a:%F' file1.txt
以下は使用できる書式シーケンスの全リストです。
オペランド | 項目 |
---|---|
%a | アクセス権(8進数) |
%A | アクセス権(人間が読みやすい形式) |
%b | 割り当てられたブロックの数 |
%B | %bによって報告される各ブロックのサイズ(バイト) |
%C | SELinuxセキュリティコンテキスト文字列 |
%d | デバイス番号(10進数) |
%D | デバイス番号(16進数) |
%f | rawモード(16進数) |
%F | ファイルタイプ |
%g | 所有者のグループID |
%G | 所有者のグループ名 |
%h | ハードリンクの数 |
%i | inode番号 |
%m | マウントポイント |
%n | ファイルのファイル名 |
%N | シンボリックリンクの場合、デリファレンスで引用されたファイル名 |
%o | 最適なI/O転送サイズのヒント |
%s | 総サイズ(バイト) |
%t | メジャー・デバイス・タイプ(16進数、キャラクタ/ブロックデバイス特殊ファイルの場合) |
%T | マイナーデバイスの種類(16進数、キャラクタ/ブロックデバイス特殊ファイルの場合) |
%u | 所有者のユーザーIDを表示 |
%U | 所有者のユーザー名を表示 |
%w | ファイルが作成された時刻 |
%W | ファイルが作成された時刻(エポックからの秒数) |
%x | 最後にアクセスした時刻 |
%X | 最終アクセス時刻(エポックからの秒数) |
%y | 最終更新時刻 |
%Y | 最終更新時刻(エポックからの秒数) |
%z | 最終変更時刻 |
%Z | 最終更新時刻(エポックからの秒数) |