touch 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

touch 命令安装:


-bash: touch: command not found

#Debian
apt-get install coreutils

#Ubuntu
apt-get install coreutils

#Arch Linux
pacman -S coreutils

#Kali Linux
apt-get install coreutils

#CentOS
yum install coreutils

#Fedora
dnf install coreutils

#Raspbian
apt-get install coreutils

#Docker
docker run cmd.cat/touch touch

touch 命令补充说明:


时间戳是与文件相关联的信息,用于标识文件历史记录中的重要时间。 一个文件可以有多个时间戳,其中一些可以通过手动设置来“伪造”。 在内部,操作系统将这些时间存储为自称为纪元的任意日期起经过的时间。 对于类似 Unix 的操作系统,纪元是 1970 年 1 月 1 日 星期四 00:00:00 协调世界时(UTC)

touch 命令语法:


touch [[-a] [-m] | [--time=timetype] [...]] [[-d datestring] | [-t timestamp]]
      [-c] [-f] [-h] [-r reffile] file [file ...]

touch 命令选项:


-a:或--time=atime或--time=access或--time=use  只更改存取时间;
-c:或--no-create  不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-h,--no-dereference:如果file是符号链接并且指定了此选项,则touch将修改符号链接的时间戳,而不是其引用的文件。 如果未指定此选项,则在进行修改之前触摸将取消引用符号链接。
                    此选项意味着-c:如果文件不存在,则不会创建任何内容。

-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify  只更该变动时间;
-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间>  使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。

touch 命令参数:


文件:指定要设置时间属性的文件列表。

在 Linux 中,有三个与文件关联的时间戳:


要设置 TZ 环境变量,请使用命令 tzselect
Timestamp 类型 描述 缩写
Access time 上次读取文件的时间 atime
Modification time 最后一次修改文件的内容 mtime
Change time 上次更改文件的元数据(称为“状态”)。 状态信息包括文件的权限及其时间戳。
每当文件发生任何事件时,其状态的至少一个元素都会更改,并且其ctime将设置为当前系统时间。
ctime

atimemtime 是文件状态元数据的一部分。 因此,当您更改文件的 atime(-a)mtime(-m)时,其 ctime 会自动设置为当前时间。

无法手动设置 ctime

如果用户拥有该文件,则可以将文件的 atimemtime 设置为将来或过去。

touch 命令实例


如果 file.txt 存在,请将其访问,修改和更改时间(atime,mtime和ctime)设置为当前系统时间。 如果file.txt不存在,则创建一个具有该名称的空文件:

$ touch file.txt

如果 file.txt 存在,请将其时间设置为当前系统时间。 如果它不存在,则什么都不做:

$ touch -c file.txt

改变文件 mysym 的次数。 如果它是软链接,请更改软链接的时间,而不是引用文件的时间:

$ touch -h mysym

更改b.txt的访问和修改时间以匹配a.txt的时间。 ctime将设置为当前系统时间。 如果file.txt不存在,则不会创建它:

$ touch -cr a.txt b.txt

更改 b.txt 的 atime 和 mtime 以匹配 a.txt 的 atime 和 mtime。 如果 a.txt 不存在,则不执行任何操作。 如果 b.txt 是符号链接,请设置符号链接的时间。 请勿触摸引用的文件:

$ touch -ahmcr a.txt b.txt

#等同于下面命令
$ touch --time=atime --no-dereference --time=mtime --no-create --reference=a.txt b.txt

将标准输出的 atime 和 mtime 设置为当前年份的 10 月 31 日午夜。 将标准输出重定向(>)到 boo.txt:

$ touch -d "October 31" - > boo.txt

#等同于下面命令
$ touch -t "10310000" - > boo.txt

#touch 不能覆盖现有文件的内容,但重定向会。 如果 boot.txt 不存在,则会创建它。 如果 boot.txt 存在,它将被覆盖。

将 file1.txt 的 atime 和 mtime 设置为当前年份的 2 月 1 日。 ctime 设置为当前系统时间。

$ touch -d "1 Feb" file1.txt

touch 命令扩展阅读:




touch 命令评论