为什么我们需要使用 touch 命令

为什么我们需要使用 touch 命令

 

既然 touch 命令描述的是改变时间戳,那么我们可能会想为什么我们需要去改变时间戳呢?这个问题会引发我们的深思。然而,我想有个理由可以解释为什么我们需要使用它。如果你参加了一个全球范围的开源项目,那么时间戳可能变得很重要。编译源代码文件可能需要同一地区的时间戳。如果未统一,程序可能会编译失败。

其实Linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳。

 

make 命令

简单来说,make 命令像文件打包操作。这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也包含与目标相对应的操作。

当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。

一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入的)。

现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间。

 

那么它是如何判断的呢?

 依赖关系中常有多对多的情况。如果你修改了某一条依赖关系上的某个文件,当你执行make 命令肯定不希望为此将所有文件都跑一遍,而系统也不会知道你改了哪个文件。

 那么执行make 命令时,系统就会根据时间戳来判断,哪些文件需要重新跑。而touch命令修改时间的想法也同样如此。

 例如现在,文件B由文件A生成,文件C由文件B生成。

此时使用touch命令对文件A的时间进行修改;此时当你执行make命令时,它发现文件A的时间晚于文件B,那么此依赖关系上的文件就会以此类推得重新跑一遍。

 

 最后,更正下关于touch命令修改时间上的一些概念。
    1.直接touch filename 时,系统自动将文件修改时间更新为当前时间。
    2.若使用touch修改文件修改时间为指定时间时,
            若制定的时间是当月日期,则显示形式不变;
            若制定的时间非当月日期,则显示年份月日,不显示时分。
    修改文件后,文件修改时间立即变为当前时间,即为当月,自然显示格式为月日时分。

 

PS:

当然,正因为touch命令可以修改文件存取时间和修改时间,如果你的老板发现某些文件修改时间过早,

认为你今天没有好好上班时,你就可以……

 

  Chocoo           

2016.2.24         

------------------------------------------------------------------------------------------------------------------------------------------------

Linux新人,欢迎各种指点。

感谢锋哥指点迷津!

posted on 2016-02-24 17:55  Chocoo  阅读(1133)  评论(0编辑  收藏  举报

导航