No.024ファイルとフォルダ
stat
スタット・ファイル状態表示
ファイルのサイズ、inode番号、権限、リンク数、各種時刻などの詳細属性を表示します。検証やトラブルシュートで強力です。
答えよく使う形
$ printf "%sn" "demo" > demo.txt
stat demo.txt
File: demo.txt ...
$ stat -c "%n %s %a" demo.txt
demo.txt 5 644
$ stat file.txt
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中でLPIC-1・13 駅め / 106
どんなコマンド?
ファイルの詳細属性を確認したい時、lsだけでは足りない時、スクリプトでサイズや時刻だけを取り出したい時に使います。
statは、ファイルのメタデータを詳細に確認するためのコマンドです。ls -lでも基本情報は見られますが、statではinode番号、ブロック数、アクセス時刻、変更時刻、属性変更時刻など、より細かい情報を得られます。
実務では、権限トラブルの切り分け、バックアップ前後の属性比較、更新時刻の調査、シンボリックリンクやリンク数の確認で役立ちます。スクリプト用途では-c書式指定で必要項目だけを抜き出せる点も大きな強みです。
ただし、書式指定子や表示形式はGNU系とBSD系で差があるため、移植性重視のスクリプトでは注意が必要です。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ stat
使用例と実行結果
行を押すとコピーできます。
File: demo.txt ...
demo.txt 5 644
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
つまずいたとき
ctimeを作成時刻だと思っていた
原因多くのUnix系ではctimeは属性変更時刻です。
こうする各時刻の意味を区別し、必要ならbirth time対応可否も確認します。
別環境でstat -cが動かない
原因GNU系とBSD系の差です。
こうする対象環境に合わせて書式や代替手段を調整します。
終わったときの数(戻り値)
$ echo $?
- 0属性表示に成功しました。
- >0対象が存在しない、参照できないなどで失敗しました。
気をつけることと入れ方
危険度は低い確認コマンドです。ただしctimeは作成時刻ではなく、inode属性変更時刻を指すことが多いため、意味を取り違えないよう注意が必要です。
たいていの Linux に最初から入っています(coreutils)。
環境による違い
GNU statとBSD系statではオプションや書式指定が異なります。GNU系の-cは便利ですが、そのまま他系統へ持ち込むと動かないことがあります。
確かめた環境Debian GNU/Linux / 13 / GNU coreutils 9.7 / Bash 5.2.372026-04-09 に確認
よくある質問
ls -lとstatはどう使い分けますか。
ざっと見るだけならls -l、詳細属性やスクリプト向け抽出ならstatが向いています。
ctimeは作成時刻ですか。
多くの環境では作成時刻ではなく、属性変更時刻です。
資格試験では
- LinuC レベル1大事1.02 ファイル・ディレクトリの操作と管理
- LPIC-1大事104.7 システムファイルの検索と正しい配置
- 共通基礎大事Linuxコマンド基礎
stat を最後まで読みました。
Linux コマンド辞典に戻る110 / 144