Cách sử dụng lệnh touch trên Linux

Tác giả ChatGPT, T.Tám 15, 2024, 07:02:27 CHIỀU

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

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

Điều khiển touch.

  • Lệnh touch cập nhật thời gian truy cập và sửa đổi tệp, hữu ích để đảm bảo tệp được chọn theo quy trình sao lưu và các quy trình khác.
  • Để tạo một tệp trống bằng thao tác chạm, hãy sử dụng lệnh như "touch new-file.txt".
  • Sử dụng cờ -m để đặt thời gian sửa đổi thành thời gian hiện tại hoặc cờ -a để đặt thời gian truy cập thành thời gian hiện tại.


Lệnh touch không chỉ tạo ra các tập tin trống. Nó cập nhật thời gian truy cập và sửa đổi, đảm bảo các hoạt động như tạo tập lệnh và sao lưu bao gồm các tệp bạn muốn. Đây là cách sử dụng nó.

1. Lệnh touch là gì?

Lệnh touch là một phần của tiện ích lõi GNU và phải có trên tất cả các bản phân phối Linux. Đó là một công cụ cũ, có từ cuối những năm 1970 và phát hành phiên bản Unix 7.

Tôi chủ yếu sử dụng nó như một cách nhanh chóng và dễ dàng để tạo tệp, nhưng đó thực sự là một tác dụng phụ trong mục đích chính của nó. Nó cho phép bạn thiết lập thời gian truy cập và sửa đổi tập tin. Thực tế là hành động mặc định của nó cũng là tạo tệp nếu nó không tồn tại.

touch ghi đè siêu dữ liệu của tệp để có vẻ như tệp đã được truy cập (mở và đọc), sửa đổi (nội dung của tệp đã thay đổi) hoặc cả hai, tại một thời điểm nhất định. Nó cung cấp cho bạn khá nhiều cách để xác định thời gian.

Tuy nhiên, tôi đoán rằng cách sử dụng phổ biến nhất của nó có lẽ tận dụng tác dụng phụ thú vị của nó là tạo các tệp trống.

2. Tạo tập tin trống

Tạo tập tin bằng touch chỉ là trò chơi của trẻ con.

Mã nguồn [Chọn]
touch new-file.txt
touch ~/Documents/outlines/rough-outline.txt
ls *.txt
ls ~/Documents/outlines/*.txt


Các tập tin được tạo ở vị trí được yêu cầu của họ. Tại thời điểm này, chúng không chỉ là một tên tệp trong hệ thống tệp,

Mã nguồn [Chọn]
ls -hl new-file.txt

Tệp của chúng ta chắc chắn tồn tại, mặc dù nó có kích thước tệp bằng 0 byte.

Để tạo nhiều tệp, hãy cung cấp danh sách tên của chúng trên dòng lệnh.

Mã nguồn [Chọn]
touch new-file-2.txt new-file-3.txt new-file-4.txt
ls *.txt



Nếu các tệp bạn sắp tạo có tên được đánh số tuần tự, bạn có thể tạo tất cả chúng trong một lần như thế này.

Mã nguồn [Chọn]
touch even-more-files-{1..6}.txt
ls even*


3. Đặt thời gian truy cập thành thời gian hiện tại

Chúng tôi sẽ sử dụng một tệp mẫu để minh họa cách sử dụng touch. Chúng ta có thể sử dụng lệnh stat để xem dấu thời gian của nó là gì.

Mã nguồn [Chọn]
stat sample-file.txt

Dấu thời gian truy cập của nó là 14:32:47 vào ngày 5 tháng 8 năm 2024 và dấu thời gian sửa đổi của nó là nửa đêm ngày 20 tháng 7 năm 2024.

Để đặt thời gian truy cập theo thời gian hiện tại của PC, chúng ta sử dụng tùy chọn -a (access).

Mã nguồn [Chọn]
touch -a sample-file.txt
stat sample-file.txt


Dấu thời gian truy cập đã được thay đổi thành 10:42:00 vào ngày 6 tháng 8 năm 2024.

Lưu ý rằng dấu thời gian thay đổi cũng đã được cập nhật. Đây là thời điểm tập tin được thay đổi lần cuối. Ví dụ: đặt quyền truy cập tệp mới sẽ đủ để cập nhật dấu thời gian thay đổi. Cập nhật dấu thời gian truy cập là một thay đổi, do đó dấu thời gian thay đổi sẽ được làm mới.

4. Đặt thời gian sửa đổi thành thời gian hiện tại

Việc đặt thời gian sửa đổi cũng đơn giản như vậy nhưng chúng tôi sử dụng tùy chọn -m (sửa đổi).

Mã nguồn [Chọn]
touch -m sample-file.txt
stat sample-file.txt


Dấu thời gian sửa đổi của chúng ta hiện đang hiển thị là 10:42:50 vào ngày 6 tháng 8 năm 2024.

5. Đặt thời gian truy cập và sửa đổi thành thời gian cụ thể

Có hai cách để đặt cả dấu thời gian truy cập và sửa đổi theo thời gian bạn chọn. Nghĩa là, chúng không được đặt theo thời gian hiện tại của PC mà được đặt theo giá trị ngày và giờ bạn cung cấp trên dòng lệnh.

Sự khác biệt duy nhất giữa chúng là định dạng bạn cung cấp ngày và giờ trên dòng lệnh.

Tùy chọn -d (ngày) chấp nhận một chuỗi được định dạng ở định dạng tự do, kiểu mà con người có thể đọc được, như 'Thứ Tư, ngày 7 tháng 8 năm 2024 16:00:00' hoặc "2024-7-11 16:00:00" hoặc thậm chí những cụm từ như "Chủ nhật tới".

Tùy chọn -t (tem) yêu cầu định dạng khác, ít thân thiện hơn. Định dạng là:

Mã nguồn [Chọn]
[CC]YY]MMDDhhmm[.ss]
Đó là thế kỷ, thế kỷ, năm, năm, rồi tháng, ngày, giờ, phút, giây. Số giây, thế kỷ và năm là tùy chọn. Một dấu chấm "." được sử dụng để tách giây khỏi phút.

Nếu bạn cung cấp năm thì số liệu thế kỷ là tùy chọn và thế kỷ này được coi là giả định.

Trước tiên hãy sử dụng tùy chọn -d.

Mã nguồn [Chọn]
touch -d "Wed, August 7 2024 16:00:00" sample-file.txt
stat sample-file.txt


Chúng tôi sẽ đặt quyền truy cập và sửa đổi dấu thời gian thành nửa đêm, vào dịp Halloween năm nay.

Mã nguồn [Chọn]
touch -t 2410310000.00 sample-file.txt
stat sample-file.txt


6. Chỉ đặt một lần cho một giá trị cụ thể

Tùy chọn -t và -d hoạt động trên cả hai dấu thời gian cùng một lúc. -a và -m đặt một dấu thời gian duy nhất, nhưng theo thời gian hiện tại, không phải thời gian do người dùng chỉ định.

Còn trường hợp bạn muốn đặt một dấu thời gian duy nhất thành thời gian tùy ý thì sao? Chúng ta cũng có thể đạt được điều đó. Nó đơn giản nhưng hơi phản trực giác.

Việc kết hợp các tùy chọn -a hoặc -m với một trong các tùy chọn -t hoặc -d cho phép bạn cung cấp thời gian trên dòng lệnh chỉ áp dụng cho dấu thời gian truy cập hoặc sửa đổi.

Đây là một ví dụ. Chúng tôi sẽ đặt dấu thời gian sửa đổi thành 1145 vào ngày 21 tháng 12 năm nay, năm 2024, đây là ngày ngắn nhất trong năm.

Sử dụng chuỗi định dạng -t, chúng ta có thể viết chuỗi này là 12211145.00. Chúng tôi không cung cấp các thành phần CC hoặc YY, vì vậy, thao tác chạm sẽ cho rằng chúng tôi muốn nói đến năm hiện tại.

Lưu ý rằng chúng tôi đang sử dụng cả hai tùy chọn -m và -t ở đây. Tùy chọn -m phải đến trước.

Mã nguồn [Chọn]
touch -mt 12211145.00 sample-file.txt
stat sample-file.txt


Chúng ta có thể làm điều tương tự với dấu thời gian truy cập bằng cách sử dụng -at trong lệnh.

7. Đặt thời gian truy cập và sửa đổi thành thời gian của tệp khác

Chúng tôi có thể yêu cầu chạm để lấy dấu thời gian từ tệp hiện có và sao chép chúng trên tệp đích.

Điều này cho phép bạn đặt dấu thời gian của một tệp hoặc nhóm tệp thành một tệp hiện có mà bạn biết có dấu thời gian bạn muốn. Nó giúp bạn tiết kiệm được cách viết dấu thời gian ở định dạng -d hoặc -t và nhập chuỗi định dạng trên dòng lệnh.

Chúng tôi có một tệp có tên reference-file.txt. Đây là dấu thời gian của nó.

Mã nguồn [Chọn]
stat reference-file.txt

Chúng tôi sẽ áp dụng các dấu thời gian này cho tệp mục tiêu của mình và tạo một tệp khác có tên sample-2.txt cùng lúc. Tệp mới của chúng tôi cũng sẽ có dấu thời gian từ reference-file.txt áp dụng cho tệp đó, thay vì thời gian tạo thực tế.

Mã nguồn [Chọn]
touch -r reference-file.txt sample-file.txt sample-2.txt
stat sample-file.txt sample-2.txt


Chúng ta có thể thấy thao tác chạm đó áp dụng dấu thời gian truy cập và sửa đổi từ tệp tham chiếu sang tệp hiện có và tệp mới của chúng tôi.

8. Không tạo tệp, chỉ sửa đổi tệp hiện có

Đôi khi, bạn không muốn chạm để tạo một tập tin nếu nó không tồn tại. Bạn có thể ghi đè hành động mặc định của nó bằng cách thêm tùy chọn -c (không tạo).

Mã nguồn [Chọn]
ls missing-in-action.txt
touch -c -mt 202409170900.00 sample-file.txt missing-in-action.txt
stat sample-file.txt
ls missing-in-action.txt


Chúng tôi xác minh rằng tệp bị thiếu trong hành động.txt không tồn tại, sau đó yêu cầu chạm cập nhật dấu thời gian sửa đổi của sample-file.txt và thiếu-in-action.txt, nhưng chỉ khi chúng tồn tại.

Chúng ta có thể thấy rằng dấu thời gian sửa đổi của sample-file.txt đã được thay đổi, nhưng tệp Miss-in-action.txt vẫn chưa được tạo.

9. Một chút đẳng cấp

Bạn có thể tạo tệp bằng các kỹ thuật khác, chẳng hạn như chuyển hướng hoặc mèo, nhưng những phương pháp đó không cho phép bạn dễ dàng tạo nhiều tệp như thao tác chạm. Và chỉ cần chạm mới có thể đặt dấu thời gian của tệp thành bất kỳ thứ gì bạn muốn.

Chính mức độ tinh tế đó đã tạo nên sự khác biệt.