touch命令详解

修改文件时间或建立新文件命令:touch

首先,在Linux中,touch命令有两个作用:一个是修改文件的时间,一个是建立新的空文件。

  • 修改文件的时间
	要修改文件的时间,首先要知道一个文件都有哪些时间,有用过 ls -l 命令的同学都应该知道,ls -l 命令列出来的每个文件在linux底下都会记录许多的时间参数,其实总共有3个时间参数,下面我们来看看着3个时间参数都是什么,各有什么意义?
 
  
    1. modification time(mtime): 当该文件的内容(只文件的内容数据,而不是文件的属性或权限)改变时就会更新这个时间!
    2. status time(ctime): 当该文件的权限或者是属性被修改了,也即是该文件的状态,就会更新这个状态时间。
    3. access time(atime): 当文件的内容被读取的时候,就会更新这个读取时间。比如我们用cat命令读取了/usr/bin/passwd文件的内容了,就会更新该文件的atime了

举个例子来说明下这三个时间怎么看的吧,比如我们来看一看/etc/ininttab文件的这三个时间分别都是什么吧~!

大家可以看到以上图片的运行结果:

ls 命令不带参数,也就是默认情况下,显示的是文件的mtime,也就是这个文件的内容上一次修改的时间。由于本人的这个系统是在2015年4月14日安装的,因此这个文件的状态被更改,所以该文件的ctime时间为安装系统的那个时间,而由于刚才我访问了inittab那个文件,所以,它的atime现在是当前的时间。

好了,上面了解了文件的时间了,下面就来介绍怎么修改时间吧,介绍修改时间之前,我们先了解一下touch命令的参数:

touch [-acdmt] 文件

选项与参数: -a :仅修改 access time; 

-c :仅修改文件的时间,若该文件不存在则不建立新文件; 

-d :后面可以接想要修改的日期而不用目前的日期,也可以使用 --date="日期或时间" 

-m :仅修改mtime ; 

-t :后面可以接想要修改的时间而不用目前时间,格式为[YYMMDDhhmm]

例一、我们先用touch命令建立一个空文件,并观察它的时间:

我们可以看到,利用touch命令建立一个空文件很简单,并且大家可以看到我们用touch命令建立的这个文件的大小是0,默认情况下用touch后面如果紧跟着一个文件,则该文件的三个时间都会更新为当前时间,如果该文件不存在,则会主动创建一个新的空文件。例如上面的例子。

例二、将/tmp/test1复制为/tmp/test2,假设复制后的属性都全部相同,检查其日期:

大家可以看到,上面那三个test2文件的三个时间分别为mtime,atime,ctime

至于执行的记过当中,大家可以发现数据的内容与属性是被复制过来的,因此文件的内容时间(mtime)与源文档一致。但是由于这个文件是刚刚被创建的,因此状态时间(ctime)和读取时间(atime)便呈现的是当前的时间。那如果现在要变更这个文件的时间的话,可以这么做:

例三、将test2的日期改为2013/09/09 12:30

注意看看,日期在 atime mtime 都改变了,但是 ctime 则是记录当前的时间!

通过 touch 这个指令,我们可以轻易的修改文件的日期与时间,并且也可以建立一个空的文件! 丌过,要注意癿是,卲使我们复制一个档案时,复制所有癿属性,但也没有办法复制 ctime 这个属性癿。 ctime 可以记弽这个档案最近癿状忞 (status) 被改变癿时间。无讳如何,还是要告知大家, 我们平时看癿文件属性中,比较重要癿还是属亍那个 mtime 啊!我们关心癿常常是这个档案癿『内容』 是什么时候被更劢癿说~瞭乎? 无讳如何, touch 这个指令最常被使用的情冴是:  建立一个空的文件;  将某个文件日期修改为目前日期 (mtime 与 atime);

你可能感兴趣的:(Linux)