Shell 脚本:创建带有日期的报告/日志文件名
有时您需要创建一个带有日期的输出文件名的 shell 脚本。例如,您可以创建一个名为“secure-jan-02-06.log”或“secure-DATE-FORMAT.log”的文件名,而不是名为“secure.log”的日志文件。可以根据要求设置 DATE-FORMAT:
=> dd-mm-yyyy
=> mm-dd-yyyy
=> yyyy-mm-dd
=> Month-Day-Year
文件名中的日期将使查找所有日志或报告变得容易。您可以使用 date 命令以给定的格式显示当前日期和时间。如果您只输入 date 命令,它将以标准格式显示:
$ date
输出:
Sun Feb 5 18:23:44 IST 2006
date 命令语法
GNU/date 的语法如下:
date +"FORMAT"
要以 MONTH-DD-YYYY 格式显示日期,请使用 date 命令,如下所示:
$ date +"%b-%d-%y"
示例输出:
Feb-05-06
其中,FORMAT 可以是以下任一种:
- %a:缩写星期几名称(周日..周六)
- %b:月份名称缩写(Jan..Dec)
- %B:完整月份名称,长度可变(January..December)
- %d:月份中的日期(01..31)
- %e:月份中的日期,空白填充(1..31)
- %m :月份(01..12)
- %Y:年份
- %d:月份中的日期(例如,01)
- %H:24 小时格式(00..23)
- %I:12 小时格式(01..12)
- %j:一年中的某一天(001..366)
- %D:日期;与 %m/%d/%y 相同
- %F:完整日期;与 %Y-%m-%d 相同(用于对文件名进行排序的良好格式)
获取 YYYY-mm-dd 格式的日期
NOW=$(date +"%Y-%m-%d")
或者
NOW=$(date +"%F")
要创建文件名中包含日期的文件,请输入:
LOGFILE="log-$NOW.log"
要显示文件名,请输入:
echo "$LOGFILE"
Shell 脚本示例
#!/bin/sh # Dump MySQL database every hour using cron # Author: Vivek Gite # See for more info: https://www.norria.com/linuxnixcraft-tips-shell_scripting_creating_reportlog_file_names_with_date_in_filename # --------------------------------------------------------------------------------------------------------- ## date format ## NOW=$(date +"%F") NOWT=$(date +"%T") ## Backup path ## BAK="/nfs/backup/mysql/$NOW" ## Login info ## MUSER="madmin" MPASS="PASSWORD" MHOST="127.0.0.1" ## Binary path ## MYSQL="/usr/bin/mysql" MYSQLDUMP="/usr/bin/mysqldump" GZIP="/bin/gzip" ## Get database list ## DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" ## Use shell loop to backup each db ## for db in $DBS do FILE="$BAK/mysql-$db-$NOWT.gz" echo "$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE" done