00. 目录
01. 命令概述
touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。
touch命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在,将会创建新的空文件,除非指定了”-c”或”-h”选项。
注意:在修改文件的时间属性的时候,用户必须是文件的属主,或拥有写文件的访问权限。
02. 命令格式
用法:touch [选项]... 文件...
03. 常用选项
不存在的文件将会被创建为空文件,除非使用-c 或-h 选项。
如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间。
长选项必须使用的参数对于短选项时也是必需使用的。
-a 只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串 使用指定字符串表示时间替代当前时间
-f (忽略)
-h, --no-dereference 会影响符号链接本身,替代符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
-m 只更改修改时间
-r, --reference=文件 使用指定文件的时间属性替代当前时间
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间
--time=WORD 使用WORD 指定的时间:access、atime、use 都等于-a
选项的效果,而modify、mtime 等于-m 选项的效果
--help 显示此帮助信息并退出
--version 显示版本信息并退出
请注意,-d 和-t 选项可接受不同的时间/日期格式。
04. 参考示例
4.1 创建新文件
[deng@localhost test]$ touch file
[deng@localhost test]$ ls -l file
-rw-rw-r-- 1 deng deng 0 7月 13 23:54 file
[deng@localhost test]$
4.2 创建多个文件,文件之间以空格分隔
[deng@localhost test]$ touch 20190713.log 20190712.log
[deng@localhost test]$ ls
20190712.log 20190713.log b c d dir dir1 file systemd
[deng@localhost test]$
4.3 更改文件的最近访问和最近更改时间
//查看文件的属性信息
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:54:09.042723645 +0800
最近更改:2019-07-13 23:54:09.042723645 +0800
最近改动:2019-07-13 23:54:09.042723645 +0800
创建时间:-
//修改对应的时间戳
[deng@localhost test]$ touch file
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:56:10.302949855 +0800
最近更改:2019-07-13 23:56:10.302949855 +0800
最近改动:2019-07-13 23:56:10.302949855 +0800
创建时间:-
[deng@localhost test]$
4.4 只更改最近更改时间
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:56:10.302949855 +0800
最近更改:2019-07-13 23:56:10.302949855 +0800
最近改动:2019-07-13 23:56:10.302949855 +0800
创建时间:-
[deng@localhost test]$ touch -a file
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:57:25.086046773 +0800
最近更改:2019-07-13 23:56:10.302949855 +0800
最近改动:2019-07-13 23:57:25.086046773 +0800
创建时间:-
[deng@localhost test]$
4.5 只更改修改时间
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:57:25.086046773 +0800
最近更改:2019-07-13 23:56:10.302949855 +0800
最近改动:2019-07-13 23:57:25.086046773 +0800
创建时间:-
[deng@localhost test]$ touch -m file
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:57:25.086046773 +0800
最近更改:2019-07-13 23:58:41.835146234 +0800
最近改动:2019-07-13 23:58:41.835146234 +0800
创建时间:-
[deng@localhost test]$
4.6 更改文件时间戳
[deng@localhost test]$ touch -t 201907132359.30 file
[deng@localhost test]$ stat file
文件:"file"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:204100131 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ deng) Gid:( 1000/ deng)
最近访问:2019-07-13 23:59:30.000000000 +0800
最近更改:2019-07-13 23:59:30.000000000 +0800
最近改动:2019-07-13 23:59:44.027226834 +0800
创建时间:-
[deng@localhost test]$
4.7 使用指定文件的时间属性替代当前时间
[deng@localhost test]$ ls -l b c
-rw-rw-r-- 1 deng deng 0 7月 13 23:28 b
-rw-rw-r-- 1 deng deng 0 7月 13 23:28 c
[deng@localhost test]$ ls -l b file
-rw-rw-r-- 1 deng deng 0 7月 13 23:28 b
-rw-rw-r-- 1 deng deng 0 7月 13 23:59 file
//将文件file的时间戳改为与b文件的时间戳相同
[deng@localhost test]$ touch -r b file
[deng@localhost test]$ ls -l b file
-rw-rw-r-- 1 deng deng 0 7月 13 23:28 b
-rw-rw-r-- 1 deng deng 0 7月 13 23:28 file
[deng@localhost test]$
05. 扩展
命令 stat 用于查看文件的相关信息,包含以下三个时间。
最近访问:表示文件访问时间,当文件被读取时会更新这个时间,但是使用 more、less、tail 和 ls 等命令查看时,访问时间不会变。
最近更改:表示文件的修改时间,这指的是文件内容的修改
最近改动:表示文件属性改变时间,比如通过 chmod 命令更改文件属性时,会更新最近改动时间。
touch 命令以 [[CC]YY]MMDDhhmm[.SS]
格式指定新时间戳的日期和时间,相关变量详细信息如下所示:
CC 指定年份的前两位数字(即:世纪数)
YY 指定年份的后两位数字(即:某世纪中的年数)
MM 指定一年的哪一个月,1 ~ 12
DD 指定一年的哪一个天,1 ~ 31
hh 指定一天中的哪一小时,0 ~ 23
mm 指定一小时中的哪一分钟,0 ~ 59
SS 指定一分钟中的哪一秒钟,0 ~ 59