touch 指令可以建立空白的新档案, 改变现有档案及目录的戳记, 以下是 touch 指令的用法。
linux-touch-command
在介绍 touch 指令的用法前, 首先讲一下 Linux 的档案的 3 种时间戳记:
atime (access time) -> 档案最后被开启、读取或存取的时间。
mtime (modify time) -> 档案最后被修改的时间。
ctime (change time) -> 档案的属性最后被修改的时间, 包括权限及 owner.
要检视档案详细资讯, 可以用 stat 指令, 它会显示包括时间戳记的档案详细资讯:
|
1 2 3 4 5 6 7 8 |
$ stat test.sh File: ‘test.sh’ Size: 165 Blocks: 8 IO Block: 4096 regular file Device: 800h/2048d Inode: 141109 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/ samtang) Gid: ( 1000/ samtang) Access: 2018-05-06 20:05:44.561724250 +0800 Modify: 2018-05-06 20:03:47.553022372 +0800 Change: 2018-05-06 20:05:10.029757763 +0800 |
现在开始介绍 touch 指令, touch 指令后面只有档案名称, 而没有任何参数, 当档案不存在时, 会自动建立空白的新档, 这也是在 Linux 常用建立空间新档案的方法, 例如:
如果想建立多个空白新档案, 只要加上多个档案名即可:
如果不想 touch 指令建立新档案, 只要加上 -c (–no-create) 参数:
用 touch 修改档案时间戳记, 默认没有加入参数的情况下, 会将 atime 及 mtime 同时修改成现在的时间。如果需要指定要修改的时间戳记, 便要参数设定。
使用 -a 参数设定档案的 atime (access time) 成现在的时间:
使用 -m 参数设定档案的 mtime (modify time) 成现在的时间:
上面的例子是是档案的 atime 及 mtime, 修改成现在的时间, 如果要修改成指定的时间, 便要加上 -d (–date=) 参数, 例如修改档案的 atime:
Copy
上面指令会将档案 file1 的 atime 改成 2018 年 6 月 6 日 20:30 分, 而时间的部份需要用引号包著。
但如果放在 Shell Script 内执行, 上面的日期格式反而很麻烦, 改用 -t 参数, 并以下面格式设定:
use [[CC]YY]MMDDhhmm[.ss]
跟上面的例子一样, 改用数字代表时间:
除了自订时间外, 也可以将其他档案的时间戳记复制, 例如要将 file1 的时间戳记复制到 file2, 用以下指令:
除了档案外, touch 也可以对目录及 symlink 生效, 如果目标档案是 symlink, 默认的情况 touch 会修改 symlink 指向的档案的时间戳记, 如果要修改 symlink 的时间戳记, 需要加上 -h 参数: