您的位置:1010cc时时彩经典版 > 服务器&运维 > 1010cc时时彩经典版:date命令总结,date命令的用法

1010cc时时彩经典版:date命令总结,date命令的用法

发布时间:2019-08-16 02:03编辑:服务器&运维浏览(162)

    shell脚本删除N天前的文书夹

    背景:

    天天创设的事物,按日期放到差异的公文夹里。如后天的构建放到二零一六-06-01里,后日的就停放贰零壹陆-06-02里,依次类推。时间久了,须求多少个本子删除N天前的文书夹。(本例中N=7,即除去三十日前的创设)。

    下边直接上代码,linux版:

    #! /bin/bash
    
    historyDir=~/test/
    
    today=$(date  %Y-%m-%d)
    
    echo "---------today is $today-----------"
    
    tt=`date -d last-week  %Y-%m-%d`
    
    echo "next is to delete release before $tt"
    
    tt1=`date -d $tt  %s` #小于此数值的文件夹删掉
    
    #echo $tt1
    
    for file in ${historyDir}*
    
    do
    
    if test -d $file
    
    then
    
    name=`basename $file`
    
    #echo $name
    
    curr=`date -d $name  %s`
    
    if [ $curr -le $tt1 ]
    
    then
    
    echo " delete $name-------"
    
    rm -rf ${historyDir}${name}
    
    fi
    
    fi
    
    done
    

    注意事项:

    1,historyDir=~/test/后边鲜明要带/,不然在背后的遍历文件夹时for file in ${historyDir}*会对应不上。

    2,在linux下通过today=$(date %Y-%m-%d)获得格式为2016-06-01品种的日期,通过

    tt1=`date -d $tt  %s`
    

    获得整形的流年戳。当然也能够在赢得时间的时候就用$(date %s)那样一向获得的便是时刻戳,不用再转移了,可是日子是暗许的年月日时辰分秒的格式调换的时间戳。

    PS:MAC下不行。

    3,linux里经过date -d last-week %Y-%m-%d来获得七日前的日子。

    PS:MAC下没行。

    4,通过 if test -d $file来判断文件夹是或不是存在,-f是判别文件是或不是留存。

    name=`basename $file`
    

    那句话赢得文件夹的名字,之后是将名字(也正是日期)转为时间戳比较。

    MAC上的代码

    #! /bin/bash
    
    historyDir=~/test/
    
    today=$(date  %Y-%m-%d)
    
    echo "---------today is $today-----------"
    
    today1=`date -j -f %Y-%m-%d $today  %s`
    
    #echo "today1=$today1"
    
    #求一周前的时间
    
    tt=$(date -v -7d  %Y-%m-%d)
    
    echo "next is to delete release before $tt"
    
    tt1=`date -j -f %Y-%m-%d $tt  %s` #linux上可以这样`date -d $tt  %s` #小于此数值的文件夹删掉
    
    #echo $tt1
    
    for file in ${historyDir}*
    
    do
    
    if test -d $file
    
    then
    
    name=`basename $file`
    
    echo $name
    
    curr=`date -j -f %Y-%m-%d $name  %s`
    
    if [ $curr -le $tt1 ]
    
    then
    
    echo " delete $name"
    
    rm -rf ${historyDir}${name}
    
    fi
    
    fi
    
    done
    
    echo "--------------end---------------"
    

    跟linux上区别之处有二:

    1,将字符串的岁月转为整数的岁月戳时,mac上要如此:

    today1=`date -j -f %Y-%m-%d $today  %s`
    

    2,获得7天从前的日子mac上要这样:

    tt=$(date -v -7d  %Y-%m-%d)
    

    1010cc时时彩经典版 1


    背景: 每天构建的东西,按日期放到分化的文本夹里。如前几天的营造放到二零一六-06-01里,后天的就放到二零一六-06-02里,...

    date命令 展现或安装系统时间和日期

    展现时间是个常用的一声令下,在写shell脚本中也平时会用到与日期相关文书名或时间显示。无论是linux仍旧windows下都是date命令。

    创立以当下岁月为文件名的

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑推断  if 决断文件、目录属性  shell数组轻松用法 $( ) 和${ } 和$(( )) 与  sh -n  sh -x  sh -v 第三十五节课

    date (选项) (参数)

    Linux下date命令用法

    mkdir `date %Y%m%d`

     

    选项:

    date [OPTION]… [ FORMAT] 

    备份以时间做为文件名的

    留意:脚本写到一行最佳用分号; 

    -d “字符串” 显示字符串所指的日期与时间,注意字符串要加双引号

    date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 

    tar cvf./htdocs`date %Y%m%d`.tar ./*

    if ls /tmp/sdfsdf >/dev/null 2>&1 ;then echo ok;else echo notok; fi

    -s “字符串” 依照字符串来安装日期与时间。字符串须要有双引号

    date命令参数

     

     

    参数:

    -d, –date=STEscortING  呈现STPorsche718ING内定的时刻 

    date命令怎么样赢得上星期的日子?

    各类组织语句前面都能够加分号表示语句的扫尾,不过分多行来书写不会加任何分号越来越美观

    <时间日期格式>

    -f, –file=DATEFILE  类似–date参数展现DATEFILE文件中的每行时间 

    lastmonth=`date %Y-%m --date="-1 month"`"-01";

    #!/bin/bash
    cd /etc/ ;
    for a in `ls /etc/` ;
    do  
    if [ -d /etc/$a ]  ;
    then
    ls -d /etc/$a ;
    fi ;
    done ;
    

    %m 月份     %w 三个星期的第几天  %d 叁个月的第几天

    -ITIMESPEC, –iso-8601[=TIMESPEC]  以ISO  8601 格式展现日期/时间。TIMESPEC为”date”(只体现日期)、”hours”、”minutes”、”senconds”(展现时间精度)之一,默感觉”date”。 

    然后 awk -v 作为二个参数那样传进去不难题。

    对比

    %y 年的最后多个数字

    -r, –reference=FILE  展现文件的末段修改时间 

    #date -d "-1week" " %Y%m%d %A"

    #!/bin/bash
    cd /etc/
    for a in `ls /etc/`
    do  
    if [ -d /etc/$a ]  
    then
    ls -d /etc/$a
    fi
    done 
    

    实例:

    -中华V, –rfc-2822  以奥迪Q5FC-2822十三分日期格式显示时间 

    或者:#date -d "last week" %Y%m%d

     

    1,格式化输出   date “%Y-%m-%d”

    -s, –set=STENVISIONING  设置时间为ST昂科拉ING 

    依此类推:date命令获得前几日,前几日,前几天,后天,下二个月,下一个月的日子

     

    [root@localhost network-scripts]# date "%Y-%m-%d"

    date: 额外的操作数 "%Y-%m-%d"

    -u, –utc, –universal  显示或设定为Coordinated Universal Time时间格式 

    uuwatch@i161 ~ $ date %Y-%m-%d
    2015-07-07
    uuwatch@i161 ~ $ date -d "1 day"  %Y-%m-%d                    //1天后(今天),另外类似2天后(后天)把1改成2就能够
    2015-07-08
    uuwatch@i161 ~ $ date -d "-1 day"  %Y-%m-%d        //-1天前(前天),另外类似2天前(前些天)把-1改成-2就可以
    2015-07-06

     

    有问题。。。。

    date命令输出展现格式

    #date -d "-1 week"  %Y-%m-%d                  //一周前
    2015-06-30
    uuwatch@i161 ~ $ date -d "-2 week"  %Y-%m-%d             //两周前
    2015-06-23
    uuwatch@i161 ~ $ date -d "1 week"  %Y-%m-%d              //一周后
    2015-07-14

    上半节课
    正则
    shell脚本结构
    date命令的用法

    2,输出后日日子:

    %%    字符% 

    uuwatch@i161 ~ $ date -d "-1 month"  %Y-%m-%d           //上个月
    2015-06-07
    uuwatch@i161 ~ $ date -d "1 month"  %Y-%m-%d            //下个月
    2015-08-07

     

    date -d "1 day ago" "Y-%m-%d"

    %a     星期的缩写(Sun..Sat) 

     

    下半节课
    shell中的逻辑剖断
    if 剖断文件、目录属性
    shell数组轻巧用法
    sh -n sh -x  sh -v 
    $( ) 和${ } 和$(( ))

    date: 额外的操作数 "Y-%m-%d"

    Try 'date --help' for more information.

    [root@localhost network-scripts]# date

    2017年 07月 22日 星期六 23:59:55 CST

    [root@localhost network-scripts]#

    %A    星期的完好名称 (Sunday..Saturday) 

       date -d "-2 day" " %Y%m%d %A"   或 date --date="2 days ago"" %Y%m%d %A"

     


    %b     月份的缩写(Jan..Dec) 

       date -d "-1 day" " %Y%m%d %A"   或 date --date="1 day ago"" %Y%m%d %A"

     


    %B     月份的完整名称(January..December) 

       date -d "1 day" " %Y%m%d %A"

    剧情大致:

    作业:删除目录下全数隐含  test 的文件或目录

    %c     日期时间(Sat Nov 04 12:02:33 EST 一九九〇) 

       date -d "2 day" " %Y%m%d %A"

    1. shell脚本是何许
      它是一种脚本语言,并非编制程序语言
      能够利用部分逻辑推断、循环等语法
      能够自定义子函数
      是系统命令的汇聚
      shell脚本能够达成自动化运转,大大扩展大家的工作功效
      正则
      .:大肆一个字符
      *:结合星号前边的标志,a* 0个或三个a
      :grep不能够直接,加大E 可能egrep 大概脱义符号 grep 'a ' 贰个或五个a
      ?:0个或四个a
      .*:贪婪相称
      ():相配,然后替换
      (ab){2,4}: 出现2到4次ab
      [^:] :非冒号起头的叁个或多少个
      ([^:] )(:.*:)([^:] ) 相配多段
      sed -r 's/([^:] )(:.*:)([^:] ) /321/' /etc/passwd
      awk -F ':' '{print $7}' /etc/passwd

    find /App/ido/jobs  -type f -name "*test*" -delete

    %C     世纪(年份除100后去整) [00-99] 

       date -d "-1 month" " %Y%m%d %A"

     

    find /App/ido/jobs  -type d -name "*test*" -delete

    %d     二个月的第几天(01..31) 

       date -d "1 month" " %Y%m%d %A"

     

    删去文件夹这里存在一个主题素材,是或不是强制删除”非空目录“,就未有去除

    %D     日期(mm/dd/yy) 

       echo `date -d"-1 month" " %Y-%m-%d %X"`

    1. shell脚本结构以及施行办法以及命名准则
      始于行钦定bash路线: #! /bin/bash
      以#开班的行作为解释表明
      本子的名字以.sh结尾,用于区分那是三个shell脚本
      实行措施有二种:chmod x 1.sh; ./1.sh 借使未有试行权限可以 bash 1.sh
      bash -x 1.sh 能够查阅脚本推行进程
      shell的变量和函数命名不能够有横杠,只好是深浅写字母、 下划线、 数字  比如 check-service(){} 错误 check_service(){} 正确

    下边查看包蕴 test 的文件夹find /App/ido/jobs  -type d -name "*test*"

    %e     一个月的第几天 ( 1..31) 


     

    3、2秒后输出:date -d "2 second" "%Y-%m-%d %H :%M.%s"

    %F    日期,同%Y-%m-%d 

    #man date可以看看date的help文件
      #date 获取当前岁月
      #date -d "-1week" %Y%m%d 获取那周日期(day,month,year,hour)
      #date--date="-24 hour" %Y%m%d 同上
      date_now=`date %s` shell脚本里面赋给变量值
      %% 输出%符号
      %a 当前域的星期缩写 (Sun..Sat)
      %A 当前域的星期全写 (Sunday..Saturday)
      %b 当前域的月度缩写(Jan..Dec)
      %B 当前域的月度全称 (January..December)
      %c 当前域的私下认可时间格式 (Sat Nov 04 12:02:33 EST 一九八九)
      %C n百年 [00-99]
      %d 两位的天 (01..31)

     

    1010cc时时彩经典版 2

    %g     年份(yy) 

      %D 长时间格式 (mm/dd/yy)

    1. 学会date命令的用法
      命令格式:date [参数]... [ 格式]
      选取参数:
      -d<字符串>  展现字符串所指的日子与时光。字符串前后必须抬高双引号。
      -s<字符串>  依照字符串来设置系统日期与时光。字符串前后必须抬高双引号。

    4、有趣的事中的 1234567890 秒:

    %G     年份(yyyy) 

      %e 短格式天 ( 1..31)

    细心:假诺有空格必要用双引号引起来:date "%Y%m%d %H%M"  不用双引号date %Y%m%d-%H%M
    CST:中国时区,巴黎时间
    EST :西边标准时间
    date %Y-%m-%d, date %y-%m-%d 年月日
    大Y 四位年 小y两位年 小m月 大M分钟 小d天 小h月 大H小时 大S秒 小s时间戳(大Y 四位年 小m月 小d天 大H小时 大M分钟 大S秒 )
    date %H:%M:%S = date %T 时间
    date %Y-%m-%d = date %F 年月日
    date "%Y-%m-%d %H:%M:%S" 2015-01-20 10:36:47 双引号引起来
    date %w 星期几
    date %W 第几周
    date %s 时间戳
    date -d @1434248742 反推时间戳,时间戳是1434248742
    date -d " 1day" "%Y-%m-%d"一天后
    date -d "-1day" "%Y-%m-%d"一天前
    date -d "-1month" "%Y-%m-%d"一月前
    date -d "-1min" "%Y-%m-%d %H:%M:%S"一分钟前
    date -d "-1year" "%Y-%m-%d" 一年前
    date -d "-1weak" "%Y-%m-%d" 一个礼拜前
    两部分
    第一片段-d "-1weak"
    其次有个别 "%Y-%m-%d"

    1010cc时时彩经典版 3

    %h     同%b 

      %F 文件时间格式 same as %Y-%m-%d

     

    这里平素报错。。没平常呈现

    %H    小时(00..23) 

      %h same as %b

     

    5、前面还大概有-普通转格式-apache格式转变、格式转变后时间游走、加减操作权且不操作,同上会出错

    %I     小时(01..12) 

      %H 24小时制的钟点 (00..23)

    1. shell脚本中的变量
      当脚本中应用有些字符串较频仍并且字符串长度相当长时就应有运用变量代替
      行使规则语句时,经常使用变量 if [ $a -gt 1 ]; then ... ; fi
      援引某些命令的结果时,用变量取代 n=`wc -l 1.txt`或者 n=$(wc -l 1.txt)
      写和用户交互的本狗时,变量也是少不了的 read -p "Input a number: " n; echo $n 假诺没写那些n,能够一向运用全局变量$REPLY
      放置变量 $0, $1, $2… $0代表脚本自个儿,$1 第贰个参数,$2 第2个 ....
      $#:表示参数个数或最后八个参数
      $* 全部参数列表。如"$*"用「"」括起来的情形、以"$1 $2 … $n"的款式出口全数参数。
      $@ :表示以空格分隔的具有输入参数可能持有函数参数全数参数列表。如"$@"用「"」括起来的场馆、以"$1" "$2" … "$n" 的样式出口全部参数。
      $$:当前shell进程的pid
      $!:后台运行的终极二个经过的pid
      $- 使用Set命令设定的Flag一览

    6、设定时间: date -s

    %j     一年的第几天(001..366) 

      %I 12时辰制的钟点 (01..12)

    数学生运动算a=1;b=2; c=$(($a $b))或然$[$a $b]
    变量的成效域和属性 :readonly 、local

    1010cc时时彩经典版 4

    %k     小时( 0..23) 

      %j 一年中的第几天 (001..366)

     

    %l      小时( 1..12) 

      %k 短格式24时辰制的钟点 ( 0..23)

     

    %m    月份(01..12) 

      %l 短格式12时辰制的小时 ( 1..12)

     

    %M    分钟(00..59) 

      %m 双位月份 (01..12)

    1. shell中的逻辑推断
      格式1:if 条件 ; then 语句; fi
      格式2:if 条件; then 语句; else 语句; fi
      格式3:if …; then … ;elif …; then …; else …; fi
      格式4:if 命令;then 语句;fi
      逻辑决断表明式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意各州都以空格 方括号两侧也许有空格 if [ 1 == 1 ] then xx fi
      能够使用 && || 结合多少个规格 -a也代表&&,-o也意味着||
      冒号代表真 if : then xx fi

    %n     换行 

      %M 双位分钟 (00..59)

    用多个括号能够幸免使用lt,gt
    if (($a<3)); then echo ok;else echo nook;fi
    if (($a>3)); then echo ok;else echo nook;fi

    %N     纳秒(000000000..999999999) 

      %n 换行

     

    %p     AM or PM 

      %N 十亿分之一秒(000000000..999999999)

    字符串相比较用(==)和(!=) ,不能用-eq和 -ne
    if [ "s" == "e" ]; then echo 1 ;fi
    if [ "s" != "e" ]; then echo 1 ;fi

    %P     am or pm 

      %p 大写的当前域的上中午提醒 (blank in many locales)

     

    %r     12钟头制时间(hh:mm:ss [AP]M) 

      %P 小写的当前域的上晚上提醒 (blank in many locales)

    if:
    格式:注意[]两侧皆有空格 逻辑操作符两侧也要留空格
    #!/bin/bash
    if [ 1 == 2 ]
    then
    echo true;
    elif [ 1 == 3 ] ;then
    echo false;
    else
    echo error;
    fi

    %奥迪Q7    24钟头制时间(hh:mm) 

      %r 12小时制的大运表示(时:分:秒,双位) time, 12-hour (hh:mm:ss [AP]M)
      %Enclave 24时辰制的时间表示 (时:分,双位)time, 24-hour (hh:mm)
      %s 自基础时间 1968-01-01 00:00:00 到最近时时的秒数(a GNU extension)
      %S 双位秒 second (00..60);
      %t 横向制表位(tab)
      %T 24时辰制时间表示(hh:mm:ss)
      %u 数字代表的礼拜(从周二初步 1-7)
      %U 一年中的第几周 星期日为先河 (00..53)
      %V 一年中的第几周 星期五为起首 (01..53)
      %w 七日中的第几天 周日为初始 (0..6)
      %W 一年中的第几周 周五为发端 (00..53)
      %x 本地日期格式 (mm/dd/yy)
      %X 当地时间格式 (%H:%M:%S)
      %y 两位的年(00..99)
      %Y 年 (1970…)
      例子:编写shell脚本总结离自身出生之日还会有稍稍天?

    > gt
    < lt
    >= ge
    <= le
    == eq
    != ne

    本文由1010cc时时彩经典版发布于服务器&运维,转载请注明出处:1010cc时时彩经典版:date命令总结,date命令的用法

    关键词: