Linux Stat 命令解釋

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

使用 stat 命令檢查文件系統狀態

輸出以下信息:

文件 – 描述文件的名稱。

ID – 以十六進制指定係統 ID。

Namelen – 指定最大文件長度。

基本塊大小 – 這是文件系統上每個塊的大小。

塊:

Total – 這指向文件系統中的塊總數。

Free – 文件系統中剩餘的空閒塊數。

可用 – 非 root 用戶可用的空閒塊數。

索引節點:

Total – 這是系統中的 inode 總數。

Free – 這是可用的空閒 inode 的數量。

4)遵循符號鏈接

默認情況下,stat 命令不遵循符號鏈接。 當您在符號鏈接上運行它時,輸出包含有關符號鏈接的信息,但不包含它指向的文件。

$ stat /usr/share/zoneinfo/America/Cayman

Linux 統計命令

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

$ stat  -L /usr/share/zoneinfo/America/Cayman

Linux 統計命令

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 以簡潔格式打印信息

結論

stat 是一個方便的命令,用於檢查文件時間戳,例如文件修改或訪問時間。 在本指南中,我們已經介紹了 Linux 中的 stat 命令並重點介紹了一些 example 用途。