shell中date使用總結-基於自動定期備份mysql實踐

王滔發表於2014-02-22


------------------------時間的格式

date [OPTION]... [+FORMAT]



echo `date 空格 +'時間格式串'`

呼叫date必須加符號反引號``,表示執行裡面的結果



當為: `date +'%Y%m%d-%H:%M:%S'`沒有時分秒的情況下,不需要用''將格式包含起來。但是增加時分秒後,
如果還這樣子用  `date +%Y%m%d %H:%M:%S` 則會報錯:

date: extra operand `%H:%M:%S'

將其看成是額外的引數去了。如果日期與時間有符號連線起來,則不會:

%Y%m%d-%H:%M:%S,關鍵是有空格,程式誤判了。

經驗:習慣最好是將格式用引號括起來。可以是單引號,也可以是雙引號。根據shell變數定義的情況來。


echo `date + "%Y%m%d %H:%M:%S"` 會直接輸出在螢幕上。

定義在shell變數中的方式:

DATE="`date +'%Y%m%d-%H:%M:%S'`"


這裡最外面已經有個雙引號。裡面格式用單引號括起來。

+就表示顯示時間,而非設定時間。格式設定為一個加號後接數個標記

如果不確定時的測驗方式:
1、在終端使用echo。會直接輸出在螢幕上。

2、date --help 會顯示幫助資訊

date實際上就是一個命令。



 -d, --date=STRING         display time described by STRING, not `now'


date +%y%m%d --date=5 days ago

如果不加--date,預設是顯示當前時間,按照格式"%y%m%d"進行顯示。
現在加一個--date引數,就不是顯示now了。

假設現在是:14:45
那麼,echo `date +"%Y%m%d %H:%M:%S" --date="5 days ago"`

得到的時間是:5天之前的現在時間——20130824 14:45:00



===================================關於echo命令

在shell中。
方式1、echo "要輸出的字串"
方式2、 echo 要輸出的字串

在某些情況下,使用引號與不使用都沒區別。

要讓shell把裡面的結果執行的話,則是
echo "``"

echo "-------------------$(date +"%y-%m-%d %H:%M:%S")----------------"

我可以把()看成是``的替代符號。


要輸出換行\n的時候,必須呼叫 -e 引數

echo -e  "輸出\n輸出"


============================================沒搞清楚什麼樣的字元才是--date=""裡面的合法格式呢?
假設我要想顯示上個月,怎麼使用
date --date="LAST MONTH"  +"%Y-%m"

技巧:如果不確定,自己到shell命令列下面去試。

如果是非法的格式,則會提示的,比如,我傳遞一個:--date="LAST"
提示為date: invalid date `LAST'

 

.................

相關文章