本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルの属性や日付などの情報を表示する「stat」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルの属性や日付などの情報を表示する「stat」コマンドです。
「stat」はファイルのステータス、つまり属性や日付などを表示するコマンドです。「ls -l」よりも詳しい情報を表示できます。「-f」オプションを使うとファイルシステムの情報を表示することもできます。
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はファイルシステム、カーネル、ライブラリが対応している必要がある。
文字列 | 意味 |
---|---|
%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)
ファイルの情報を表示する
出力する情報の種類を追加したり、書式を変更したりする場合は「-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件のみを表示しています。
「stat -f ファイル名」でファイルやディレクトリが保存されている場所の情報を表示します(画面3)。
stat -f ファイル名(画面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.