在 Linux 系統管理中,cd、ls 等指令固然是家常便飯,但 touch 這個看似不起眼的工具,卻是處理檔案時間戳記、快速建立空白檔案的關鍵利器。無論是配合 make 建構專案,還是需要精確控制檔案的存取與修改時間,touch 都能輕鬆勝任。本文將系統整理其語法、參數與實戰範例,助你快速掌握這項核心技能。

基本格式:touch [選項]... 檔案...
主要功能:
| 參數 | 長參數 | 說明 |
|---|---|---|
| -a | --time=atime / --time=access / --time=use | 僅變更存取時間 |
| -c | --no-create | 不建立新檔案,僅更新已存在檔案的時間 |
| -d | --date=字串 | 使用指定的日期時間字串(支援相對時間如 "2 days ago") |
| -m | --time=mtime / --time=modify | 僅變更修改時間 |
| -r | --reference=檔案 | 將目標檔案時間設為與參考檔案相同 |
| -t | --time=時間戳記 | 使用指定格式的時間戳記 [[CC]YY]MMDDhhmm[.SS] |
提示: -f 參數僅為相容 BSD 版本,實際操作無特殊效果。
touch log2012.log log2013.log
# 若檔案不存在則建立,存在則更新時間
# 搭配 -c 參數可避免誤建新檔
touch -c log2014.log # log2014.log 不存在時不會建立
# 將 log2012.log 的時間設為與 log.log 相同
touch -r log.log log2012.log
# 格式:[[CC]YY]MMDDhhmm[.SS]
touch -t 201211142234.50 log.log
# 設為 2012-11-14 22:34:50
時間格式說明:
CC=世紀前兩位、YY=年份後兩位(若省略 CC 則視為 1969-2068)、MM=月、DD=日、hh=時、mm=分、SS=秒(0-61 含閏秒)。系統限制早於 1970-01-01 的時間無效。
make 觸發重新編譯特定模組掌握 touch 的靈活運用,能大幅提升腳本撰寫與系統維護的效率。建議搭配 stat 指令驗證時間戳記變更結果,確保操作精確無誤。
Linux 設定 PostgreSQL 允許遠端連線:pg_hba.conf 與 postgresql.conf 雙檔修改
Linux mydumper 報錯 libmysqlclient_16 not defined 解決:LD_LIBRARY_PATH 引入 MySQL 函式庫路徑
CentOS 解除 Fail2ban 封鎖 IP:iptables 列出與刪除封鎖規則
Linux 雙伺服器 IP 無縫切換實戰:ifconfig 別名介面 + arping 免費 ARP 宣告秒級遷移
Linux 普通用戶無法使用 reboot/shutdown?用 SUID 權限解決
Linux 防禦 CC 攻擊實戰:CSF 防火牆配置與 CDN 策略選擇指南