本文,我们来介绍一下Linux中的ACM时间,不过呢此ACM非彼acm,让我们一起来看看吧
我们在写Makefile的时候,经常会遇到
make: 'xxx' is up to date.
的问题,很多同学都不知道是什么原因,本文我们就从这一点说起
.exe
新于.c
源文件,那表明源文件没有修改过,此时不需要再去重新编译.exe
老于.c
源文件,那表明源文件被修改过了,此时是需要再去重新编译的.exe
和.c
的最近修改时间是不会相同的,因为可执行程序一定是在对源文件编译之后产生的好,讲了这么多,究竟这个时间在哪里呢?我们马上来瞧瞧
stat
指令,现在我查看了一下这个可执行文件的所有属性,就看到了相应的ACM时间上面的话谈到了系统会根据文件的最近修改时间来进行判断,那这三个时间的更新机制又是怎样的呢?
cat
去查看一下这个文件的内容时,或者使用vim
打开它 or 修改它的时候,都算是在访问它,所以这个【访问时间】几乎你的任何操作都会去进行一个修改。后面的Modify和Change时间我们一起说,一个是修改时间,一个是改变时间那有同学问,这俩不是一个意思吗?你这是在玩文字游戏啊
之前我有问过同学们一个问题:在Windows下新创建一个空的文件或者记事本,那它要不要在磁盘中占据空间呢?
Modify
时间,例如使用vim将其打开然后对内容做一些修改Change
时间,我们在Linux权限一文中也有讲到过文件chmod
、chown
、chgrp
这些指令就可以去修改文件对应的【拥有者】、【所属组】、【other】的权限,即修改的文件的相关属性stat
指令便可以发现有了变化Change
时间我们再来试着修改一下Modify
时间,例如打开vim修改一下里面的内容,再去执行[stat]
指令就可以发现Change
时间和Modify
时间一同发生了修改,一般二者是会有一个关联,后者会因为前者的修改而修改,即文件的内容改了,文件的属性也会改;把文件内容删了一部分,文件大小size就会变小Change
时间的修改不会导致Modify
时间发生变化,这个我们上面也观察到过了对于这个ACM时间,除了通过我们去修改文件的相关内容和属性引发修改之外,还可以手动去更新这个时间
那就是使用我们所学习过的touch
指令
touch test.c
,因为这个文件文身就是存在的,所以呢就会去更新一下它的ACM时间,那若是这个文件本身不存在的话,就会将其创建出来touch -m test.c
touch -a test.c
好,以上就是本文所要介绍的Linux下的ACM时间,你也打acm吗