一、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

Linux(六)shell操作实用技巧的更多相关文章

  1. Linux桌面环境GNOME实用技巧

    GNOME是Linux桌面上主流的集成桌面环境之一,GNOME桌面以其风格简洁.操作便捷而受到Linux用户的欢迎.这里将介绍Linux桌面环境GNOME的操作技巧,在这里拿出来和大家分享一下. 下面 ...

  2. linux中shell编辑小技巧

    一.循环1到100 ..};do echo $i done 二.获取100以内的随机值 ] 三.截取字符串 demo= :} #截取3位字符echo ${demo:1} #截取1到最后的字符 希望大家 ...

  3. 让linux好用起来--操作使用技巧

    让linux好用起来--操作使用技巧 1   概述 在一个初学者眼里,linux的 CLI 界面没有图形界面那样多彩和友好,会让人产生畏难心理,但是作为一个稍微进阶的linux玩家,自然会积累不少经验 ...

  4. Qt实用技巧:使用QTableView、QSqlTableMode与QSqlDatabase对数据库数据进行操作

    本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78615800 Qt实用技巧:使用QTableView.QSqlTableMode与Q ...

  5. Linux shell用法和技巧(转)

    原文出处: techbar   译文出处: 外刊IT评论 使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某 ...

  6. Linux shell 操作 postgresql,并设置crontab任务

    Linux shell 操作 postgresql:删除间隔日期的数据-删除指定日期的数据-vacuumdb 清理数据库 -清理日志 -定期执行脚本 *修改pg_hba.conf 设置本地连接无密码, ...

  7. linux下的shell操作mysql

    (1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...

  8. Shell操作相关的快捷键 --Linux

    一.shell和bash shell --unix --Bourne shell ,bash --linux --Bourne again shell.bash (GNU Bourne-Again S ...

  9. 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)

    [JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...

随机推荐

  1. SQL注入--显注和盲注中过滤逗号绕过

    SQL注入逗号绕过 1.联合查询显注绕过逗号 在联合查询时使用 UNION SELECT 1,2,3,4,5,6,7..n 这样的格式爆显示位,语句中包含了多个逗号,如果有WAF拦截了逗号时,我们的联 ...

  2. [kuangbin带你飞]专题一 简单搜索 回顾总结

    第二题:bfs,忘了将queue清空. 第三题:bfs,记得使用vis数组,防止重复入队

  3. Amazon Headlines Update on Activity in US West Coast Ports

    According to news reports, freighter cargo may not be offloaded at U.S. West Coast ports from Februa ...

  4. ES6的新特性(2)——let 与 const 增强变量声明

    let 与 const 增强变量声明 ES6 新增了let命令,用来声明局部变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束. 先看个var的常见 ...

  5. Beta冲刺第二周王者荣耀交流协会第三次会议

    1.例会照片: 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐 master:袁玥 2.时间跨度: 2017年11月19日 17:00 — 17:11,总计11分钟. 3.地 点: 一食堂 ...

  6. tensorflow之曲线拟合

    视频链接:https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/ 1.定义层 定义 add_layer() from __f ...

  7. Alpha 冲刺(9/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...

  8. Java 将数字转为16进制,然后转为字符串类型

    public class ArrayTest3 { public static void main(String[] args){ System.out.println(toHex(60)); } / ...

  9. 在.net项目中使用Consul

    1.创建.net core web程序并运行 2.在Consul中注册该服务 Consul支持两种服务注册的方式,一种是通过Consul的服务注册HTTP API,由服务自身在启动后调用API注册自己 ...

  10. Spring+Netty4实现的简单通信框架

    参考:http://cpjsjxy.iteye.com/blog/1587601 Spring+Netty4实现的简单通信框架,支持Socket.HTTP.WebSocket_Text.WebSock ...