touch
如果该文件不存在,则创建一个新的空文件,因为这正是设计目的。该实用程序必须包含代码以专门处理这种情况。该实用程序出现在Unix V7中;其手册对此进行了描述:
touch —文件的最后修改日期
touch
尝试设置每个文件的修改日期。这是通过从文件读取字符并将其写回来完成的。如果** file *不存在,除非-c
指定了选项,否则将尝试创建它。
(我不知道touch
如果文件为空该怎么办。基础系统调用稍后出现。)
我不确定为什么touch
要设计成使文件存在,但是我怀疑是因为make
。为什么要将文件的修改时间设置为当前时间?在某些情况下,将修改时间设置为特定时间可能很有用,但是该功能后来出现了,原始功能touch
只能将修改时间设置为当前时间。这样做的原因是重新运行make
依赖于该文件的规则。
也就是说,假设您有一个文件foo
和一个makefile,该文件声明了bar
要从中生成命令foo
。当您键入时make bar
,将执行并bar
创建命令。如果bar
存在并且比foo
,make bar
则不做任何事情,因为make
假定bar
已经生成了。但是,如果bar
早于foo
,则使之认为bar
不是最新的,需要重新生成。
但是,如果生成的规则bar
已更改怎么办?然后,您有两个选择:
rm bar; make bar
touch foo; make bar
您可能需要foo
存在才能生成bar
,否则该命令通常将不起作用。
该make
实用程序中还存在“触摸”术语:make -t bar
只会假装运行命令,也就是说,它将修改时间设置bar
为当前时间,而不实际运行要生成的命令bar
(如果您认为的更改foo
不应影响bar
)。touch
因此,该实用程序是该make -t
功能的独立版本。
touch /forcefsck
一个空文件创建该文件,/forcefsck
以强制在下次重新启动时检查文件系统是否存在错误。文件本身不需要包含任何内容,只需要存在即可。没有touch
,我需要使用vi
或nano
保存空白文件。使用起来更快touch
。