linuxstat命令顯示的細節比ls多得多。透過這個資訊豐富且可配置的實用程式,您可以在幕後一瞥。我們會教你怎麼使用它。
ls命令在做什麼方面做得很好,而且做得很多,但是對於Linux,似乎總有一種方法可以更深入地瞭解表面之下的內容。通常,這不僅僅是一個掀開地毯邊緣的例子。你可以把地板撕開,然後挖個洞。你可以像剝洋蔥一樣剝Linux。
ls將向您顯示有關檔案的大量資訊,例如對其設定了哪些許可權、檔案的大小以及檔案是檔案還是符號連結。為了顯示這個資訊,ls從一個叫做inode的檔案系統結構中讀取它。
每個檔案和目錄都有一個inode。inode儲存有關檔案的元資料,例如它佔用的檔案系統塊,以及與檔案關聯的日期戳。inode就像檔案的借書卡。但我只會告訴你一些資訊。要檢視所有內容,我們需要使用stat命令。
像ls一樣,stat命令有很多選項。這使它成為使用別名的最佳候選。一旦您發現了一組特定的選項,使得stat可以提供您想要的輸出,就可以將其包裝到別名或shell函式中。這使得它的使用更加方便,而且您不必記住一組晦澀難懂的命令列選項。
相關:如何使用ls命令列出Linux上的檔案和目錄
讓我們使用ls給出一個長列表(-l選項),其中包含人類可讀的檔案大小(-h選項):
ls -lh ana.h從左到右,ls提供的資訊是:
讓我們看看統計:
stat ana.h我們從stat得到的資訊是:
時間戳對時區敏感。每行末尾的-0500表示此檔案是在協調世界時(UTC)時區的計算機上建立的,該時區比當前計算機的時區早5小時。所以這臺電腦比建立這個檔案的電腦晚了五個小時。事實上,這個檔案是在一臺英國時區的計算機上建立的,我們正在美國東部標準時區的計算機上檢視它。
修改和更改時間戳可能會引起混淆,因為對於未初始化的人來說,它們的名稱聽起來好像是同一個意思。
讓我們使用chmod來修改名為ana.c的檔案的檔案許可權。我們將使每個人都可以寫它。這不會影響檔案的內容,但會影響檔案的屬性。
chmod +w ana.c然後我們將使用stat檢視時間戳:
stat ana.c更改時間戳已更新,但修改的時間戳尚未更新。
修改後的時間戳只有在檔案內容更改時才會更新。內容更改和屬性更改的更改時間戳都會更新。
要同時對多個檔案進行stat報告,請在命令列上將檔名傳遞給stat:
stat ana.h ana.o要對一組檔案使用stat,請使用模式匹配。“問號”?表示任何單個字元,星號“*”表示任何字串。我們可以告訴stat報告任何一個副檔名為“ana”的檔案,使用以下命令:
stat ana.?stat可以報告檔案系統的狀態以及檔案的狀態。f(filesystem)選項告訴stat報告檔案所在的檔案系統。注意,我們還可以將諸如“/”之類的目錄傳遞給stat,而不是檔名。
stat -f ana.cstat給我們的資訊是:
阻礙:
索引節點:
如果您對一個實際是符號連結的檔案使用stat,它將報告該連結。如果希望stat報告連結指向的檔案,請使用-L(取消引用)選項。檔案code.c是指向ana.c的符號連結。讓我們看看沒有-L選項的情況:
stat code.c檔名顯示code.c指向(->;)ana.c。檔案大小隻有11個位元組。沒有專門用於儲存此連結的塊。檔案型別列為符號連結。
很明顯,我們這裡沒有檢視實際的檔案。我們再來一次並新增-L選項:
stat -L code.c現在顯示符號連結指向的檔案的檔案詳細資訊。但是請注意,檔名仍然以code.c的形式給出。這是連結的名稱,而不是目標檔案。這是因為這是我們在命令列上傳遞給stat的名稱。
-t(簡潔)選項使stat提供一個簡明的摘要:
stat -t ana.c沒有提供任何線索。為了理解它,直到你記住了欄位序列,你需要交叉引用這個輸出到一個完整的stat輸出。
從stat獲取不同資料集的更好方法是使用自定義格式。有一長串的標記稱為格式序列。每一個都代表一個數據元素。選擇要包含在輸出中的內容並建立格式字串。當我們呼叫stat並將格式字串傳遞給它時,輸出將只包含我們請求的資料元素。
檔案和檔案系統有不同的格式序列集。檔案列表為:
“epoch”是Unix epoch,發生在1970-01-01 00:00:00+0000(UTC)。
對於檔案系統,格式序列為:
有兩個選項接受格式序列的字串。它們是--format和--printf。它們之間的區別是——printf解釋C樣式的轉義序列,例如換行符和製表符,並且不會自動向其輸出中新增換行符。
我們建立一個格式字串並將其傳遞給stat。要使用的格式序列是%n表示檔名,%s表示檔案大小,%F表示檔案型別。我們將在字串的結尾新增轉義序列,\n以確保在新行中處理每個檔案。我們的格式字串如下所示:
"File %n is %s bytes, and is a %F\n"我們將使用--printf選項將其傳遞給stat。我們將要求stat報告一個名為code.c的檔案和一組與ana匹配的檔案。?。這是完整的命令。注意--printf和格式字串之間的等號“=”:
stat --printf="File %n is %s bytes, and is a %F\n" code.c ana/ana.?每個檔案的報告都列在新行中,這是我們要求的。我們提供了檔名、檔案大小和檔案型別。
自定義格式允許您訪問比標準stat輸出中包含的資料元素更多的資料元素。
如您所見,提取您感興趣的特定資料元素有很大的空間。你也許也能理解為什麼我們建議對更長更復雜的咒語使用別名。
... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...
...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...
... 如何在windows10上安裝linux bash shell ...
要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...
想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...
... 由於其範圍,Unicode代表的字元遠遠多於ASCII。標準ASCII使用7位範圍對128個不同字元進行編碼。另一方面,Unicode是如此之大,以至於我們需要使用不同的術語來討論它! ...
...想知道,當我們在瀏覽器中鍵入網站名稱時,這種神奇是如何發生的。透過dig,你可以探索網路變戲法的過程。
...們談論Linux檔案時間戳時。在本指南中,我們將解釋系統如何更新它們,以及如何自己修改它們。 atime、mtime和ctime的區別 每個Linux檔案都有三個時間戳:訪問時間戳(atime)、修改時間戳(mtime)和更改時間戳(ctime)。 訪問時...
...上是指向現有檔案或目錄的快捷方式。讓我們看看他們是如何管理的,以及如何使用這三個元素來實現這一點。 假設我們有一個包含兩個檔案的目錄:一個是指令碼,另一個是應用程式,如下所示。 我們可以使用ln命令和-s(...