“触摸”代表什么?

“触摸”代表什么?

我的问题与其说是计算机科学问题,不如说是词源学问题。

该命令touch更改文件访问和修改时间。

“触摸”代表什么?

答案1

事实并非如此代表任何事物;它不是缩写或首字母缩写。这是一个动词。

当您touch创建文件时,您正在“在其上添加新的指纹”,更新其上次修改日期(或者如果它尚不存在则创建它)。

答案2

正如 DopeGhoti 所说,将时间戳更新为当前时间非常符合英语单词的语义。人们通常所说的“接触”内存中的数据意味着访问它(例如“这个函数接触了 2GB 的数据,因此它破坏了 CPU 的缓存”)。该touch(1)命令的存在是为了以对元数据产生影响的方式触摸文件,而不产生其他影响。

它还具有将时间/日期元数据设置为当前时间以外的其他选项,在这种情况下,语义含义不再真正适用。 (例如,touch -r reference_file /tmp/foo将 mtime 和 atime 设置为与参考相同)。


有点相关:

如果您好奇,GNU coreutilstouch(1)实现使用以下系统调用序列将时间戳更新为当前时间:

$ strace touch /tmp/foo
...
open("/tmp/foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0)                              = 0
close(3)                                = 0

openwithO_CREAT实现了 create-if-missing 行为。省略O_TRUNC会保留现有内容,就像>> /tmp/foo会的那样。 dup2将 mtime、atime 和 ctime 三个全部更新为当前时间。 (仅open()/close()不会影响时间戳)。

要将时间设置为“现在”以外的时间,它会执行相同的顺序,然后使用utimensat(0, NULL, ...)设置 stdout 引用的文件的时间(因为它将该文件的 fd 复制到 fd0)。

相关内容