系列文章目录
命令1: linux基本功系列-ls命令实战
命令2: linux基本功系列之echo命令实战
命令3:linux基本功之历史记录history命令实战
命令4: linux基本功之date命令实战
命令5 linux基本功之touch命令实战
@TOC
前言
平时创建文件,我们都用touch命令,算的上最常用命令之一了吧,经常有人说,企业常用150个命令,现在学习到第5个,距离150个还有145的距离。冲!
:smile:
一、touch 命令的参数
1.1 touch命令的用户
touch [选项]... 文件名... []表示可选参数
1.2 常用参数
-a 只改变访问时间
-c,--no-create
不创建任何文件
-d,--data=STRING
解析STRING,并将该时间作为touch要更新的时间,而不是当前时间,STRING格式可以参考date
命令
-h,--no-dereference 不援引
只影响符号链接本身,而不修改链接指向的链接源文件的时间戳(前提是系统支持修改链接文件的时
间戳
-m 只改变文件的修改时间
-r,--referenc=FILE
使用这个文件的时间,而不是当前时间,即将其他文件的时间戳改得和这个文件相同
--time=string
修改特定的时间:string为access、atime或use时,等同于-a,为modify或mtime时,等同于-m
二、touch使用案例
2.1 创建一个空文件
[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]#
2.3 改变或者更新文件和目录的访问时间
如果不加-a 参数,三个时间都会变化
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的修改
只要进行修改,三个时间都会变化
其他问题补充
- 如果文件已经存在,当我们创建一个同名的文件的时候,会不会覆盖原来的内容?
经过测试,我们发现,文件内容在,意味着创建同名文件不会覆盖原来的文件,但是会修改访问时间
- 使用echo追加内容,访问时间会变化吗?
实验结果: 如果使用echo命令追加内容,访问时间不会有变化,但是ctime和mtime都会响应改变。
总结
touch命令我们就学完了,今天是150个基础命令的第5个,继续加油。