1、touch 命令的参数
1.1 touch命令的用户
touch [选项]... 文件名... []表示可选参数
我们根据 --help来查看相关的参数:
[root@itlaoxin41 ~]# touch --help
用法:touch [选项]... 文件...
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h is supplied.
A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.
-a 只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串 使用指定字符串表示时间而非当前时间
-f (忽略)
-h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
-m 只更改修改时间
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
--help 显示此帮助信息并退出
--version 显示版本信息并退出
1.2 常用参数
日常工作中我们最常用的参数如下:
2、touch使用案例
2.1 创建一个空文件
创建空文件,我们可以直接在touch后面加上文件名
[root@mufenggrow ~]# touch mufeng.txt
2.2 批量创建空文件
[root@mufenggrow test]# touch mufeng{1..3}.txt
[root@mufenggrow test]# ls
mufeng1.txt mufeng2.txt mufeng3.txt
[root@mufenggrow test]#
也可以直接写文件名字:
[root@mufeng test]# touch a b c
[root@mufeng test]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 16 08:00 a
-rw-r--r--. 1 root root 0 2月 16 08:00 b
-rw-r--r--. 1 root root 0 2月 16 08:00 c
2.3 改变或者更新文件和目录的访问时间
这里使用-a参数,加上-a参数只改变文件的访问时间,不加的话,三个时间都会改变。
如果不加-a 参数,三个时间都会变化
图片中有个创建时间,但没有显示任何内容,因为在linux中一般是用访问时间,修改时间和改变时间来去判断创建时间。
3、拓展: 三种不同的时间
访问时间:atime 查看内容 比如 cat a.txt 会改变访问时间,也就是只要文件的内容被读取,访问时间就会更新
修改时间:mtime 修改内容 比如 vim a.txt会改变修改时间,也就是当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
改变时间:ctime 修改的是文件属性,比如权限 change time。 chmod +x a.sh,也就是当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变
这里有个创建时间- , linux中没有文件创建时间的概念, 只有访问时间,修改时间和状态改变时间。
如果文件创建后没有被修改过,那么文件修改时间文件的创建时间
如果文件状态没有改变过,那么文件的状态改变时间文件的创建时时间
3.1 单纯访问只修改atime
代码实例:
[root@mufenggrow test]# touch mufenggrow.txt
[root@mufenggrow test]# stat mufenggrow.txt |tail -4
最近访问:2023-01-12 08:26:23.700013272 +0800
最近更改:2023-01-12 08:26:23.700013272 +0800
最近改动:2023-01-12 08:26:23.700013272 +0800
创建时间:-
[root@mufenggrow test]# cat mufenggrow.txt
[root@mufenggrow test]# stat mufenggrow.txt
文件:"mufenggrow.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:16789113 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-01-12 08:27:35.870135257 +0800
最近更改:2023-01-12 08:26:23.700013272 +0800
最近改动:2023-01-12 08:26:23.700013272 +0800
创建时间:-
3.2 修改ctime
ctime是文件属性的修改,比如权限 change time。 chmod +x a.sh
改变权限,ctime发生了改变。
3.3 mtime的修改
只要进行修改,三个时间都会变化
通过时以上实验我们得出一个结论: touch 命令可以只修改文件的访问时间,也可以只修改文件的数据修改时间,但是不能只修改文件的状态修改时间。因为,不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变(更新为操作当前文件的真正时间)。
4、其他问题补充
4.1 如果文件已经存在,当我们创建一个同名的文件的时候,会不会覆盖原来的内容?
经过测试,我们发现,文件内容在,意味着创建同名文件不会覆盖原来的文件,但是会修改访问时间