# touch 命令

touch命令用于修改文件或者目录的时间属性，包括存取时间和更改时间。若文件不存在，系统会建立一个新的文件。

&#x20;ls -l 可以显示档案的时间记录。

#### 语法

```
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]


    参数说明：
    a 改变档案的读取时间记录。
    m 改变档案的修改时间记录。
    c 假如目的档案不存在，不会建立新的档案。与 --no-create 的效果一样。
    f 不使用，是为了与其他 unix 系统的相容性而保留。
    r 使用参考档的时间记录，与 --file 的效果一样。
    d 设定时间与日期，可以使用各种不同的格式。
    t 设定档案的时间记录，格式与 date 指令相同。
    --no-create 不会建立新档案。
    --help 列出指令格式。
    --version 列出版本讯息。
```

#### 实例

使用指令"touch"修改文件"testfile"的时间属性为当前系统时间，输入如下命令：

```
$ touch testfile                #修改文件的时间属性 
```

首先，使用ls命令查看testfile文件的属性，如下所示：

```
$ ls -l testfile                #查看文件的时间属性  
#原来文件的修改时间为16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile  
```

执行指令"touch"修改文件属性以后，并再次查看该文件的时间属性，如下所示：

```
$ touch testfile                #修改文件时间属性为当前系统时间  
$ ls -l testfile                #查看文件的时间属性  
#修改后文件的时间属性为当前系统时间  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile  
```

使用指令"touch"时，如果指定的文件不存在，则将创建一个新的空白文件。例如，在当前目录下，使用该指令创建一个空白文件"file"，输入如下命令：

```
$ touch file            #创建一个名为“file”的新的空白文件 
```

touch命令实际上并不是用于创建文件，而是用于修改时间戳的，只是目标文件不存在时，会自动创建一个空文件，如果目标文件已存在，那么只修改目标文件时间戳。

![](https://2235202877-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdZjBNUdEHDSCeFdVYp%2F-MdzKWDd0Cq3d34DuDTL%2F-Mdzb6lpyQW2GFJPplxX%2Fimage.png?alt=media\&token=58011a2b-d045-4fbc-9fae-2df6fd8caafe)

补充说明：文件的3种时间为访问时间、修改时间、改变时间。

访问时间：atime，即查看内容的时间，如# cat a.txt，查看一下文件，即可更新文件的访问时间，该时间记录的是文件最后被访问的时间。

修改时间：mtime，即修改了文件内容的时间，如# vim a.txt，修改文件内容，即可更新文件修改时间，该时间记录的是文件最后被修改的时间，mtime一旦变化，ctime也会随之变化。

改变时间：ctime，即文件属性发生改变的时间，如权限、文件容量大小等一些并非文件内容的数据，而是与文件有关的元数据发生改变的时间。

注意：如果mtime发生改变，那么ctime也会随之而变，因为文件的元数据包含了文件的容量大小。mtime是根据文件内容发生改变而改变的，内容改变则说明容量改变，所以ctime也会改变。即使只是atime改变，ctime也会随之改变。
