Nếu bạn muốn sử dụng datetime hiện tại làm tên tệp, bạn có thể sử dụng date
và thay thế lệnh .
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
Điều này dẫn đến tệp 2016_04_25_10_30_AM.log
(mặc dù, với datetime hiện tại) được tạo với hàm băm md5 /etc/mtab
như nội dung của nó.
Xin lưu ý rằng tên tệp chứa dấu thời gian định dạng 12 giờ có thể sẽ không sắp xếp theo tên theo cách bạn muốn sắp xếp. Bạn có thể tránh vấn đề này bằng cách sử dụng dấu thời gian định dạng 24 giờ thay thế.
Nếu bạn không có yêu cầu sử dụng định dạng ngày cụ thể đó, bạn có thể cân nhắc sử dụng định dạng ngày giờ theo tiêu chuẩn ISO 8601. Một số ví dụ về cách tạo các biểu diễn datetime ISO 8601 hợp lệ bao gồm:
$ date +"%FT%T"
2016-04-25T10:30:00
$ date +"%FT%H%M%S"
2016-04-25T103000
$ date +"%FT%H%M"
2016-04-25T1030
$ date +"%Y%m%dT%H%M"
20160425T1030
Nếu bạn muốn tên tệp "an toàn hơn" (ví dụ: để tương thích với Windows), bạn có thể bỏ qua dấu hai chấm từ phần thời gian.
Xin lưu ý rằng tất cả các ví dụ trên đều giả định thời gian hệ thống cục bộ. Nếu bạn cần một biểu diễn thời gian phù hợp giữa các múi giờ, bạn nên chỉ định bù múi giờ hoặc UTC. Bạn có thể có được độ lệch múi giờ tuân thủ ISO 8601 bằng cách sử dụng "% z" trong phần định dạng của date
cuộc gọi của bạn như sau:
$ date +"%FT%H%M%z"
2016-04-25T1030-0400
Bạn có thể nhận được thời gian UTC trong date
cuộc gọi của mình bằng cách chỉ định -u
cờ và thêm "Z" vào cuối chuỗi thời gian để chỉ ra rằng thời gian là UTC như thế này:
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z