History

“觸摸”代表什麼?

  • June 15, 2017

我的問題與其說是電腦科學問題,不如說是詞源問題。

該命令touch更改文件訪問和修改時間。

“觸摸”代表什麼?

它不代表任何東西。它不是縮寫或縮寫。這是一個動詞。

當您touch創建一個文件時,您是在“在其上添加新的指紋”,更新其最後修改日期(或者如果它尚不存在則創建它)。

正如 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)。

引用自:https://unix.stackexchange.com/questions/355168