上QQ阅读APP看书,第一时间看更新
2.5 touch:创建空文件或改变文件的时间戳属性
2.5.1 命令详解
【命令星级】 ★★★★★
【功能说明】
touch命令有两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性。
【语法格式】
touch [option] [file] touch [选项] [文件]
特别说明:
1)touch命令以及后面的选项和文件,每个元素之间都至少要有一个空格。
2)注意区分touch和mkdir命令的功能,mkdir命令是创建空目录,而touch是创建空文件。
3)在Linux中,一切皆文件。虽然touch命令不能创建目录,但是可以修改目录的时间戳。
【选项说明】
表2-6针对该命令的参数选项进行了说明。
表2-6 touch命令的参数选项及说明
2.5.2 使用范例
基础范例
范例2-21:创建文件示例(文件事先不存在的情况)。
[root@oldboy ~]# mkdir /test #<==在根下新建一个test目录。 [root@oldboy ~]# cd /test/ #<==切换到/test目录。 [root@oldboy test]# touch oldboy.txt #<==创建空文件oldboy.txt。 [root@oldboy test]# ls #<==可以看到oldboy.txt文件创建成功。 oldboy.txt [root@oldboy test]# touch a.txt b.txt #<==同时创建多个文件,类似mkdir创建多个目录。 [root@oldboy test]# ls a.txt b.txt oldboy.txt [root@oldboy test]# touch stu{01..05} #<==可以利用大括号“{}”输出的字符序列批量创 建文件。 [root@oldboy test]# ls a.txt b.txt oldboy.txt stu01 stu02 stu03 stu04 stu05
范例2-22:更改文件的时间戳属性。
[root@oldboy ~]# stat oldboy.txt #<==stat命令可以查看文件的时间戳属性,具体用法见stat 命令讲解。 File: 'oldboy.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 272247 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-07-30 17:37:32.295105308 +0800 Modify: 2015-07-30 17:37:32.295105308 +0800 Change: 2015-07-30 17:37:32.295105308 +0800 #<==说明:文件的时间戳属性分为访问时间、修改时间、状态改变时间。 [root@oldboy ~]# touch -a oldboy.txt #<==-a参数更改最后访问的时间。 [root@oldboy ~]# stat oldboy.txt File: 'oldboy.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 272247 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-07-30 17:48:20.502156890 +0800 Modify: 2015-07-30 17:37:32.295105308 +0800 Change: 2015-07-30 17:48:20.502156890 +0800 [root@oldboy ~]# touch -m oldboy.txt #<==-m参数更改最后修改的时间。 [root@oldboy ~]# stat oldboy.txt File: 'oldboy.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 272247 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-07-30 17:48:20.502156890 +0800 Modify: 2015-07-30 17:48:45.006106223 +0800 Change: 2015-07-30 17:48:45.006106223 +0800
范例2-23:指定时间属性创建/修改文件。
可利用选项-d指定创建文件后的文件修改时间:
[root@oldboy ~]# ls -lh oldboy.txt -rw-r--r-- 1 root root 0 Oct 23 20:20 oldboy.txt #<==修改前的文件修改时间10 月23日。 [root@oldboy ~]# touch -d 20201001 oldboy.txt #<==指定创建文件后的文件修改 时间为2020年10月01日。 [root@oldboy ~]# ls -lh oldboy.txt -rw-r--r-- 1 root root 0 Oct 1 2020 oldboy.txt #<==文件修改时间已改为2020 年10月01日。
也可利用选项-r,修改oldboy.txt的时间属性,使其和a.txt的时间属性一致:
[root@oldboy ~]# ls -lh a.txt -rw-r--r-- 1 root root 0 Oct 23 20:20 a.txt #<==查看a.txt的修改时间。 [root@oldboy ~]# touch -r a.txt oldboy.txt #<==使用-r参数让oldboy.txt 的时间属性和a.txt一致。 [root@oldboy ~]# ls -lh oldboy.txt -rw-r--r-- 1 root root 0 Oct 23 20:20 oldboy.txt #<==oldboy.txt文件的修改 时间已和a.txt一致了。
还可以利用选项-t,将文件设置为201512312234.50时间格式:
[root@oldboy ~]# touch -t 201512312234.50 oldboy.txt [root@oldboy ~]# ls -lh --full-time oldboy.txt -rw-r--r-- 1 root root 0 2015-12-31 22:34:50.000000000 +0800 oldboy.txt #<==查看设置的属性。
上面案例涉及的ls命令的用法见后面ls相关章节。
2.5.3 扩展知识
这里扩展一点有关时间戳属性的知识。
GNU/Linux的文件有3种类型的时间戳:
Access: 2015-07-30 17:48:20.502156890 +0800 #<==最后访问文件的时间。 Modify: 2015-07-30 17:48:45.006106223 +0800 #<==最后修改文件的时间。 Change: 2015-07-30 17:48:45.006106223 +0800 #<==最后改变文件状态的时间。
对应ls命令,查看上述时间戳的选项如下:
mtime: 最后修改时间(ls -lt) #<==修改文件内容,文件的修改时间(modify time)会改变。 ctime: 状态改变时间(ls -lc) #<==修改文件内容、移动文件或改变文件属性等,文件的change时间会改变。 atime: 最后访问时间(ls -lu) #<==查看文件内容时,文件的访问时间(access time)会改变。