Linux 中的触摸命令:9 个有用的示例
通过这些有用且实用的示例,学习在 Linux 中使用 touch 命令。
Linux 中的触摸命令
Linux 中的 touch 命令用于更改文件时间戳,但是 touch 命令最常见的用法之一包括创建新的空文件。
使用touch命令,您可以更改Linux中文件和文件夹的访问权限、修改和更改时间。您可以更新时间戳或将其修改为过去的日期。
touch 命令的语法非常简单:
touch [option] file
Linux 中的文件时间戳是什么?
我在之前的文章中详细介绍了 Linux 中的时间戳。我建议阅读它以获得更好、更清晰的理解。为了快速回忆,我将在这里列出时间戳:
访问时间 – 上次访问文件的时间
修改时间 – 上次修改文件的时间
更改时间 – 上次更改文件元数据(文件权限、所有权等)的时间
您可以通过以下方式使用 stat 命令查看文件的时间戳:
stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11940163 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 14:12:24.476483367 +0530
Modify: 2018-09-02 14:12:24.476483367 +0530
Change: 2018-09-02 14:12:24.476483367 +0530
Birth: -
Stat 命令甚至显示文件的索引节点号。
Linux中9个touch命令的实用例子
现在让我们通过一些简单但有用的示例来了解如何使用 touch 命令。
1. 创建一个空文件
正如我之前提到的,这是触摸命令最常见的用法。您所要做的就是使用 touch 和文件名。
touch <filename>
如果文件不存在,这将创建一个空文件。
touch empty_file
ls -l empty_file
-rw-r--r-- 1 abhishek abhishek 0 Sep 2 14:37 empty_file
但是如果文件已经存在怎么办?在这种情况下,它将把文件的所有三个时间戳更新为当前时间。
2.创建多个空文件
您也可以使用触摸来创建多个空文件。只需提供您要创建的文件的名称。
touch <file1> <file2> <file3>
如果你觉得写所有文件名很累,可以用这种方式自动生成文件名:
touch new-file-{1..10}.txt
这将创建 new-file-1.txt、new-file-2.txt 到 new-file-10.txt。
3. 如果文件不存在,请避免使用 touch 创建文件
Touch 将更新输入文件的时间戳(如果存在),如果输入文件不存在,则创建一个空文件。
但是,如果您不想触摸创建新的空文件怎么办?您希望它更新文件的时间戳,但如果文件不存在,则不应创建它。
在这种情况下,您可以使用带有 -c 选项的 touch 命令:
touch -c <filename>
记住:触摸将创建一个新的空文件(如果它不存在),否则它将修改现有文件的时间戳。您可以使用 -c 选项停止创建新文件。
4. 更改文件的所有时间戳
如果您对现有文件使用 touch,它将更改该文件的访问、修改和更改时间。
例如,我有一个名为 sherlock.txt 的文件,其时间戳如下:
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-25 09:44:56.092937000 +0530
Modify: 2018-08-09 09:41:05.028309000 +0530
Change: 2018-08-25 09:44:56.096937182 +0530
如果我在此命令上使用 touch,所有时间戳都将更改为当前时间戳。
touch sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
Birth: -
注意:您不应该担心 ctime(更改时间)。它是系统属性,不能/不应该由用户控制。您的重点应该放在访问和修改时间上。
5.仅更新文件的访问时间
您可能并不总是想更改文件的所有时间戳。如果您只想更改文件的访问时间,可以将 -a 选项与 touch 一起使用。
touch -a sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
Birth: -
6.仅更新文件的修改时间
如果您只想将文件的修改时间更新为当前时间戳,请使用 touch 命令的 -m 选项。
touch -m sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
Birth: -
7. 使用另一个文件的时间戳
您还可以通过 -r 选项按以下方式使用另一个文件的时间戳作为参考:
touch -r <source_file> <target_file>
这会将目标文件的访问和修改时间设置为与源文件的访问和修改时间相同。
8.设置具体访问和修改时间
您可能已经注意到,在几乎所有情况下(参考文件之一除外),时间戳都会更改为当前时间戳。
但你不受此约束。触摸允许您将访问和修改时间设置为过去或未来的日期。您可以使用 -t 选项和以下格式的时间戳:
CC – 年份的前两位数字
YY – 年份的后两位数字
MM – 一年中的月份 (01-12)
DD – 一个月中的某一天 (01-31)
hh – 一天中的某个时刻 (00-23)
mm – 一小时中的分钟 (00-59)
ss – 秒 (00-59)
在上述情况下,CC 是可选的。事实上,CCYY 也是可选的,在这种情况下它将采用当前年份。同样,秒也是可选的,默认为 00。
让我向您展示一个示例,将时间戳更改为 12021301,即当年的第 12 个月、第 2 天、第 13 小时和第 1 分钟:
touch -t 12021301 agatha.txt
stat agatha.txt
File: agatha.txt
Size: 457 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928279 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
Birth: -
如果您尝试输入无效日期,您会看到错误。您还会注意到更改时间使用当前时间戳,与访问和修改不同。这是因为它是系统属性。
9. 更改符号链接的时间戳
您还可以使用带有符号链接的 touch 命令。您只需在处理符号链接时使用 -h 选项即可。其余部分与常规文件相同。
touch -h <symbolic_link>
我希望 Linux 中的这些触摸命令示例对您有所帮助。如果您有任何问题或建议,请告诉我。