11 ví dụ về lệnh touch cho Linux

Tác giả sysadmin, T.M.Hai 24, 2022, 02:06:39 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

11 ví dụ về lệnh touch cho Linux


Lệnh 'touch' được sử dụng để sửa đổi dấu thời gian của một tệp hiện có hoặc để tạo các tệp trống mới.

Touch đến từ gói GNU Coreutils và sẽ có sẵn theo mặc định trong các hệ điều hành dựa trên Unix/Linux.

Các ví dụ thực tế xuyên suốt hướng dẫn này sẽ chỉ cho bạn cách sử dụng lệnh touch.

Cá nhân tôi sử dụng lệnh touch để nhanh chóng tạo tệp mới thường xuyên hơn nhiều so với chỉnh sửa dấu thời gian của tệp.

1. Sử dụng Touch Command

Ở dạng đơn giản nhất, lệnh touch có thể được sử dụng trên một tệp được chỉ định để cập nhật quyền truy cập, sửa đổi và thay đổi dấu thời gian như chúng ta sẽ thấy bên dưới. Chúng tôi có thể thấy tệp ví dụ test.txt của chúng tôi hiện chưa được truy cập, sửa đổi hoặc thay đổi kể từ ngày 2 tháng 9. Sau khi chạy touch với nó, chúng ta có thể thấy rằng các dấu thời gian được cập nhật đến thời điểm hiện tại, ngày 7 tháng 9.

Mã nguồn [Chọn]
[root@centos7 ~]# stat test.txt
  File: 'test.txt'
  Size: 69              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 67191495    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-02 09:55:35.298208314 +1000
Modify: 2016-09-02 09:55:33.348208164 +1000
Change: 2016-09-02 09:55:33.348208164 +1000
 Birth: -

[root@centos7 ~]# touch test.txt

[root@centos7 ~]# stat test.txt
  File: 'test.txt'
  Size: 69              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 67191495    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-07 11:01:36.117150795 +1000
Modify: 2016-09-07 11:01:36.117150795 +1000
Change: 2016-09-07 11:01:36.117150795 +1000
 Birth: -

2. Thay đổi thời gian truy cập

Thay vì thay đổi tất cả các dấu thời gian, chúng ta có thể chỉ định tùy chọn -a để chỉ sửa đổi thời gian truy cập. Lưu ý rằng điều này cũng cập nhật thời gian thay đổi, vì tệp đã thay đổi.

Mã nguồn [Chọn]
[root@centos7 ~]# stat test2.tar
  File: 'test2.tar'
  Size: 10240           Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 68496231    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-02 15:47:33.940838420 +1000
Modify: 2016-09-02 15:47:33.940838420 +1000
Change: 2016-09-02 15:47:33.940838420 +1000
 Birth: -
[root@centos7 ~]# touch -a test2.tar

[root@centos7 ~]# stat test2.tar
  File: 'test2.tar'
  Size: 10240           Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 68496231    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-07 11:04:55.267166167 +1000
Modify: 2016-09-02 15:47:33.940838420 +1000
Change: 2016-09-07 11:04:55.267166167 +1000
 Birth: -

3. Thay đổi thời gian sửa đổi

Ngoài ra, chúng tôi có thể chỉ định -m để cập nhật dấu thời gian sửa đổi thay vì thời gian truy cập. Một lần nữa lưu ý rằng điều này cũng cập nhật thời gian thay đổi, vì tệp đã được thay đổi.

Mã nguồn [Chọn]
[root@centos7 ~]# touch -m test2.tar
[root@centos7 ~]# stat test2.tar
  File: 'test2.tar'
  Size: 10240           Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 68496231    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-07 11:04:55.267166167 +1000
Modify: 2016-09-07 11:06:18.771172613 +1000
Change: 2016-09-07 11:06:18.771172613 +1000
 Birth: -

4. Tạo tệp mới

Nếu tệp mà chúng tôi chỉ định sau lệnh touch không tồn tại, theo mặc định, touch sẽ tạo một tệp trống mới có kích thước 0 byte.

Mã nguồn [Chọn]
[root@centos7 ~]# touch new-file-123
[root@centos7 ~]# stat new-file-123
  File: 'new-file-123'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 68496243    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-07 11:07:07.419176368 +1000
Modify: 2016-09-07 11:07:07.419176368 +1000
Change: 2016-09-07 11:07:07.419176368 +1000
 Birth: -

Tất cả các dấu thời gian truy cập, sửa đổi và thay đổi đều được đặt thành khi tệp được tạo bằng thao tác chạm.

5. Tạo nhiều tệp

Chúng ta có thể tạo nhiều tệp mới bằng lệnh touch bằng cách chỉ định tên tệp nối tiếp nhau.

Mã nguồn [Chọn]
[root@centos7 files]# touch 1 2 3
[root@centos7 files]# ls -l
total 0
-rw-r--r--. 1 root root 0 Sep  7 11:54 1
-rw-r--r--. 1 root root 0 Sep  7 11:54 2
-rw-r--r--. 1 root root 0 Sep  7 11:54 3

Với sự trợ giúp của bash, chúng tôi có thể nhanh chóng tạo một số lượng lớn tệp mới.

Mã nguồn [Chọn]
[root@centos7 files]# touch {a..e}
[root@centos7 files]# ls -l
total 0
-rw-r--r--. 1 root root 0 Sep  7 11:57 a
-rw-r--r--. 1 root root 0 Sep  7 11:57 b
-rw-r--r--. 1 root root 0 Sep  7 11:57 c
-rw-r--r--. 1 root root 0 Sep  7 11:57 d
-rw-r--r--. 1 root root 0 Sep  7 11:57 e

6. Không tạo tệp mới

Chúng tôi cũng có tùy chọn ngăn các tệp mới được tạo bằng lệnh touch bằng cách sử dụng tùy chọn -c.

Mã nguồn [Chọn]
[root@centos7 ~]# touch -c this-does-not-exist
[root@centos7 ~]# stat this-does-not-exist
stat: cannot stat 'this-does-not-exist': No such file or directory

Touch vẫn hoạt động bình thường trên các tệp hiện có, điều này chỉ ngăn nó tạo các tệp mới chưa tồn tại.

7. Sử dụng chuỗi thời gian

Chúng ta có thể đặt dấu thời gian tùy chỉnh với tùy chọn -d lấy chuỗi được cung cấp cho nó thay vì sử dụng thời gian hiện tại. Điều này có thể hữu ích vì nó cho phép chúng tôi chỉ định định dạng mà con người có thể đọc được.

Mã nguồn [Chọn]
[root@centos7 ~]# touch test123 -d '20 Jun 2020'
[root@centos7 ~]# stat test123
  File: 'test123'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 68496245    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-06-20 00:00:00.000000000 +1000
Modify: 2020-06-20 00:00:00.000000000 +1000
Change: 2016-09-07 11:23:08.186250528 +1000
 Birth: -

Trong ví dụ này, chúng tôi đã tạo tệp mới 'test123' với quyền truy cập và sửa đổi ngày 20 tháng 6 năm 2020.

8. Đặt thời gian cụ thể

Tương tự như tùy chọn -d ở trên, chúng ta có thể sử dụng tùy chọn -t để chỉnh sửa dấu thời gian trên tệp ở định dạng [[CC]YY]MMDDhhmm[.ss]

Mã nguồn [Chọn]
[root@centos7 ~]# touch file -t 205001010000
[root@centos7 ~]# stat file
  File: 'file'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 68496244    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2050-01-01 00:00:00.000000000 +1100
Modify: 2050-01-01 00:00:00.000000000 +1100
Change: 2016-09-07 11:19:13.919232445 +1000
 Birth: -

Trong ví dụ này, chúng tôi đã tạo một tệp mới có tên là 'tệp' có thời gian truy cập và sửa đổi lần cuối được đặt xa trong tương lai vào năm 2050.

9. Sử dụng tệp tham chiếu

Thay vì chỉ định dấu thời gian tùy chỉnh để áp dụng cho tệp, chúng ta có thể đọc dấu thời gian tồn tại từ tệp khác bằng tùy chọn -r theo sau tệp để sao chép dấu thời gian.

Mã nguồn [Chọn]
[root@centos7 ~]# stat z.mp3
  File: 'z.mp3'
  Size: 3407872         Blocks: 6656       IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 67183574    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-02 14:35:14.767503488 +1000
Modify: 2016-09-01 11:29:15.743511080 +1000
Change: 2016-09-01 11:29:15.743511080 +1000
 Birth: -

[root@centos7 ~]# touch new -r z.mp3

[root@centos7 ~]# stat new
  File: 'new'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 67191499    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-09-02 14:35:14.767503488 +1000
Modify: 2016-09-01 11:29:15.743511080 +1000
Change: 2016-09-07 11:10:37.477192582 +1000
 Birth: -

Trong ví dụ này, chúng ta thấy rằng tệp z.mp3 được truy cập lần cuối vào ngày 2 tháng 9 và được sửa đổi vào ngày 1 tháng 9. Chúng tôi tạo một tệp mới có tên 'mới' với tùy chọn -r và xác nhận rằng sau khi tạo, nó có cùng quyền truy cập và thời gian sửa đổi như tệp z.mp3. Lưu ý rằng dấu thời gian thay đổi được cập nhật vào thời điểm tệp được tạo.

10. Phiên bản hiển thị

Chúng tôi có thể in ra phiên bản touch hiện được cài đặt trên hệ thống của mình bằng tùy chọn --version.

Mã nguồn [Chọn]
[root@centos7 ~]# touch --version
touch (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, Arnold Robbins, Jim Kingdon,
David MacKenzie, and Randy Smith.

11. Trợ giúp thêm

Cuối cùng, nếu bạn cần thêm bất kỳ trợ giúp nào, chúng tôi luôn có thể kiểm tra tài liệu bằng tùy chọn --help. Lưu ý rằng để cho ngắn gọn, tôi chưa bao gồm toàn bộ đầu ra của lệnh này.

Mã nguồn [Chọn]
[root@centos7 ~]# touch --help
Usage: touch [OPTION]... FILE...

Chúng tôi đã thấy rằng lệnh touch có thể được sử dụng để tạo các tệp mới trống, cũng như chỉnh sửa quyền truy cập hoặc sửa đổi dấu thời gian trên một tệp được chỉ định hiện có khá dễ dàng.