date命令在shell腳本中用處很大吏祸,比如要在腳本中標記一個日志或者針對某個文件做更改揭糕,就可以使用date給它做一些裝飾,比如每天備份mysql屎即,最終生成一個.sql的文件庙睡,那么我們就可以針對這個文件加一個日期的標記事富,這樣就可以很清晰的知道我們備份的這個文件是哪一天生成的或者周幾生成的,等到下一個對應(yīng)的周幾乘陪,此時備份的sql文件就會自動地將上一個周同一天的備份文件覆蓋掉统台,這樣就不用刪除文件
1、date
? ? # date ? ? ?//顯示系統(tǒng)當前日期和時間
? ? 上面是date命令默認的輸出格式啡邑,我們也可以將輸出格式顯示為英文
? ? ? ? # LANG=en ? ? //將系統(tǒng)環(huán)境變量LANG設(shè)置為英文格式
? ? ? ? # date ? ? ? ? ? ? //然后執(zhí)行date命令贱勃,結(jié)果如下
2、年月日
????我們標記日期的方式一般的格式是:20180321 ?谤逼、 180321
? ? # date +%Y ? ? //year,輸出4位數(shù)年
? ? # date +%y ? ? //輸出2位數(shù)的年
? ? # date +%m ? //m表示month贵扰,輸出的結(jié)果是月份
? ? # date +%d ? //d表示day,日
? ? # date +%D ? //D表示特殊格式的日期表示方法,如下當前日期為2018年3月21日
我們還可以將上面的年月日組合在一起輸出
? ? # date +%Y%m%d ? //輸出年月日
? ? # date +%F ? //輸出的年月日會用連字符隔開
3流部、時分秒
? ? # date +%H ? ? //H表示hour小時
?????# date +%M ? //M表示minute分鐘
? ? # date +%S ? ?//S表示second秒
? ? # date +%s ? ?//輸出結(jié)果是一個時間戳戚绕,表示距離1970年1月1日0時0分過去多少秒
? ? # date +%T ? ?//以下面格式輸出時分秒
? ? # date +%H:%M:%S ? //效果跟上條命令一樣
4、星期
? ? # date +%w ? ?//輸出結(jié)果為星期幾枝冀,比如下圖表示當前系統(tǒng)時間是星期三
? ? # date +%W ? //表示當前為今年的第幾周舞丛,比如我這里為今年的第12周
5、日歷
? ? # cal ? ? //展示日歷
6果漾、從當前時間往前或往后推算
? ? 使用場景:比如我們切割日志在今天的0時0分球切,那么被切割出去的日志應(yīng)該以昨天的日期來標記,因此需要倒推一天
? ? # date -d "-1day" ? //當前系統(tǒng)時間為3月21日绒障,輸出結(jié)果為3月20日
? ? # date -d "-1day" +%F ?
? ? # date -d "-1 month" +%F ?//上個月
? ? # date -d "-1 year" +%F ? //表示去年吨凑,year后面也可以加上s,day和month后也可以加上s
? ? 其他的時分秒也諸如此類
7户辱、時間戳
? ? # date +%s ? ? ? ? ?//獲取時間戳
? ? # date -d @1521563928 ? ? ? ? //將時間戳換算成日期
? ? # date +%s -d "2017-03-21 00:38:48" ? ? //將日期換算成時間戳