linux基本命令touch实战

时间:2021-07-08 00:41:36

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 常用参数

日常工作中我们最常用的参数如下:

linux基本命令touch实战

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参数只改变文件的访问时间,不加的话,三个时间都会改变。

linux基本命令touch实战

如果不加-a 参数,三个时间都会变化

linux基本命令touch实战

图片中有个创建时间,但没有显示任何内容,因为在linux中一般是用访问时间,修改时间和改变时间来去判断创建时间。

3、拓展: 三种不同的时间

访问时间:atime 查看内容 比如 cat a.txt 会改变访问时间,也就是只要文件的内容被读取,访问时间就会更新

修改时间:mtime 修改内容 比如 vim a.txt会改变修改时间,也就是当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。

改变时间:ctime 修改的是文件属性,比如权限 change time。 chmod +x a.sh,也就是当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变

这里有个创建时间- , linux中没有文件创建时间的概念, 只有访问时间,修改时间和状态改变时间。

如果文件创建后没有被修改过,那么文件修改时间文件的创建时间

如果文件状态没有改变过,那么文件的状态改变时间文件的创建时时间

3.1 单纯访问只修改atime

linux基本命令touch实战

代码实例:

[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

linux基本命令touch实战

改变权限,ctime发生了改变。

3.3 mtime的修改

只要进行修改,三个时间都会变化

linux基本命令touch实战

通过时以上实验我们得出一个结论: touch 命令可以只修改文件的访问时间,也可以只修改文件的数据修改时间,但是不能只修改文件的状态修改时间。因为,不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变(更新为操作当前文件的真正时间)。

4、其他问题补充

4.1 如果文件已经存在,当我们创建一个同名的文件的时候,会不会覆盖原来的内容?

linux基本命令touch实战

经过测试,我们发现,文件内容在,意味着创建同名文件不会覆盖原来的文件,但是会修改访问时间

4.2.使用echo追加内容,访问时间会变化吗?

linux基本命令touch实战