statコマンドは、Linux / Unixシステムで使用され、ファイルおよびファイルシステムに関する詳細情報を表示します。これは、ファイルのタイムスタンプを取得するために最も一般的に使用されます。
Linux lsコマンドは通常、ファイルに関する基本的な詳細を提供しますが、statコマンドはiノードからプルされたファイルに関する追加情報を出力します。
このガイドでは、例を通じてstatコマンドとそのオプションを詳しく見ていきます。
構文:
$ stat <OPTION> <FILENAME>
1)ファイルのステータスを確認する
サイズ、iノード番号リンク、ファイルタイムスタンプなどのファイルステータスを表示するには、次のコマンドを実行します。
$ stat output.txt
次の情報を出力します:
ファイル-これはファイル名です。
サイズ-これは通常のファイルのサイズ(バイト単位)です。
ブロック-ファイルに指定された割り当て済みブロックの数。
IOブロック-すべてのブロックのバイト単位のサイズ。
ファイルタイプ-ファイルのタイプを指定します(通常のファイル、シンボリックリンクなど)。
デバイス-これは、10進数または16進数形式のデバイス番号です。
iノード-iノード番号を表示します。
リンク-ハードリンクの数を指定します。
アクセス-これは、ファイルのアクセス許可を数値または記号形式で表示します。
Uid-これは所有者のユーザーIDと名前です。
Gid-所有者のグループIDと名前。
コンテキスト-これはSELinuxセキュリティコンテキストを説明します。
アクセス-ファイルが最後にアクセスされた時刻を指します。
変更-ファイルのコンテンツが最後に変更された時刻を指します。
変更-ファイルのメタデータが最後に変更されたのはこれです。
2)ファイルシステムのステータスを確認する
通常のファイルに関する情報を提供する代わりに、ファイルが存在するファイルシステムのステータスを出力するには、-f
を使用します。 または--file-system
オプション。
例:
$ stat -f output.txt
次の情報を出力します:
ファイル-ファイルの名前を説明します。
ID-システムIDを16進数で指定します。
Namelen-ファイルの最大長を指定します。
基本的なブロックサイズ-これは、ファイルシステム上の各ブロックのサイズです。
ブロック:
合計-これは、ファイルシステム内のブロックの総数を指します。
Free-ファイルシステムに残っている空きブロックの数。
使用可能-root以外のユーザーが使用できる空きブロックの数。
iノード:
合計-これは、システム内のiノードの総数です。
無料-これは、利用可能な無料のiノードの数です。
4)シンボリックリンクをたどる
statコマンドは、デフォルトではシンボリックリンクをたどりません。シンボリックリンクで実行すると、出力にはシンボリックリンクに関する情報が含まれますが、それが指すファイルは含まれません。
$ stat /usr/share/zoneinfo/America/Cayman
シンボリックリンクをたどり、それが指すファイルに関する情報を印刷するには、次のように-Lオプションを使用します。
$ stat -L /usr/share/zoneinfo/America/Cayman
5)カスタム出力
デフォルトのカスタム形式を印刷する代わりに、--printf
を使用できます。 または--format
statコマンドの出力をカスタマイズするためのオプション。
--printfを使用すると、\nを使用して改行で2つ以上のファイルオペランドを出力する必要があります。たとえば、デバイスとiノード番号を印刷するには:
stat --printf='%d:%i\n' /usr /etc
Output
2048:63
2048:128001
--formatを使用すると、デフォルトで改行が出力されます。例:
stat --format=%d:%i /usr /etc
Output
2048:63
2048:128001
ファイル名と最終データ変更時刻を印刷するには、次のように入力します。
stat --printf='Name: %n\nThe time of last data modification: %y\n' /usr
Output
Name: /usr
The time of last data modification: 2020-09-28 21:47:27.451120000 +0000
所有者のユーザー名、ファイルタイプ、合計サイズをバイト単位で印刷するには、次のコマンドを実行します。
stat --format="%U,%F,%s" /usr
Output
stat --format="%U,%F,%s" /usr
root,directory,4096
6)情報を簡潔な形式で表示する
情報を簡潔な形式で印刷するには、-t
を使用します オプション。他のツールによる解析に役立ちます。
結論
statは、ファイルの変更やアクセス時間などのファイルのタイムスタンプを確認するための便利なコマンドです。このガイドでは、Linuxでのstatコマンドについて説明し、いくつかの使用例を取り上げました。