Linux下的时间旅行?电影里的场景,对吧?良旭,你又在吹牛?不不不,良旭是来给大家介绍触摸命令的。有了它,就可以改变时间戳,达到穿越的目的。touch命令在我们的工作中也用得比较频繁,所以我们就由浅入深地详细讲解一下。touch命令的基本用法说到touch命令,大家一定会想到它的两个用法:改变时间戳和创建新文件。这两种用法在工作中早就用过了,这里不再赘述。防止创建文件如果一个文件名直接跟touch,如果该文件不存在,将创建一个对应名称的文件。那么如果我们只想改变文件的时间戳,如果文件不存在,不创建文件怎么办呢?这里需要加上-c选项。[alvin@VM_0_16_centostest]$touch-calvin[alvin@VM_0_16_centostest]$llalvinls:cannotaccessalvin:Nosuchfileordirectoryonlychangesthefileaccesstime我们知道如果不带任何选项执行touch命令,文件的访问时间和修改时间同时更改为当前系统时间。如下:[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)访问:2019-02-2014:20:21.154819675+0800修改:2019-02-2014:20:21.154819675+0800修改:2019-02-2014:20:21.191819649+0800Birth:-[alvin@VM_0_16_centostest]$touchfile#在这里使用touch命令[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)Access:2019-02-2021:51:24.848774158+0800#文件的访问时间/修改时间已经改为当前系统时间Modify:2019-02-2021:51:24.848774158+0800Change:2019-02-2021:51:24.848774158+0800Birth:-used这里stat命令,可以查看文件的更详细信息。如果我们只想改变文件的访问时间,只需加上-a选项即可,a是access一词的缩写。[alvin@VM_0_16_centostest]$touch-afile[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)Access:2019-02-2021:56:40.858021859+0800#只改变访问时间的时间戳修改:2019-02-2021:51:24.848774158+0800#修改时间不变Change:2019-02-2021:56:40.858021859+0800Birth:-Onlychangemodificationtime如果我们只想改变修改时间文件,只需要加上-m选项,m是modify的缩写。[alvin@VM_0_16_centostest]$touch-mfile[alvin@VM_0_16_centostest]$statfile文件:'file'大小:10块:8IO块:4096常规文件设备:fd01h/64769dInode:371115链接:1访问:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)访问:2019-02-2021:56:40.858021859+0800修改:2019-02-2022:07:39.138701655+0800Change:2019-02-2022:07:39.138701655+0800Birth:-Changetoacustomtimestamp无论是不带选项还是带-a或-m选项,都会把文件对应的时间改为当前系统时间戳。那么如果我们想更改为自定义时间戳怎么办?如何处理?不然怎么能算是穿越呢?我们有两种方法可以更改为自定义时间戳。1.添加-t选项。例如,我们将文件的时间戳更改为未来时间:[alvin@VM_0_16_centostest]$touch-t202001012020.20file[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)Access:2020-01-0120:20:20.000000000+0800修改:2020-01-0120:20:20.000000000+0800修改:2019-02-2022:13:01.526965566+0800出生:-这里是-t后面的时间戳格式为:[[CC]YY]MMDDhhmm[.SS]具体是这样的:CC——年份的前两位YY——年份的后两位MM——月[01-12]DD——日期[01-31]hh——小时[00-23]mm-minute[00-59]SS-second[00-61]2.使用-d选项我们将使用一种新方法将文件的时间戳更改为过去的时间2008年奥运会开幕式):[alvin@VM_0_16_centostest]$touch-d'08-August-2008'file[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)访问:2008-08-0800:00:00.000000000+0800修改:2008-08-0800:00:00.000000000+0800更改:2019-02-2022:25:47.808490725+080,0出生时间formatis:day-month-year不过这里的时间可以很灵活,比如也支持模糊时间比如昨天,1年前等:[alvin@VM_0_16_centostest]$touch-d'yesterday08-August-2008'file[alvin@VM_0_16_centostest]$statfileFile:'file'Size:10Blocks:8IOBlock:4096regularfileDevice:fd01h/64769dInode:371115Links:1Access:(0664/-rw-rw-r--)Uid:(1000/alvin)Gid:(1000/alvin)Access:2008-08-0700:00:00.000000000+0800Modify:2008-08-0700:00:00.000000000+0800Change:2019-02-2022:31:57.564725604+0800Birth:-除了改变时间,还可以改变时区。要更改时区,只需在相应的时区后面加上-d。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以和我一起把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站
