-L または --dereference
シンボリックリンクをたどる。このオプションを付けない場合、シンボリックリンク自身の情報を表示する。
-f または --file-system
そのファイル自身ではなく、そのファイルが属するファイルシステムの情報を表示する。
% stat -f /home/68user/sample.txt
File: "/home/68user/sample.txt"
ID: 7a6477d135465b7c Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 25190501 Free: 20263789 Available: 18982497
Inodes: Total: 6414336 Free: 6264736
この環境ではファイルシステムは / であるため、/ の情報を表示していることになる。上記サンプルは以下のような意味である。
ID
| ファイルシステム ID
|
Namelen
| ファイル名の最大長
|
Type
| ファイルシステムの種類
|
Block size
| このファイルシステムのブロックサイズ
|
Fundamental block size
| よくわからないが、ブロックサイズが可変であるファイルシステムにおける、最低限必要なブロックサイズのことであろうか?
|
Blocks: Total
| このファイルシステム全体のブロック数
|
Blocks: Free
| このファイルシステム全体の未使用ブロック数
|
Blocks: Available
| このファイルシステム全体の利用可能ブロック数 (Total - Free)
|
Inodes: Total
| このファイルシステム全体の inode 数
|
Inodes: Free
| このファイルシステム全体の未使用 inode 数
|
-c [フォーマット文字列] または --format=[フォーマット文字列]
デフォルトの代わりに指定フォーマットで出力する。
ファイルサイズのみ表示する例:
% stat -c "%s" sample.txt
3
パーミッション・ファイルサイズ・ファイル名を表示する例:
% stat -c "%A %s %n" sample.txt
-rw-r--r-- 3 sample.txt
任意の文字列も混ぜ込んで表示できる。
% stat -c "permission: %A size: %s filename: %n" sample.txt
permission: -rw-r--r-- size: 3 filename: sample.txt
-c オプションで使用可能なフォーマット文字列は後述する。なお、"%" そのものを表示したい場合は "%%" とする。
--printf=[フォーマット文字列]
-c オプションでは "\n" などの改行コードには対応していないが、
--printf オプションでは "\n" や "\t" などが使える。勝手に改行はしてくれないので、最後に "\n" を付けるとよい。
% stat --printf="permission: %A\nsize: %s\nfilename: %n\n" sample.txt
permission: -rw-r--r--
size: 3
filename: sample.txt
--printf オプションで使用可能なフォーマット文字列は後述する。
-t または --terse
シンプルな形式で情報を表示する
% stat -t sample.txt
sample.txt 3 8 81a4 600 600 fc03 3674740 1 0 0 1495695645 1495695645 1495695645 4096
パーミッション 8進数表記:
% stat -c "%a" sample.txt
644
上記はパーミッションが rw-r--r-- の例だが、もし --------- の場合、%a の表示は 0 となってしまう。この場合は 000 と表示したいだろうから、%a ではなく %03a とするとよい。
% chmod 000 sample.txt
% stat -c "%03a" sample.txt
000
パーミッションの人間が読める形式での表記:
% stat -c "%A" sample.txt
-rw-r--r--
割り当てられたブロック数:
% stat -c "%b" sample.txt
8
各ブロックの大きさ (バイト単位):
% stat -c "%B" sample.txt
512
SELinux のセキュリティコンテキスト文字列:
% stat -c "%C" sample.txt
stat: failed to get security context of `sample.txt': 利用可能なデータがありません
→ 当ページ管理人の環境では SELinux を無効化してあったので、上記のような表示となってしまった。
デバイス番号の 10進数表記:
% stat -c "%d" sample.txt
64515
デバイス番号の 16進数表記:
% stat -c "%D" sample.txt
fc03
raw モードの 16進数表記:
% stat -c "%f" sample.txt
81a4
ファイルの種類:
% stat -c "%F" sample.txt
regular file
所有者のグループID:
% stat -c "%g" sample.txt
600
所有者のグループ名:
% stat -c "%G" sample.txt
68user
リンク数:
% stat -c "%h" sample.txt
1
iノード番号:
% stat -c "%i" sample.txt
4200774
ls -li で表示される iノード番号と同じである。
マウントポイント:
% stat -c "%m" sample.txt
?
ファイル名:
% stat -c "%n" sample.txt
sample.txt
クォートされたファイル名:
% stat -c "%N" sample.txt
`sample.txt'
最適な I/O 転送サイズのヒント情報:
% stat -c "%o" sample.txt
4096
よくわからないが、"block sizes, alignment and I/O hints" でググると何か書いてある気がする。
合計サイズ (バイト単位):
% stat -c "%s" sample.txt
3
通常ファイルの場合は、ファイルサイズ。ディレクトリの場合は消費ブロックサイズ、シンボリックリンクの場合は、シンボリックリンクのリンク先のファイル名のサイズ。
メジャーデバイス番号 (16進数表記):
% stat -c "%t" sample.txt
0
マイナーデバイス番号 (16進数表記):
% stat -c "%T" sample.txt
0
所有者のユーザID:
% stat -c "%u" sample.txt
600
所有者のユーザ名:
% stat -c "%U" sample.txt
68user
最初に作成した日時 (人間が読みやすい形式):
% stat -c "%w" sample.txt
?
マニュアルには "不明な場合には -" と書いてあったが、当ページ管理人の CentOS 環境では "?" が表示された。birthtime のことであろう。2017年5月現在の Linux では使えない。
最初に作成した日時 (Epoch からの秒数):
% stat -c "%W" sample.txt
?
マニュアルには "不明な場合には 0" と書いてあったが、当ページ管理人の CentOS 環境では "?" が表示された。birthtime のことであろう。2017年5月現在の Linux では使えない。
最終アクセス日時 (人間が読みやすい形式" sample.txt:
% stat -c "%x" sample.txt
2017-12-05 20:51:00.000000000 +0900
最終アクセス日時 (Epoch からの秒数):
% stat -c "%X" sample.txt
1512474660
1970年1月1日 00:00:00 からの経過秒数。
最終更新日時 (人間が読みやすい形式):
% stat -c "%y" sample.txt
2017-05-25 14:06:09.717293917 +0900
最終更新日時 (Epoch からの秒数):
% stat -c "%Y" sample.txt
1495688769
1970年1月1日 00:00:00 からの経過秒数。
最終変更日時 (人間が読みやすい形式):
% stat -c "%z" sample.txt
2017-05-25 14:40:35.339251735 +0900
最終変更日時 (Epoch からの秒数):
% stat -c "%Z" sample.txt
1495690835
1970年1月1日 00:00:00 からの経過秒数。
●BSD での stat コマンドについて
FreeBSD 等の stat コマンドは、オプションなしの場合、1行表示を行う。
% stat sample.txt
1043 22327320 -rw-r--r-- 1 68user realuser 0 0 "May 25 14:36:18 2017" "May 25 14:36:18 2017" "May 25 14:36:18 2017" "May 25 14:36:18 2017" 16384 0 0 sample.txt
GNU coreutils の stat コマンドのような表記は、-x オプションを付ける。
% stat -x sample.txt
File: "sample.txt"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (10001/ 68user) Gid: ( 500/realuser)
Device: 4,19 Inode: 22327320 Links: 1
Access: Thu May 25 14:36:18 2017
Modify: Thu May 25 14:36:18 2017
Change: Thu May 25 14:36:18 2017