No.024ファイルとフォルダ

stat

スタット・ファイル状態表示

知識レベル 基礎安全に試せる一般ユーザーで使える

ファイルのサイズ、inode番号、権限、リンク数、各種時刻などの詳細属性を表示します。検証やトラブルシュートで強力です。

答えよく使う形

  1. 標準的な詳細表示です
  2. 名前、サイズ、数値権限を抜き出します
  3. 必要な項目だけを指定した書式で表示します
visitor@goodly: ~

$ 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

覚える順番の中で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

Goodly のメニュー