touch 是 Linux 和 Unix 系統(tǒng)中一個常用的命令行工具,主要用于操作文件的時間戳。該命令的基本功能包括:
基本功能
-
創(chuàng)建空文件:
- 如果指定的文件不存在,
touch會創(chuàng)建一個新的空文件 - 示例:
touch newfile.txt將在當(dāng)前目錄創(chuàng)建名為 newfile.txt 的空文件
- 如果指定的文件不存在,
-
更新文件時間戳:
- 默認情況下,
touch會將文件的訪問時間和修改時間更新為當(dāng)前系統(tǒng)時間 - 示例:
touch existingfile.txt將更新 existingfile.txt 的時間戳
- 默認情況下,
常用選項
-
-a:僅更改訪問時間(access time) -
-m:僅更改修改時間(modification time) -
-c:如果文件不存在,不創(chuàng)建新文件 -
-d或--date=STRING:使用指定時間而非當(dāng)前時間 -
-t:使用 [[CC]YY]MMDDhhmm[.ss] 格式指定時間 -
-r:使用參考文件的時間
實際應(yīng)用場景
-
批量創(chuàng)建文件:
-
touch file{1..10}.txt創(chuàng)建 file1.txt 到 file10.txt -
touch dir/{a,b,c}.txt在 dir 目錄下創(chuàng)建 a.txt, b.txt, c.txt
-
-
強制文件更新:
- 某些構(gòu)建系統(tǒng)會根據(jù)文件時間戳判斷是否需要重新編譯
- 使用
touch可以強制觸發(fā)重新構(gòu)建
-
日志輪轉(zhuǎn):
- 在日志管理中可以配合 logrotate 使用
touch創(chuàng)建新的日志文件
- 在日志管理中可以配合 logrotate 使用
-
測試腳本:
- 測試文件監(jiān)控程序時,可用
touch快速修改文件觸發(fā)事件
- 測試文件監(jiān)控程序時,可用
技術(shù)細節(jié)
-
時間戳類型:
- 訪問時間(
atime):文件最后被讀取的時間 - 修改時間(
mtime):文件內(nèi)容最后被修改的時間 - 變更時間(
ctime):文件元數(shù)據(jù)(如權(quán)限)最后被修改的時間
- 訪問時間(
-
時間精度:
- 現(xiàn)代 Linux 系統(tǒng)支持納秒級時間戳
- 使用
stat命令可以查看精確的時間戳
-
特殊文件:
-
touch也可以用于特殊文件(如設(shè)備文件),但通常不建議這樣做
-
注意:在某些配置了 noatime 的文件系統(tǒng)上,訪問時間可能不會更新。