linux指令-touch
touch指令用于创建一个空文件,以及用来修改文件的atime、mtime
在介绍touch指令之前,需要澄清三个概念,linux文件系统中的时间。
在linux文件系统中,每个文件或目录都有三个时间,关于这三个时间的查看,可以使用stat
命令或者ls -time={atime, ctime, mtime}
查看
- 最后的访问时间(atime,access time)
- 最后的修改时间(mtime,modification time)
- 最后的改变时间(ctime,status time)
atime好理解,atime例如我们查看文件内容的时候,最后的访问时间就会被更新为当前时间
mtime为文件内容的修改时间,如果是目录,则是对目录的操作,例如删除目录中的文件、拷贝文件、增加文件等
ctime是随着atime与mtime改变的,ctime指的是文件或者目录元数据的改变,当atime或者mtime改变了,那么文件的元数据也一定变了,因此ctime就变了
系统时间可能阴差阳错的变为未来的时间,例如BIOS设置错误,当将BIOS校准后,系统又恢复为当前时间,此时之前的文件可能就不可用了
另外科普一下,我们北京时间所处的时间为格林威治时间的右边,右边的时间比格林威治的时间快,即北京比格林威治的时间快8个小时,表示法为GMT+8
命令格式:
1 | touch [OPTION]... FILE... |
参数:
参数 | 解释 |
---|---|
-a | 修改atime |
-c | 修改文件的时间,文件不存在则创建 |
-d | 指定文件修改的时间,也可使用–date=”日期或者时间” |
-m | 修改文件的mtime |
-t | 同-d,只不过指定时间的格式不同,指定时间的格式为[YYYYMMDDhhmm],注意,此处只能精确到分钟 |
演示:
创建一个文件,查看文件的三个时间
1 | [root@VM-8-14-centos dir]# touch touch_test |
修改文件的访问时间为当前时间
1 | [root@VM-8-14-centos dir]# touch -a touch_test |
修改文件的访问时间为指定时间
1 | [root@VM-8-14-centos dir]# touch -a touch_test -d '10 minutes ago' |
同样,-m
修改mtime就不演示了,和修改atime的道理一样
如果你细心观察,你会发现,无论是修改atime还是修改mtime,ctime都会伴随着变化,并且touch命令中无法修改ctime,这个也是无能为力的
另外,在平时,我们主要注重的就是mtime,对ctime不是特别关心