stat
は、特定のファイルまたはファイルシステムに関する詳細情報を表示するコマンドラインユーティリティです。
この記事では、stat
の使用方法について説明します コマンド。
stat
の使用 コマンド#
stat
の構文 コマンドは次のとおりです:
stat [OPTION]... FILE...
stat
1つ以上の入力FILE
を受け入れます 名前を付け、コマンドの動作と出力を制御するいくつかのオプションが含まれています。
次の例を見てみましょう:
stat file.txt
出力は次のようになります:
File: file.txt
Size: 4030 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 13633379 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize)
Access: 2019-11-06 09:52:17.991979701 +0100
Modify: 2019-11-06 09:52:17.971979713 +0100
Change: 2019-11-06 09:52:17.971979713 +0100
Birth: -
オプションなしで呼び出された場合、stat
次のファイル情報を表示します:
- ファイル-ファイルの名前。
- サイズ-ファイルのサイズ(バイト単位)。
- ブロック-ファイルが取る割り当てられたブロックの数。
- IOブロック-すべてのブロックのサイズ(バイト単位)。
- ファイルタイプ-(例:通常のファイル、ディレクトリ、シンボリックリンク)
- デバイス-16進数および10進数のデバイス番号。
- Inode-iノード番号。
- リンク-ハードリンクの数。
- アクセス-数値法と記号法でのファイルのアクセス許可。
- Uid-ユーザーIDと所有者の名前。
- Gid-グループIDと所有者の名前。
- コンテキスト-SELinuxセキュリティコンテキスト。
- アクセス-ファイルが最後にアクセスされた時刻。
- 変更-ファイルのコンテンツが最後に変更された時刻。
- 変更-ファイルの属性またはコンテンツが最後に変更された時刻。
- 誕生-ファイル作成時間(Linuxではサポートされていません)。
ファイルシステムに関する情報の表示#
ファイル自体に関する情報ではなく、特定のファイルが存在するファイルシステムに関する情報を取得するには、-f
を使用します。 、(--file-system
)オプション:
stat -f file.txt
コマンドの出力は次のようになります:
File: "package.json"
ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 61271111 Free: 25395668 Available: 22265851
Inodes: Total: 15630336 Free: 13979610
stat
の場合 -f
で呼び出されます オプションの場合、次の情報が表示されます:
- ファイル-ファイルの名前。
- ID-ファイルシステムID(16進数)。
- Namelen-ファイル名の最大長。
- 基本ブロックサイズ-ファイルシステム上の各ブロックのサイズ。
- ブロック:
- 合計-ファイルシステム内の合計ブロック数。
- 空き-ファイルシステム内の空きブロックの数。
- Available-root以外のユーザーが利用できる空きブロックの数。
- iノード:
- 合計-ファイルシステム内の合計iノードの数。
- 無料-ファイルシステム内の空きiノードの数。
逆参照(フォロー)シンボリックリンク#
デフォルトでは、stat
シンボリックリンクをたどりません。シンボリックリンクでコマンドを実行すると、出力には、それが指すファイルではなく、シンボリックリンクに関する情報が含まれます。
stat /etc/resolv.conf
File: /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
Size: 39 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 8126659 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-06 21:12:26.875956073 +0100
Modify: 2018-07-24 11:11:48.128794519 +0200
Change: 2018-07-24 11:11:48.128794519 +0200
Birth: -
シンボリックリンクを逆参照(フォロー)し、シンボリックリンクが指すファイルに関する情報を表示するには、-L
を使用します。 、(--dereference
)オプション:
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 715 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 989 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 101/systemd-resolve) Gid: ( 103/systemd-resolve)
Access: 2019-11-06 20:35:25.603689619 +0100
Modify: 2019-11-06 20:35:25.555689733 +0100
Change: 2019-11-06 20:35:25.555689733 +0100
Birth: -
出力のカスタマイズ#
stat
コマンドには、必要に応じて出力をカスタマイズできる2つのオプションがあります。-c
、(--format="format"
)および--printf="format"
。
これら2つのオプションの違いは、2つ以上のファイルが演算子として使用される場合--format
各オペランドの出力の後に改行が自動的に追加されます。 --printf
バックスラッシュエスケープを解釈します。
--format
で使用できるファイルおよびファイルシステム用の多くのフォーマットディレクティブがあります および--printf
。
たとえば、ファイルの種類のみを表示するには、次のコマンドを実行します。
stat --format="%F" /dev/null
character special file
任意の数のフォーマットディレクティブを組み合わせて、オプションでそれらの間にカスタムセパレータを使用できます。区切り文字は、単一の文字または文字列にすることができます:
stat --format="%n,%F" /dev/null
/dev/null,character special file
改行やタブなどの特殊文字を解釈するには、--printf
を使用します オプション:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
新しい行を印刷します:
Name: /etc
Permissions: 755
stat
簡潔な形式で情報を表示することもできます。この形式は、他のユーティリティによる解析に役立ちます。
-t
を使用してコマンドを呼び出します (--terse
)出力を簡潔な形式で印刷するオプション:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
ファイルおよびファイルシステムタイプのすべてのフォーマットディレクティブの完全なリストについては、man stat
またはstat --help
ターミナルで。
結論#
stat
コマンドは、指定されたファイルとファイルシステムに関する情報を出力します。
Linuxでは、他のいくつかのコマンドで、ls
を使用して特定のファイルに関する情報を表示できます。 最も使用されているものですが、stat
によって提供される情報のチャンクのみが表示されます コマンド。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。