开发工具

Shell之 touch 指令

touch 是 Unix 和类 Unix 系统中的一个命令行工具,用于更改文件的时间戳或创建一个新的空文件。如果指定的文件已经存在,touch 命令会更新该文件的访问时间和修改时间为当前时间;如果文件不存在,touch 命令会创建一个新的空文件。


基本语法

touch [选项] 文件名...

选项:用于修改 touch 命令的行为。

文件名:要创建或更新时间戳的文件列表。


常用选项

-a:仅更改文件的访问时间。

-m:仅更改文件的修改时间。

-t [[CC]YY]MMDDhhmm[.ss]:使用指定的时间戳而不是当前时间。时间格式为 [[世纪]年]月日时分[.秒]。

-c 或 --no-create:不创建任何文件。如果指定的文件不存在,则不会创建新文件。

-r 参考文件 或 --reference=参考文件:使用参考文件的时间戳来更新指定文件的时间戳。


示例

1、创建一个新的空文件

touch newfile.txt

这将创建一个名为 newfile.txt 的新空文件。


2、更新现有文件的时间戳

touch existingfile.txt

这将把 existingfile.txt 的访问时间和修改时间更新为当前时间。


3、仅更新文件的访问时间

touch -a existingfile.txt

这将只更新 existingfile.txt 的访问时间,而保持修改时间不变。


4、设置文件的时间戳为特定时间

touch -t 202310051230 existingfile.txt

这将把 existingfile.txt 的访问时间和修改时间设置为 2023 年 10 月 5 日 12 点 30 分。


5、使用参考文件的时间戳

touch -r referencefile.txt targetfile.txt

这将把 targetfile.txt 的访问时间和修改时间设置为与 referencefile.txt 相同。


6、不创建文件,仅更新时间戳(如果文件存在)

touch -c nonexistingfile.txt

如果 nonexistingfile.txt 不存在,这个命令不会创建它;如果文件存在,则会更新时间戳。


注意事项

1、touch 命令通常用于需要更改文件时间戳的场景,如触发基于时间戳的行为(如 make 工具重新编译文件)。

2、在使用 -t 选项设置时间戳时,需要确保时间格式的准确性。

3、touch 命令不会更改文件的内容,只会更改文件的时间戳或创建一个新的空文件。