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'

 

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

posted @ 2014-02-22 10:37  王滔  阅读(5384)  评论(0编辑  收藏  举报