1 将文件时间修改为当前时间
touch
touch命令并不是你经常使用的命令,但是继续学习本书时需要用到这个命令,所以现在介绍一下这个命令。有趣的是,虽然touch存在的主要目的是更新文件访问和修改时间,但这并不是你现在要使用这个命令的主要原因。相反,这里要用的是它的辅助功能,不过,这个功能确实比它的主要功能还要有用!
说明 只有获得修改文件的权限,才可以对文件使用touch命令,修改它的时间。否则,touch命令会运行失败。
为了同时更新文件(或文件夹)的访问和修改时间,只需要运行基本的touch命令。
$ ls -l ~/
drwxr-xr-x 848 2005-10-19 11:36 src
drwxr-xr-x 1664 2005-10-18 12:07 todo
drwxr-xr-x 632 2005-10-18 12:25 videos
-rw-r--r-- 239 2005-09-10 23:12 wireless.log
$ touch wireless.log
$ ls -l ~/
drwxr-xr-x 848 2005-10-19 11:36 src
drwxr-xr-x 1664 2005-10-18 12:07 todo
drwxr-xr-x 632 2005-10-18 12:25 videos
-rw-r--r-- 239 2005-10-19 14:00 wireless.log
由于使用了touch命令,wireless.log文件的修改时间和访问时间都修改了,不过ls–l只能显示修改时间。这个文件有一个多月没用过了,但是touch命令现在对它进行了更新,让它看起来好像刚刚使用过(touched)似的。
如果你喜欢,也可以更具体一点儿。如果你只想更新访问时间,就可以使用-a选项(或--time=access)。如果只想更新修改时间,则使用-m(或--time=modify)。
2 将文件时间修改为想要的任意时间
touch -t
请记住,能修改的时间并不只限于当前的日期和时间。相反,只要使用这个选项和一定的模式,就可以修改任何日期和时间:-t [[CC]YY]MMDDhhmm[.ss]。表2-4解释了这个命令中使用的时间模式。
表2-4 用于修改文件时间的时间模式 字 符 |
含 义 |
CC |
4位年份数字中的前2位字符 |
YY |
2位数字的年份: |
MM |
月份(01~12) |
DD |
日期(01~31) |
hh |
小时(01~23) |
mm |
分钟(00~59) |
ss |
秒(00~59) |
如果你想使用的数字不是普通的两位数,那么在前面补上零是非常重要的,否则时间模式将不起作用。下面是一些带有-t选项的touch命令的例子,通过这些示例来帮助你理解这个命令。
$ ls -l
-rw-r--r-- 239 2005-10-19 14:00 wireless.log
$ touch -t 197002160701 wireless.log
$ ls -l
-rw-r--r-- 239 1970-02-16 07:01 wireless.log
$ touch -t 9212310000 wireless.log
$ls -l
-rw-r--r-- 239 1992-12-31 00:00 wireless.log
$ touch -t 3405170234 wireless.log
$ ls -l
-rw-r--r-- 239 2034-05-17 02:34 wireless.log
$ touch -t 10191703 wireless.log
$ls -l
-rw-r--r-- 239 2005-10-19 17:03 wireless.log
首先,在前面已经将wireless.log的当前日期和时间建立为2005-10-19 14:00。然后,将时间修改为35年前的某个时间:1970-02- 16 07:01。接着再向前一点,跨越20多年到:1992-12-31 00:00。最后飞跃到未来的时间:2034-05-17 02:34(那时Linux计算机将统治世界,人类生活在和平当中,开源事业非常兴旺),然后结束一切回到我们的当前日期和时间。
从这个例子的演示中,你应该能得出一些经验。通过指定完整的4位数字的年份(1970)、月(02)、日期(16)、小时(07)、以及分钟(01),能回到30多年前的时间。不需要指定秒。之后的操作就再也没有指定4位数字的年份。9212310000中的92在69~99的范围内,所以touch命令假设你需要用“19”作为年份的前两位数字,而3405170234中的34介于00~68,所以touch命令会用“20”作为年份的基础位(前两位)。最后一次使用touch命令时,根本就没有指定年份,只设定了月份(10)、日期(19)、以及小时(17),这时touch命令会明白你想指定的是当前年份(2009)。理解了如何操作touch命令,就可以在需要的时候修改文件的时间戳了。
3 创建新的空文件
touch
这一用法不是很多人使用touch命令的主要原因。如果你将touch命令用于不存在的文件时,会产生一个有趣的效果:它将使用你指定的文件名来生成一个空文件。
$ ls -l ~/
drwxr-xr-x 848 2005-10-19 11:36 src
drwxr-xr-x 632 2005-10-18 12:25 videos
$ touch test.txt
$ ls -l ~/
drwxr-xr-x 848 2005-10-19 11:36 src
-rw-r--r-- 0 2005-10-19 23:41 test.txt
drwxr-xr-x 632 2005-10-18 12:25 videos
为什么要这样用touch命令呢?你可能想现在先创建一个文件,以后再填充内容。或者你在尝试新发现的命令,需要创建几个文件来执行测试。这些都是使用touch命令的很好理由,当你开始更深入地学习shell时,会发现更多这样的情况。