我正在学习有关文件和目录的 atime、ctime、mtime。在我看来,如果我修改目录中的文件,我并没有更改“目录文件”本身的 inode 或文件内容,因此 ctime 和 mtime 应该保持不变。
但在下面的测试中,当我编辑文件时,更改时间和修改时间确实发生了变化。他们为什么改变?
$ ls
blah.txt test.txt test.txt~
$ cd ..
$ stat -x Write
File: "Write"
Size: 170 FileType: Directory
Mode: (0777/drwxrwxrwx) Uid: ( 501/user) Gid: ( 20/ staff)
Device: 1,4 Inode: 652017 Links: 5
Access: Tue Aug 11 08:20:33 2015
Modify: Tue Aug 11 08:01:49 2015
Change: Tue Aug 11 08:01:49 2015
$ cd Write
$ ls
blah.txt test.txt test.txt~
$ emacs test.txt
$ cd ..
$ stat -x Write
File: "Write"
Size: 170 FileType: Directory
Mode: (0777/drwxrwxrwx) Uid: ( 501/user) Gid: ( 20/ staff)
Device: 1,4 Inode: 652017 Links: 5
Access: Tue Aug 11 08:20:48 2015
Modify: Tue Aug 11 08:20:48 2015
Change: Tue Aug 11 08:20:48 2015
答案1
当您运行时,emacs
它会创建一个备份文件,int his case test.txt~
。如果已经存在一个具有该名称的文件,我怀疑它会将其删除并创建一个新文件。新文件的创建正在修改目录,从而更新其修改和更改时间。
相反,如果您说echo new line >> blah.txt
您不会创建任何额外的文件,因此不会更新目录中的这些条目。在这种情况下,shell 仅打开文件(用于追加)。