Sui

linux指令-touch

字数统计: 928阅读时长: 3 min
2021/02/20 Share

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
2
3
4
5
6
7
8
9
10
[root@VM-8-14-centos dir]# touch touch_test
[root@VM-8-14-centos dir]# stat touch_test
文件:"touch_test"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd01h/64769d Inode:271598 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-02-20 11:53:59.113453047 +0800
最近更改:2021-02-20 11:53:59.113453047 +0800
最近改动:2021-02-20 11:53:59.113453047 +0800
创建时间:-

修改文件的访问时间为当前时间

1
2
3
4
5
6
7
8
9
10
11
[root@VM-8-14-centos dir]# touch -a touch_test
[root@VM-8-14-centos dir]# stat touch_test
文件:"touch_test"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd01h/64769d Inode:271598 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
# 注意此处与上面atime的区别
最近访问:2021-02-20 11:55:42.868132005 +0800
最近更改:2021-02-20 11:53:59.113453047 +0800
最近改动:2021-02-20 11:55:42.868132005 +0800
创建时间:-

修改文件的访问时间为指定时间

1
2
3
4
5
6
7
8
9
10
11
[root@VM-8-14-centos dir]# touch -a touch_test  -d '10 minutes ago'
[root@VM-8-14-centos dir]# stat touch_test
文件:"touch_test"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd01h/64769d Inode:271598 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
# 注意此处,修改为了10分钟之前
最近访问:2021-02-20 11:47:09.103954260 +0800
最近更改:2021-02-20 11:53:59.113453047 +0800
最近改动:2021-02-20 11:57:09.102189870 +0800
创建时间:-

同样,-m修改mtime就不演示了,和修改atime的道理一样

如果你细心观察,你会发现,无论是修改atime还是修改mtime,ctime都会伴随着变化,并且touch命令中无法修改ctime,这个也是无能为力的

另外,在平时,我们主要注重的就是mtime,对ctime不是特别关心

CATALOG
  1. 1. linux指令-touch