stat 命令用於Linux/Unix 系統中,用於顯示文件和文件系統的詳細信息。 它最常用於獲取文件時間戳。
Linux ls 命令通常為您提供有關文件的基本詳細信息,而 stat 命令打印有關從 inode 中提取的文件的附加信息。
在本指南中,我們通過示例進一步了解 stat 命令及其選項。
句法:
$ stat <OPTION> <FILENAME>
1) 檢查文件狀態
要顯示文件狀態,例如大小、inode 編號鏈接和文件時間戳,請運行:
$ stat output.txt
輸出以下信息:
文件 – 這是文件名。
大小 – 這是常規文件的大小(以字節為單位)。
塊 – 為文件指定的已分配塊數。
IO 塊 – 每個塊的大小(以字節為單位)。
文件類型 – 指定文件的類型(常規文件、符號鏈接等)。
設備 – 這是十進製或十六進制格式的設備編號。
inode – 顯示 inode 編號。
鏈接 – 指定硬鏈接的數量。
訪問 – 這以數字或符號格式顯示文件權限。
Uid – 這是所有者的用戶 ID 和名稱。
Gid – 組 ID 和所有者名稱。
上下文 – 這描述了 SELinux 安全上下文。
訪問 – 指向上次訪問文件的時間。
修改 – 指向上次修改文件內容的時間。
更改 – 這是最後一次更改文件的元數據。
2) 檢查文件系統狀態
要打印出文件所在的文件系統狀態而不是提供有關常規文件的信息,請使用 -f
或者 --file-system
選項。
為了 example:
$ stat -f output.txt

輸出以下信息:
文件 – 描述文件的名稱。
ID – 以十六進制指定係統 ID。
Namelen – 指定最大文件長度。
基本塊大小 – 這是文件系統上每個塊的大小。
塊:
Total – 這指向文件系統中的塊總數。
Free – 文件系統中剩餘的空閒塊數。
可用 – 非 root 用戶可用的空閒塊數。
索引節點:
Total – 這是系統中的 inode 總數。
Free – 這是可用的空閒 inode 的數量。
4)遵循符號鏈接
默認情況下,stat 命令不遵循符號鏈接。 當您在符號鏈接上運行它時,輸出包含有關符號鏈接的信息,但不包含它指向的文件。
$ stat /usr/share/zoneinfo/America/Cayman

要遵循符號鏈接並打印出有關它指向的文件的信息,請使用 -L 選項,如下所示:
$ stat -L /usr/share/zoneinfo/America/Cayman

5) 自定義輸出
除了打印默認的自定義格式,您還可以使用 --printf
或者 --format
用於自定義 stat 命令輸出的選項。
使用 –printf,您必須使用 n 以換行符打印兩個或多個文件操作數。 為了 example 打印設備和 inode 編號:
stat --printf="%d:%in" /usr /etc
Output
2048:63
2048:128001
使用 –format 它默認打印換行符,對於 example:
stat --format=%d:%i /usr /etc
Output
2048:63
2048:128001
要打印文件名和上次數據修改時間,請鍵入:
stat --printf="Name: %nnThe time of last data modification: %yn" /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 命令並重點介紹了一些 example 用途。