ฉันพยายามรันคำสั่งและต้องการใส่วันที่และเวลาในชื่อไฟล์เอาต์พุต
นี่คือคำสั่งตัวอย่างที่ฉันต้องการเรียกใช้
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
รูปแบบเวลาวันที่สามารถเป็นสิ่งที่เหมาะสมกับขีดล่าง แม้ว่า UTC หากไม่สามารถใช้ AM และ PM
ฉันพยายามรันคำสั่งและต้องการใส่วันที่และเวลาในชื่อไฟล์เอาต์พุต
นี่คือคำสั่งตัวอย่างที่ฉันต้องการเรียกใช้
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
รูปแบบเวลาวันที่สามารถเป็นสิ่งที่เหมาะสมกับขีดล่าง แม้ว่า UTC หากไม่สามารถใช้ AM และ PM
คำตอบ:
หากคุณต้องการที่จะใช้วันที่และเวลาปัจจุบันเป็นชื่อไฟล์ที่คุณสามารถใช้date
และคำสั่งเปลี่ยนตัว
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
สิ่งนี้ส่งผลให้ไฟล์2016_04_25_10_30_AM.log
(แม้ว่าโดยมีวันที่ปัจจุบัน) จะถูกสร้างขึ้นด้วย md5 hash /etc/mtab
เป็นเนื้อหาของมัน
โปรดทราบว่าชื่อไฟล์ที่มีเวลาประทับรูปแบบ 12 ชั่วโมงอาจไม่เรียงตามชื่อที่คุณต้องการเรียงลำดับ คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้การประทับเวลารูปแบบ 24 ชั่วโมงแทน
หากคุณไม่มีข้อกำหนดในการใช้รูปแบบวันที่นั้นคุณอาจลองใช้รูปแบบวันที่และเวลาที่สอดคล้องกับ ISO 8601 ตัวอย่างบางส่วนของวิธีการสร้างการแทนค่าเวลามาตรฐาน ISO 8601 ที่ถูกต้อง ได้แก่ :
$ 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
หากคุณต้องการชื่อไฟล์ "ปลอดภัย" (เช่นสำหรับความเข้ากันได้กับ Windows) คุณสามารถละเว้นเครื่องหมายโคลอนได้จากส่วนเวลา
โปรดทราบว่าตัวอย่างข้างต้นทั้งหมดถือว่าเวลาของระบบในท้องถิ่น หากคุณต้องการการแสดงเวลาที่สอดคล้องกันในเขตเวลาต่างๆคุณควรระบุการชดเชยเวลาในเขตเวลาหรือ UTC คุณสามารถรับการชดเชยเวลาในเขตเวลาที่สอดคล้องกับ ISO 8601 ได้โดยใช้ "% z" ในส่วนรูปแบบของการdate
โทรของคุณดังนี้:
$ date +"%FT%H%M%z"
2016-04-25T1030-0400
คุณสามารถรับเวลา UTC ในการdate
โทรของคุณโดยระบุการ-u
ตั้งค่าสถานะและเพิ่ม "Z" ต่อท้ายสตริง datetime เพื่อระบุว่าเวลาเป็น UTC ดังนี้:
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z
$(date +%FT%T)
2016-04-25T10:30:00