touch 是什么
touch 创建空文件或刷新文件时间戳。它最常用的场景其实不是建文件,而是改时间:触发构建系统重新编译、让增量同步重新处理某个文件、造出指定时间的测试数据。用 -d 或 -t 可以指定具体时间,加 -c 则在文件不存在时跳过而不创建。
基本信息
| 适用平台 | Linux、Unix 通用(coreutils) |
|---|---|
| 命令语法 | touch [选项] 文件... |
| 常用选项 | -d 指定时间字符串 / -t 指定固定格式时间 / -c 文件不存在则不创建 / -a 只改访问时间 / -m 只改修改时间 / -r 参照其他文件的时间 |
| 影响面 | 修改时间会被备份、同步与构建逻辑读取 |
典型使用场景
- 强制重新编译:改动头文件后让构建系统认为目标文件过期
- 触发增量同步:让某个文件被判定为更新而重新传输
- 生成测试数据:造出指定日期的文件来验证清理脚本
- 占位:需要文件存在才能通过的检查点
- 对齐时间戳:把一批文件的修改时间统一到同一时刻
常用示例
常用示例
touch newfile.txt
touch app.cpp app.h # 触发重新编译
touch -d "2026-10-01 08:00:00" report.txt
touch -c keep.conf # 仅更新时间,文件不存在则跳过
touch -r reference.txt copy.txt # 复制另一个文件的时间戳
ls -l --time-style=full-iso report.txt常用选项
| 选项 | 作用 | 提示 |
|---|---|---|
| 无选项 | 创建空文件或更新两个时间 | 文件已存在时不清空内容 |
| -d 字符串 | 指定时间 | 支持可读的时间描述 |
| -t 时间 | 指定固定位数的时间格式 | 便于脚本拼接生成 |
| -c | 文件不存在时不创建 | 只想改时间时用它 |
| -a | 只更新访问时间 | 测试访问行为时使用 |
| -m | 只更新修改时间 | 更常用的精确控制 |
| -r 参照 | 复制参照文件的时间 | 批量对齐时间戳 |
touch 对已存在的文件不会清空内容,只改时间戳;但改完之后备份、同步与构建的判断都会跟着变化。
需要精确写入时间时用固定位数格式更可靠,可读的时间描述依赖解析规则,在不同语言环境下可能有差异。