天天看點

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

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

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'

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