zoukankan      html  css  js  c++  java
  • Linux(六)shell操作实用技巧

    一、shell操作日期时间      

          linux 系统为我们提供了一个命令 date,专门用来显示或者设置系统日期时间的。
          语法格式为:
          date [OPTION]... [+FORMAT] 或者
          date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
          常用的可选项有:
          --help 显示辅助信息
          --version 显示 date 命令版本信息
          -u 显示目前的格林威治时间
          -d 做日期时间相关的运算
          --date='-dateStr' 做日期时间的相关运算

          1、显示系统当前日期时间    date

              以指定格式显示日期时间        date '+%Y-%m-%d %H:%M:%S'

          2、设置系统日期时间   date -s "2017-01-01 01:01"

          3、 有时候,我们操作日期时间,经常会要获取前几天或者后几天的时间,那么 date 命令也 给我们提供了实现这个功能的可选项'-d'和-date,请看下面细细的例子

             先看'-d':
                ## 获取下一天的时间
                         date -d next-day '+%Y-%m-%d %H:%M:%S'
                         date -d 'next day' '+%Y-%m-%d %H:%M:%S'
              另外一种写法:
                         date '+%Y-%m-%d %H:%M:%S' -d tomorrow
               ## 获取上一天的时间
                         date -d last-day '+%Y-%m-%d %H:%M:%S'
              另外一种写法:
                         date '+%Y-%m-%d %H:%M:%S' -d yesterday

               ## 获取下一月的时间
                        date -d next-month '+%Y-%m-%d %H:%M:%S'
               ## 获取上一月的时间      date -d last-month '+%Y-%m-%d %H:%M:%S'
               ## 获取下一年的时间      date -d next-year '+%Y-%m-%d %H:%M:%S
               ## 获取上一年的时间       date -d last-year '+%Y-%m-%d %H:%M:%S'
               ## 获取上一周的日期时间:     date -d next-week '+%Y-%m-%d %H:%M:%S'
                                                         date -d next-monday '+%Y-%m-%d %H:%M:%S'
                                                         date -d next-thursday '+%Y-%m-%d %H:%M:%S'

                那么类似的,其实, last-year, last-month, last-day, last-week, last-hour, last-minute, last-second 都有对应的实现。 相反的, last 对应 next,自己可以根据实际情况灵活组织
            接下来,我们来看'-date', 它帮我实现任意时间前后的计算,来看具体的例子:
            ## 获取一天以后的日期时间     date '+%Y-%m-%d %H:%M:%S' --date='1 day'

                                                       date '+%Y-%m-%d %H:%M:%S' --date='-1 day ago' 

            ## 获取一天以前的日期时间        date '+%Y-%m-%d %H:%M:%S' --date='-1 day'
                                                       date '+%Y-%m-%d %H:%M:%S' --date='1 day ago'
    上面的例子显示出来了使用的格式,使用精髓在于改变前面的字符串显示格式,改变数 据,改变要操作的日期对应字段,除了天也有对应的其他实现: year, month, week, day, hour, minute, second, monday( 星期,七天都可)

           4、 date 能用来显示或设定系统的日期和时间,在显示方面,使用者能设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:
                使用范例: date '+%Y-%m-%d %H:%M:%S'

    日期方面:
    %a : 星期几 (Sun..Sat)
    %A : 星期几 (Sunday..Saturday)
    %b : 月份 (Jan..Dec)
    %B : 月份 (January..December)
    %c : 直接显示日期和时间
    %d : 日 (01..31)
    %D : 直接显示日期 (mm/dd/yy)
    %h : 同 %b
    %j : 一年中的第几天 (001..366)
    %m : 月份 (01..12)
    %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
    %w : 一周中的第几天 (0..6)
    %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
    %x : 直接显示日期 (mm/dd/yy)
    %y : 年份的最后两位数字 (00.99)
    %Y : 完整年份 (0000..9999)
    时间方面:
    % : 印出
    % %n : 下一行
    %t : 跳格
    %H : 小时(00..23)
    %I : 小时(01..12)
    %k : 小时(0..23)
    %l : 小时(1..12)
    %M : 分钟(00..59)
    %p : 显示本地 AM 或 PM
    %P : 显示本地 am 或 pm
    %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
    %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61)
    %T : 直接显示时间 (24 小时制)
    %X : 相当于 %H:%M:%S %p
    %Z : 显示时区
    若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss]
    MM 为月份,
    DD 为日,
    hh 为小时,
    mm 为分钟,
    CC 为年份前两位数字,
    YY 为年份后两位数字,
    ss 为秒数

             5、有用小技巧         

                   ## 获取相对某个日期前后的日期: date -d 'may 14 -2 weeks'
                   ## 把时间当中无用的 0 去掉,比如: 01:02:25 会变成 1:2:25        date '+%-H:%-M:%-S'
                   ## 显示文件最后被更改的时间   date "+%Y-%m-%d %H:%M:%S" -r bin/removeJDK.sh
                   ## 求两个字符串日期之间相隔的天数  expr '(' $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09") ')' / 86400
                   ## shell 中加减指定间隔单位
                                A=`date +%Y-%m-%d`
                                B=`date +%Y-%m-%d -d "$A +36 hours"`

    二、shell操作字符串      

          Linux 中操作字符串,也是一项必备的技能。 其中尤以截取字符串更加频繁,下面为大家介 绍 10 种方式,截取字符串
          1、 #截取,删除左边字符串(包括制定的分隔符),保留右边字符串
                预先定义一个变量: WEBSITE='http://hadoop/centos/huangbo.html'
               echo ${WEBSITE#*//}        结果: hadoop/centos/huangbo.html
          2、 ##截取,删除左边字符串( 包括指定的分隔符),保留右边字符串,和上边一个#不同的 是,它一直找到最后,而不是像一个#那样找到一个就满足条件退出了。
                echo ${WEBSITE##*//}     结果: huangbo.html
           3、 %截取,删除右边字符串(包括制定的分隔符),保留左边字符串
                 echo ${WEBSITE%//*}     结果: http://hadoop//centos
            4、 %%截取,删除右边字符串( 包括指定的分隔符),保留左边字符串,和上边一个%不同 的是,它一直找到最前,而不是像一个%那样找到一个就满足条件退出了。

                 echo ${WEBSITE%%//*}          结果: http:
            5、 从左边第几个字符开始,以及截取的字符的个数           echo ${WEBSITE:2:2}        结果: tp
            6、 从左边第几个字符开始,一直到结束            echo ${WEBSITE:2}         结果: tp://hadoop//centos//huangbo.html
            7、 从右边第几个字符开始,以及字符的个数        echo ${WEBSITE:0-4:2}       结果: ht
            8、 从右边第几个字符开始,一直到结束          echo ${WEBSITE:0-4}         结果: html
            9、 利用 awk 进行字符串截取      echo $WEBSITE | awk '{print substr($1,2,6)}'        结果: ttp://
            10、 利用 cut 进行字符串截取     echo $WEBSITE | cut -b 1-4     结果http
                                                        echo $WEBSITE | cut -c 1-4      结果http      
                                                        echo $WEBSITE | cut -b 1,4      结果 hp
                                                        echo $WEBSITE | cut -c 1,4      结果hp
    三、Linux获取字符串长度     

         在此为大家提供五种方式获取某字符串的长度
         1、 使用 wc -L 命令
               echo ${WEBSITE} |wc -L         结果35
         2、 使用 expr 的方式去计算 
               expr length ${WEBSITE}         结果35
         3、 通过 awk + length 的方式获取字符串长度
               echo ${WEBSITE} | awk '{print length($0)}'    结果35
         4、 通过 awk 的方式计算以""分隔的字段个数
               echo ${WEBSITE} |awk -F "" '{print NF}'    结果35
         5、 通过#的方式获取字符串(最简单,最常用)
              echo ${#WEBSITE}        结果 35



  • 相关阅读:
    navigator对象及属性(userAgent)(扩展)
    最新Visual C++ 运行时
    Wakfu .pk 音频文件提取
    Flex布局学习记录
    小程序 swiper bindChange 抖动解决方法
    小程序 scroll-view 无法触发 onReachBottom 解决办法
    小程序修改按钮宽高
    db.collection(变量名)
    小程序图片轮播自适应
    微信小程序 MD5引用
  • 原文地址:https://www.cnblogs.com/liuwei6/p/6670471.html
Copyright © 2011-2022 走看看