検索
連載

【 stat 】コマンド――ファイルの属性や日付などを表示するLinux基本コマンドTips(122)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルの属性や日付などの情報を表示する「stat」コマンドです。

Share
Tweet
LINE
Hatena
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルの属性や日付などの情報を表示する「stat」コマンドです。

statコマンドとは?

 「stat」はファイルのステータス、つまり属性や日付などを表示するコマンドです。「ls -l」よりも詳しい情報を表示できます。「-f」オプションを使うとファイルシステムの情報を表示することもできます。



statコマンドの書式

stat [オプション] ファイル

※[ ]は省略可能な引数を示しています





statの主なオプション

短いオプション 長いオプション 意味
-L --dereference シンボリックリンクの場合、リンク先の情報を表示
-f --file-system ファイルの情報の代わりにファイルシステムの情報を表示
-c 書式 --format=書式 出力時の書式(下表参照)を指定する
--printf=書式 「--format」とほぼ同じ。ただし、バックスラッシュによるエスケープを解釈し、最後に改行文字を出力しない(改行が必要な場合は「\n」を含めて指定する)
-t --terse 情報を簡潔な形式で表示する

出力時の書式文字列

文字列 意味
%n ファイル名
%N クオートされたファイル名(シンボリックリンクの場合は参照先ファイル名)
%F ファイルの種類
%A, %a アクセス権(%aは8進数表記)
%C SELinuxのセキュリティコンテキスト文字列
%U, %u 所有者のユーザー名(%U)とユーザーID(%u)
%G, %g 所有者のグループ名(%G)とグループID(%g)
%s 合計サイズ(バイト単位)
%B, %b ブロックサイズ(%B)とファイルに割り当てられているブロック数(%b)
%o 最適なI/O転送サイズサイズのヒント
%m マウントポイント
%t メジャーデバイス番号(16進数)
%T マイナーデバイス番号(16進数)
%D, %d デバイス番号(%Dは16進数、%dは10進数)
%f rawモード(16進数)
%i iノード番号
%h ハードリンクの数
%x, %X 最終アクセス日時、%XはEpoch(1970年1月1日0時0分0秒)からの秒数
%z, %Z 最終修正日時(Modify、内容の変更)、%ZはEpochからの秒数を出力
%y, %Y 最終状態変更日時(Change、属性などの変更)、%YはEpochからの秒数を出力
%w, %W 最初に作成した日時(Birth、不明な場合は「-」)、%WはEpochからの秒数(不明な場合は0) ※

※%wと%Wはファイルシステム、カーネル、ライブラリが対応している必要がある。


ファイルシステム用(-f)の書式文字列

文字列 意味
%T, %t ファイルシステム種別(%tは16進数表記)
%i ファイルシステムID(16進数)
%S 基本ブロックサイズ(ブロック数を数える際に使用)
%b ファイルシステムの合計データブロック数
%f ファイルシステムの空きブロック数
%a 特権ユーザー以外が利用可能な空きブロック数
%d ファイルシステムの空きファイルノード数
%c ファイルシステムの合計ファイルノード数
%s 高速転送時に使用するブロックサイズ
%n ファイル名
%l ファイル名の最大長


ファイルの属性や日付を表示する

 「stat ファイル名」で、ファイルやディレクトリの属性や日付などを表示します(画面1)。「ls -l」と同じ内容の他に、ユーザー名やID(数値)、パーミッション、ファイルの作成時間や最終アクセス時間、SELinuxのセキュリティコンテキストなどを併せて表示します。

※SELinux(Security-Enhanced Linux)とは、強制アクセス制御(Mandatory access control)を加えたLinuxのカーネルモジュールとその機能をいう。SELinuxが有効になっていると、通常のファイルシステムよりも高度なアクセス制御機能を使用できる。lsコマンドでSELinuxのセキュリティコンテキストを表示するには「-Z」オプションを使用する。


コマンド実行例

stat ファイル名画面1

ファイルの情報を表示する


画面1
画面1 statコマンドを実行したところ ls -lよりも詳しい情報が表示される


出力する内容を指定する

 出力する情報の種類を追加したり、書式を変更したりする場合は「-c(--format)」または「--printf」オプションで、書式を指定します。

 例えば、「-c %C」とするとSELinuxのセキュリティコンテクストが出力されます。「-c %n,%C」とすると、ファイル名とセキュリティコンテクストの両方が「,」区切りで出力されます。区切り文字を空白にしたい場合は「-c "%n %C"」のように指定します(画面2)。

 タブ記号などを使いたい場合は「--printf」オプションを使います。ファイル名とセキュリティコンテクストをタブ区切りにする場合は「--printf="%n\t%C\n"」のように指定します。最後の「\n」は改行の指示です。

コマンド実行例

stat -c "%n %C" ファイル名画面2

(ファイル名とセキュリティコンテクストを空白区切りで出力)

stat --printf="%n\t%C\n" ファイル名

(ファイル名とセキュリティコンテクストをタブ区切りで出力)


 以下の実行例では、/etc/passwdと/etc/shellsを上記のオプションを使って出力しています。3つ目の実行例では、/etc/*をタブ区切りで出力した内容をexpandコマンド(タブを空白に変えるコマンド、第61回)で整形しています。3つ目の例では出力行数が多くなるため、headコマンド(第3回)で先頭10件のみを表示しています。

画面2
画面2 statコマンドの出力書式を指定したところ


ファイルシステムの情報を表示する

 「stat -f ファイル名」でファイルやディレクトリが保存されている場所の情報を表示します(画面3)。

コマンド実行例

stat -f ファイル名画面3

(ファイルが保存されている場所についてファイルシステムの情報を表示する)


 以下の実行例では、カレントディレクトリの情報を出力しています。

画面3
画面3 ファイルシステムを表示したところ カレントディレクトリがある位置を選んだ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る