Linux Touch命令
touch命令使我们可以更新现有文件和目录上的时间戳,以及创建新的空文件。
在本教程中,我们将通过实际示例和最常见的命令选项的详细说明,向我们展示如何使用touch命令。
Linux文件时间戳
在探讨如何使用touch命令之前,让我们先回顾一下Linux中的文件时间戳。
Linux中的文件具有三个时间戳:
- atime(访问时间)-上一次通过某些命令或者应用程序(例如cat,vim或者grep)访问/打开文件的时间。
- mtime(修改时间)-上次修改文件内容的时间。
- ctime(更改时间)-文件的属性或者内容上次更改的时间。该属性包括文件许可权,文件所有权或者文件位置。
要显示文件状态(包括时间戳),请使用“ stat”命令。
stat file_name
创建新文件需要在父目录上具有写权限。
否则,我们将收到一个权限被拒绝的错误。
如何使用touch命令
如果不使用任何选项,则使用最简单的形式,如果指定为参数的文件名不存在,touch会创建一个新文件。
如果文件已经存在,touch会将文件的上次访问和修改时间更改为当前时间。
例如,如果文件“ file1”不存在,则以下命令将创建该文件,否则它将更改其时间戳:
touch file1
要一次创建或者修改多个文件,请指定文件名作为参数:
touch file1 file2 file3
如果我们不希望touch命令创建新文件,请使用'-c'('--no-create')选项。
例如,如果文件“ file1”存在,则以下命令将更改文件时间戳,否则将不执行任何操作:
touch -c file1
仅更改访问或者修改时间
默认情况下,如果未使用任何选项,touch会将文件的上次访问和修改时间更新为当前时间。
通过使用“ -a”和“ -m”选项,我们只能更改这些时间戳之一。
仅更改访问时间
使用“ -a”选项仅更改文件的访问时间:
touch -a file1
仅更改修改时间
使用“ -m”选项更改文件的修改时间:
touch -m file1
更改修改时间时,更改时间也会被更新。
设置特定的时间戳
touch命令还允许我们使用当前时间以外的特定时间更新或者创建文件。
使用'-d'('--date =')选项指定日期字符串,并使用它代替当前时间。
例如,要将“ file1”的上次访问和修改时间都更改为2016年6月1日11:02,我们可以使用以下命令:
touch -d '1 June 2016 11:02' file1
日期字符串需要用单引号引起来。
我们还可以为touch命令提供部分日期时间字符串。
仅提供日期,会自动将年份更改为当前年份:
touch -d '12 June' file1
使用'-t'选项指定时间戳,并使用它代替当前时间。
timestamp参数必须采用以下格式:
use [[CC]YY]MMDDhhmm[.ss]
例如,以下命令会将'file1'的最后访问和修改时间设置为当年的6月1日11:02.
touch -t 06011102 file1
使用另一个文件的时间戳
'-r'('--reference =')选项允许我们指定参考文件并使用其时间戳而不是当前时间。
例如,以下命令将告诉touch将“ file1”的时间用于“ file2”:
touch -r file1 file2
更改符号链接时间戳
默认情况下,如果在符号链接上使用touch命令,它将更改其引用文件的时间戳。
使用'-h'('--no-dereference')修改符号链接的时间戳。
例如,要更改符号链接“ symlink1”的时间戳,可以使用:
touch -h symlink1