本文,我们来介绍一下Linux中的ACM时间,不过呢此ACM非彼acm,让我们一起来看看吧
前言
我们在写Makefile的时候,经常会遇到
make: 'xxx' is up to date.
的问题,很多同学都不知道是什么原因,本文我们就从这一点说起
- 当我们在【make】的时候,通常会执行一些编译命令然后生成可执行文件,此时系统就会去比对源文件和可执行文件的最近修改时间
- 如果
.exe
新于.c
源文件,那表明源文件没有修改过,此时不需要再去重新编译 - 如果
.exe
老于.c
源文件,那表明源文件被修改过了,此时是需要再去重新编译的
- 如果
- 而且一般对于
.exe
和.c
的最近修改时间是不会相同的,因为可执行程序一定是在对源文件编译之后产生的
💬 好,讲了这么多,究竟这个时间在哪里呢?我们马上来瞧瞧
- 此处要使用到我们在Linux基本指令中所学习的
stat
指令,现在我查看了一下这个可执行文件的所有属性,就看到了相应的ACM时间
- 我们先来简单介绍一下这三个时间
- Access —— 最近访问时间
- Modify —— 文件内容最近修改的时间
- Change —— 文件属性最近修改的时间
ACM时间的更新机制
上面的话谈到了系统会根据文件的最近修改时间来进行判断,那这三个时间的更新机制又是怎样的呢?
- 首先是这个Access访问时间,当我们使用
cat
去查看一下这个文件的内容时,或者使用vim
打开它 or 修改它的时候,都算是在访问它,所以这个【访问时间】几乎你的任何操作都会去进行一个修改。后面的Modify和Change时间我们一起说,一个是修改时间,一个是改变时间
💬 那有同学问,这俩不是一个意思吗?你这是在玩文字游戏啊
- 那到不是,还记得我们曾经谈到过的Linux下一切皆文件,而文件又是由【文件内容】和【文件属性】,这个文件内容呢不单单指的是文件里面的内容,像文件名、文件的大小、修改日期等等,这些其实都是属于文件的内容
💬 之前我有问过同学们一个问题:在Windows下新创建一个空的文件或者记事本,那它要不要在磁盘中占据空间呢?
- 答案是:会的✔ 就算一个文件里面什么东西都没有,这个文件还拥有各种各样的属性呢,这些属性都是属于这个文件的数据,我们就要靠这写数据去判别这个文件是什么类型的、谁创建的、什么时候创建的
- 当我们对一个文件的【文件内容】做修改的时候变化的即为
Modify
时间,例如使用vim将其打开然后对内容做一些修改 - 当我们对一个文件的【文件属性】做修改的时候变化的即为
Change
时间,我们在Linux权限一文中也有讲到过文件
- 那使用像
chmod
、chown
、chgrp
这些指令就可以去修改文件对应的【拥有者】、【所属组】、【other】的权限,即修改的文件的相关属性
- 我们可以来修改一下试试看,再去执行
stat
指令便可以发现有了变化
- 看完如何修改
Change
时间我们再来试着修改一下Modify
时间,例如打开vim修改一下里面的内容,再去执行[stat]
指令就可以发现Change
时间和Modify
时间一同发生了修改,一般二者是会有一个关联,后者会因为前者的修改而修改,即文件的内容改了,文件的属性也会改;把文件内容删了一部分,文件大小size就会变小 - 但是
Change
时间的修改不会导致Modify
时间发生变化,这个我们上面也观察到过了
-
那我们就可以来总结一下三个ACM时间所对应的修改机制
- 【Access】:拿vim把文件打开,对里面的内容做修改
- 【Modify】:重定向、vim编写文件内容
- 【Change】:chmod、chown、chgrp所做的这些事情
touch命令手动更新ACM时间
对于这个ACM时间,除了通过我们去修改文件的相关内容和属性引发修改之外,还可以手动去更新这个时间
👉 那就是使用我们所学习过的touch
指令
- 可以看到,这里我使用
touch test.c
,因为这个文件文身就是存在的,所以呢就会去更新一下它的ACM时间,那若是这个文件本身不存在的话,就会将其创建出来
- 当然,你也可以实现像下面这两条指令去指定更改哪一个ACM时间,读者这边可以下去自己试一试,每个操作系统可能不太一样
touch -m test.c
touch -a test.c
好,以上就是本文所要介绍的Linux下的ACM时间,你也打acm吗👈文章来源:https://www.toymoban.com/news/detail-535184.html
文章来源地址https://www.toymoban.com/news/detail-535184.html
到了这里,关于原来Linux里也能打《ACM》?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!