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
Linux(六)shell操作实用技巧的更多相关文章
- Linux桌面环境GNOME实用技巧
GNOME是Linux桌面上主流的集成桌面环境之一,GNOME桌面以其风格简洁.操作便捷而受到Linux用户的欢迎.这里将介绍Linux桌面环境GNOME的操作技巧,在这里拿出来和大家分享一下. 下面 ...
- linux中shell编辑小技巧
一.循环1到100 ..};do echo $i done 二.获取100以内的随机值 ] 三.截取字符串 demo= :} #截取3位字符echo ${demo:1} #截取1到最后的字符 希望大家 ...
- 让linux好用起来--操作使用技巧
让linux好用起来--操作使用技巧 1 概述 在一个初学者眼里,linux的 CLI 界面没有图形界面那样多彩和友好,会让人产生畏难心理,但是作为一个稍微进阶的linux玩家,自然会积累不少经验 ...
- Qt实用技巧:使用QTableView、QSqlTableMode与QSqlDatabase对数据库数据进行操作
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78615800 Qt实用技巧:使用QTableView.QSqlTableMode与Q ...
- Linux shell用法和技巧(转)
原文出处: techbar 译文出处: 外刊IT评论 使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某 ...
- Linux shell 操作 postgresql,并设置crontab任务
Linux shell 操作 postgresql:删除间隔日期的数据-删除指定日期的数据-vacuumdb 清理数据库 -清理日志 -定期执行脚本 *修改pg_hba.conf 设置本地连接无密码, ...
- linux下的shell操作mysql
(1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...
- Shell操作相关的快捷键 --Linux
一.shell和bash shell --unix --Bourne shell ,bash --linux --Bourne again shell.bash (GNU Bourne-Again S ...
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
随机推荐
- python-全栈开发-前方高能-内置函数
python_day_14 13. 前方高能-内置函数 ⼀. 本节主要内容: 1. 内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. ...
- 二维DCT变换
DCT(Discrete Consine Transform),又叫离散余弦变换,它的第二种类型,经常用于信号和图像数据的压缩.经过DCT变换后的数据能量非常集中,一般只有左上角的数值是非零的,也就是 ...
- smartgit 过期
进入到安装目录把Setting.xml 文件删除然后,再次打开就可以正常使用了.
- dp算法之硬币找零问题
题目:硬币找零 题目介绍:现在有面值1.3.5元三种硬币无限个,问组成n元的硬币的最小数目? 分析:现在假设n=10,画出状态分布图: 硬币编号 硬币面值p 1 1 2 3 3 5 编号i/n总数j ...
- Python中的构造函数
Python中的构造函数是__init__函数.在Python中,子类如果定义了构造函数,而没有调用父类的,那么Python不会自动调用,也就是说父类的构造函数不会执行. 比如有test.py的mod ...
- 7. I/O复用
一.I/O复用的特点 能同时监听多个文件描述符 自身是阻塞的 当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依次处理其中的每一个文件描述符 由于其第三个特点,所以服务器程序看起来仍 ...
- Linux系统LVS搭建笔记
因为客户是国有企业,且一次性购买了14台服务器(16核),14台中暂且先用8台,其中LVS使用5台,NFS一台主要为了共享WEB系统(多台电脑的1.5T的硬盘容量浪费了).MySQL两台,Memcac ...
- 每日Scrum--No.2
Yesterday:找地图 Today: 找到最适合我们软件的地图版本 Problem:找不到特别匹配的版本
- TCP系列42—拥塞控制—5、Linux中的慢启动和拥塞避免(二)
在本篇中我们继续上一篇文章wireshark的示例讲解,上一篇介绍了一个综合示例后,本篇介绍一些简单的示例,在读本篇前建议先把上一篇读完,为了节省篇幅,本篇只针对一些特殊的场景点报文进行讲解,不会像上 ...
- js实现轮播功能
先上图,效果大概就是这样子: 实现的功能: 1.鼠标经过第几个正方形,就要展示第几张图片,并且正方形的颜色也发生变化 2.图片自动轮播,(这需要一个定时器) 3.鼠标经过图片,图片停止自动播放(这需要 ...