Linux筆記03: Linux常用命令_3.3檔案操作命令
3.3 檔案操作命令
3.3.1 stat命令
●命令名稱:stat。
●英文原意:display file or file system status。
●所在路徑:/usr/bin/stat。
●執行許可權:所有使用者。
●功能描述:顯示檔案或檔案系統的詳細資訊。
(1)命令格式
[root@localhost ~]# stat [選項] 檔名或目錄名 選項: -f:檢視檔案所在的檔案系統資訊(而不是檔案的資訊)
(2)常見用法
①檢視檔案的詳細資訊
[root@localhost ~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’ Size: 1649 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 16797762 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2022-11-27 17:07:14.882951678 -0500 # 訪問時間 Modify: 2022-11-2717:06:24.360006324 -0500 # 資料修改時間 Change: 2022-11-27 17:06:24.360006324 -0500 # 狀態修改時間 Birth: -
stat可以檢視檔案詳細資訊,而且展示了檔案三個時間:訪問時間、資料修改時間、狀態修改時間。
②檢視檔案系統資訊
[root@localhost ~]# stat -f anaconda-ks.cfg File: "anaconda-ks.cfg" ID: fd0000000000 Namelen: 255 Type: xfs Block size: 4096 Fundamental block size: 4096Blocks: Total: 3273216 Free: 1989643 Available: 1989643 Inodes: Total: 6551552 Free: 6417040
(3)三種時間的含義
Linux中的每個檔案都有三個時間,分別是訪問時間(Access Time)、資料修改時間(Modify Time)和狀態修改時間(Change Time)。
注意:在Linux中,檔案沒有建立時間。
①先檢視系統當前時間:
[root@localhost ~]# date Sat Dec 10 20:59:02 EST 2022
②再建立一個mylog.log檔案,並檢視該檔案的三種時間:
[root@localhost ~]# touch mylog.log [root@localhost ~]# stat mylog.log 省略部分內容…… Access: 2022-12-10 20:59:39.691757029 -0500 Modify: 2022-12-10 20:59:39.691757029 -0500 Change: 2022-12-10 20:59:39.691757029 -0500 Birth: -
可以看到,touch創建出的檔案三個時間都為系統當前時間。
③如果用cat命令讀取一下這個檔案,就會發現檔案的訪問時間(Access Time)變成了cat命令的執行時間,如下:
[root@localhost ~]# cat mylog.log [root@localhost ~]# stat mylog.log 省略部分內容…… Access: 2022-12-10 21:03:35.151936060 -0500 Modify: 2022-12-10 20:59:39.691757029 -0500 Change: 2022-12-10 20:59:39.691757029 -0500 Birth: -
④如果用echo命令向檔案中寫入資料,那麼檔案的資料修改時間(Modify Time)就會發生改變。檔案資料改變了,系統會認為檔案的狀態改變了,所以狀態修改時間(Change Time)也會隨之改變,如下:
[root@localhost ~]# echo [2022-12-10 20:59:39]建立檔案 > mylog.log [root@localhost ~]# stat mylog.log 省略部分內容…… Access: 2022-12-10 21:03:35.151936060 -0500 Modify: 2022-12-10 21:12:16.149970237 -0500 Change: 2022-12-10 21:12:16.149970237 -0500 Birth: -
⑤如果只修改檔案的狀態(比如改變檔案的所有者),而不修改檔案的資料,則只會更改狀態修改時間(Change Time),如下:
[root@localhost ~]# chown LaytonWang mylog.log [root@localhost ~]# stat mylog.log 省略部分內容…… Access: 2022-12-10 21:03:35.151936060 -0500 Modify: 2022-12-10 21:12:16.149970237 -0500 Change: 2022-12-10 21:19:23.698742725 -0500 Birth: -
⑥而如果用touch命令再次觸控這個檔案,則這個檔案的三個時間都會改變,如下:
[root@localhost ~]# touch mylog.log [root@localhost ~]# stat mylog.log 省略部分內容…… Access: 2022-12-10 21:21:08.859162533 -0500 Modify: 2022-12-10 21:21:08.859162533 -0500 Change: 2022-12-10 21:21:08.859162533 -0500 Birth: -
3.3.2 touch命令
●命令名稱:touch。
●英文原意:change file timestamps。
●所在路徑:/usr/bin/touch。
●執行許可權:所有使用者。
●功能描述:修改檔案的時間戳。
(1)命令格式
[root@localhost ~]# touch [選項] 檔名或目錄名
選項:
-a:只修改檔案的訪問時間(Access Time)
-c:如果檔案不存在,則不建立新檔案
-d:把檔案的時間改為指定的時間
-m:只修改檔案的資料修改時間(Modify Time)
(2)常見用法
[root@localhost ~]# touch mylog.log
touch的意思是觸控,如果檔案不存在,則會建立空檔案;如果檔案已經存在,則會修改檔案的時間戳,檔案的三個時間(訪問時間、資料修改時間、狀態修改時間)都會被修改。
3.3.3 cat命令
●命令名稱:cat。
●英文原意:concatenate files and print on the standard output。
●所在路徑:/usr/bin/cat。
●執行許可權:所有使用者。
●功能描述:合併檔案並列印輸出到標準輸出。
(1)命令格式
[root@localhost ~]# cat [選項] 檔名 選項: -A:相當於-vET選項的整合,用於列出所有隱藏符號 -E:列出每行結尾的回車符$ -n:顯示行號 -T:把Tab鍵用^I顯示出來 -v:列出特殊字元
(2)常見用法
①直接檢視檔案的內容:
[root@localhost ~]# cat anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media 省略部分內容……
②使用“-n”選項,則會顯示行號:
[root@localhost ~]# cat -n anaconda-ks.cfg 1 #version=DEVEL 2 # System authorization information 3 auth --enableshadow --passalgo=sha512 4 # Use CDROM installation media 省略部分內容……
③使用“-A”選項,則相當於使用了“-vET”選項,可以檢視文字中的所有隱藏符號,包括回車符($)、Tab鍵(^I)等:
[root@localhost ~]# cat -A anaconda-ks.cfg #version=DEVEL$ # System authorization information$ auth --enableshadow --passalgo=sha512$ # Use CDROM installation media$ 省略部分內容……
cat命令用於檢視檔案內容,不論檔案內容有多少,都會一次性顯示。如果檔案非常大,那麼檔案開頭的內容就看不到了。不過Linux可以使用“pgup/pgdn”上下翻頁,但是這種翻頁是有極限的,如果檔案足夠長,那麼還是無法看全檔案的內容。所以cat命令適合檢視不太大的檔案。
3.3.4 more命令
●命令名稱:more。
●英文原意:file perusal filter for crt viewing。
●所在路徑:/usr/bin/more。
●執行許可權:所有使用者。
●功能描述:分屏顯示檔案內容。
(1)命令格式
[root@localhost ~]# more [選項] 檔名
more命令一般不用選項,命令會開啟一個互動介面,可以識別一些互動命令。
常用的互動命令如下:
●空格鍵:向下翻頁。
●b:向上翻頁。
●回車鍵:向下滾動一行。
●/字串:搜尋指定的字串。
●q:退出。
(2)常見用法
[root@localhost ~]# more anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media 省略部分內容…… --More--(40%)
more命令可以分屏顯示檔案內容,如果檔案過大,可以使用more命令替代cat命令。
3.3.5 less命令
●命令名稱:less。
●英文原意:opposite of more。
●所在路徑:/usr/bin/less。
●執行許可權:所有使用者。
●功能描述:分行顯示檔案內容。
(1)命令格式
[root@localhost ~]# less 檔名
less命令可以使用“方向鍵”上下翻行;使用“pgup/pgdn”上下翻頁。
(2)常見用法
[root@localhost ~]# less anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media 省略部分內容…… :
3.3.6 head命令
●命令名稱:head。
●英文原意:output the first part of files。
●所在路徑:/usr/bin/head。
●執行許可權:所有使用者。
●功能描述:顯示檔案開頭的內容。
(1)命令格式
[root@localhost ~]# head [選項] 檔名 選項: -n:從檔案頭開始,顯示指定行數 -v:顯示檔名
(2)常見用法
①預設顯示檔案開頭10行的內容:
[root@localhost ~]# head anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable ignoredisk --only-use=sda
②顯示檔案開頭指定行數的內容:
[root@localhost ~]# head -n 5 anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom
3.3.7 tail命令
●命令名稱:tail。
●英文原意:output the last part of files。
●所在路徑:/usr/bin/tail。
●執行許可權:所有使用者。
●功能描述:顯示檔案結尾的內容。
(1)命令格式
[root@localhost ~]# tail [選項] 檔名 選項: -n:從檔案結尾開始,顯示指定行數 -f:監聽檔案的新增內容
(2)常見用法
①預設顯示檔案結尾10行的內容:
[root@localhost ~]# tail anaconda-ks.cfg %addon com_redhat_kdump --enable --reserve-mb='auto' %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
②顯示檔案結尾指定行數的內容:
[root@localhost ~]# tail -n 5 anaconda-ks.cfg %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
③監聽檔案的新增內容:-f選項
[root@localhost ~]# tail -f -n 5 anaconda-ks.cfg %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
使用-f選項,游標不會退出命令,而會一直監聽在檔案的結尾處,等待顯示新增內容。這時如果向檔案中追加一些資料(需開啟一個新終端),會實時顯示在檔案尾。
小結:
本節介紹檔案操作相關命令。stat檢視檔案詳細資訊,包括檔案的三個時間;touch是觸控一個檔案,如果檔案不存在,則會建立空檔案,否則會修改檔案的三個時間戳;cat適合檢視不太大的檔案;對於大檔案,more可以分屏顯示檔案內容,less可以分行顯示檔案內容;head顯示檔案開頭的內容;tail顯示檔案結尾的內容,其-f選項可以實時監聽檔案尾的新增內容。