Lệnh touch cho phép chúng ta cập nhật dấu thời gian trên các tệp và thư mục hiện có cũng như tạo các tệp trống mới.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng lệnh touch thông qua các ví dụ thực tế và giải thích chi tiết về các tùy chọn lệnh phổ biến nhất.
Dấu thời gian tệp Linux
Trước khi đi vào cách sử dụng lệnh touch, hãy bắt đầu bằng cách xem lại dấu thời gian của tệp trong Linux.
Một tệp trong Linux có ba dấu thời gian:
- atime (thời gian truy cập) – Lần cuối cùng tệp được truy cập / mở bằng một số lệnh hoặc ứng dụng như cat , vim hoặc grep .
- mtime (thời gian sửa đổi) – Lần cuối cùng nội dung của tệp được sửa đổi.
- ctime (thời gian thay đổi) – Lần cuối cùng thuộc tính hoặc nội dung của tệp được thay đổi. Thuộc tính bao gồm quyền đối với tệp, quyền sở hữu tệp hoặc vị trí tệp.
Để hiển thị trạng thái tệp bao gồm cả dấu thời gian, hãy sử dụng stat
lệnh.
stat file_name
Tạo một tệp mới yêu cầu quyền ghi trên thư mục cha. Nếu không, bạn sẽ nhận được lỗi bị từ chối cho phép.
Cách sử dụng lệnh touch
Ở dạng đơn giản nhất, nó được sử dụng mà không có bất kỳ tùy chọn nào, nếu tên tệp được chỉ định làm đối số không tồn tại, touch vào sẽ tạo một tệp mới.
Nếu tệp đã tồn tại, touch sẽ thay đổi lần truy cập cuối cùng của tệp và thời gian sửa đổi thành thời điểm hiện tại.
Ví dụ: nếu tệp file1
không tồn tại, lệnh sau sẽ tạo nó theo cách khác, nó sẽ thay đổi dấu thời gian của nó:
touch file1
Để tạo hoặc sửa đổi nhiều tệp cùng một lúc, hãy chỉ định tên tệp làm đối số:
touch file1 file2 file3
Nếu bạn không muốn lệnh touch tạo tệp mới, hãy sử dụng tùy chọn -c
( --no-create
).
Ví dụ: nếu tệp file1
tồn tại, lệnh sau sẽ thay đổi dấu thời gian tệp, ngược lại, nó sẽ không làm gì:
touch -c file1
Chỉ thay đổi quyền truy cập hoặc thời gian sửa đổi
Theo mặc định, nếu không có tùy chọn nào được sử dụng, touch sẽ cập nhật thời gian truy cập và sửa đổi tệp gần đây nhất thành thời điểm hiện tại. Bằng cách sử dụng các tùy chọn -a
và -m
, bạn chỉ có thể thay đổi một trong các dấu thời gian này.
Chỉ thay đổi thời gian truy cập
Sử dụng -a
tùy chọn để chỉ thay đổi thời gian truy cập của tệp:
touch -a file1
Chỉ thay đổi thời gian sửa đổi
Sử dụng tùy chọn -m
để thay đổi thời gian sửa đổi của tệp:
touch -m file1
Khi thay đổi thời gian sửa đổi, thời gian thay đổi cũng sẽ được cập nhật.
Đặt dấu thời gian cụ thể
Lệnh touch cũng cho phép chúng ta cập nhật hoặc tạo tệp với thời gian cụ thể khác với thời điểm hiện tại.
Sử dụng tùy chọn -d
( --date=
) để chỉ định một chuỗi ngày và sử dụng nó thay vì thời gian hiện tại.
Ví dụ: để thay đổi cả lần truy cập cuối cùng và thời gian sửa đổi file1
thành ngày 1 tháng 6 năm 2018 11:02, bạn sẽ sử dụng lệnh sau:
touch -d '1 June 2018 11:02' file1
Chuỗi ngày cần được đặt trong dấu ngoặc kép.
Bạn cũng có thể cung cấp một phần chuỗi ngày-giờ cho lệnh touch. Chỉ cung cấp ngày, tự động thay đổi năm thành hiện tại:
touch -d '12 June' file1
Sử dụng -t
để chỉ định dấu thời gian và sử dụng nó thay vì thời gian hiện tại. Đối số dấu thời gian cần phải ở định dạng sau:
use [[CC]YY]MMDDhhmm[.ss]
Ví dụ: lệnh sau sẽ đặt thời gian truy cập và sửa đổi cuối cùng là file1
1 tháng 6 11:02 của năm hiện tại.
touch -t 06011102 file1
Sử dụng dấu thời gian của tệp khác
Các -r
( --reference=
) tùy chọn cho phép chúng ta xác định một tập tin tài liệu tham khảo và sử dụng timestamps của nó thay vì thời gian hiện tại.
Ví dụ: lệnh sau sẽ yêu cầu touch sử dụng thời gian của file1
for file2
:
touch -r file1 file2
Thay đổi dấu thời gian liên kết tượng trưng
Theo mặc định, nếu bạn sử dụng lệnh touch trên một liên kết tượng trưng, nó sẽ thay đổi dấu thời gian của tệp được tham chiếu.
Sử dụng -h
( --no-dereference
) để sửa đổi dấu thời gian của liên kết biểu tượng.
Ví dụ: để thay đổi dấu thời gian của liên kết tượng trưng symlink1
mà bạn sẽ sử dụng:
touch -h symlink1
Phần kết luận
Đến đây, bạn đã hiểu rõ về cách sử dụng lệnh touch của Linux.