shell脚本 + date命令语法

讲到shell,最想说的是,真的没有任何好方法,也没有任何捷径。野路子,,,遇到不会的,那就度娘呗,学呗,练呗,一个月不行半年,半年不行一年,我就不信了。

脚本能干啥?

shell脚本可以实现自动化运维,能大大增加我们的运维效率!

构成+执行

  • 开头需要加#! /bin/bash
  • 以#开头的行作为解释说明
  • 脚本的名字以.sh结尾,用于区分这是一个shell脚本
  • 执行方法有两种
  • chmod +x 1.sh; ./1.sh
  • bash 1.sh
  • 查看脚本执行过程 bash -x 1.sh
  • 查看脚本是否语法错误 bash -n 1.sh

一、date命令语法

后期的各种场景我们都会用到shell,经常用到的就是使用date做一些标记,例如日志分割,。

# date      //单纯的显示当前日期
2017年 09月 12日 星期二 21:26:09 CST

[[email protected] ~]# date +%Y   // 单纯的四位数  “年”
2017
[[email protected] ~]# date +%y   // 二位数    “年”
17
[[email protected] ~]# date +%M   // Minute “分钟”
32
[[email protected] ~]# date +%m   // Month    “月份”
09
[[email protected] ~]# date +%S   // Second   “秒”
21
[[email protected] ~]# date +%H   // Hour     “小时”
21
[[email protected] ~]# date +%d   // date     “日期”
12
[[email protected] ~]# date +%D   //  安装如何英文格式输出    “年月日”
09/12/17

二、组合显示

[[email protected] ~]# date +%Y%m%d       // 四位数   “年月日”
20170912

[[email protected] ~]# date +%y%m%d       // 二位数   “年月日”
170912

[[email protected] ~]# date +%F           // 特殊格式 “年月日”
2017-09-12

[[email protected] ~]# date +%T           // 特殊格式 “时分秒”
21:40:22

[[email protected] ~]# date +%H%M%S       // 组合式   “时分秒”
214500

[[email protected] ~]# date +%H:%M:%S     // 自定义   “时分秒”
21:45:07

[[email protected] ~]# date +%w           // week     “周几”
2

[[email protected] ~]# date +%W           // 第几周   
37

三、特殊需求显示

有时候我们在做日志切割的时候往往都是在00:00来操作,但是这个时候切割的日志已经算是今天的了,那么我们如何能够写上昨天的呢?

[[email protected] ~]# date -d "-1 day" +%F       // 昨天
2017-09-11

[[email protected] ~]# date -d "-1 month" +%F     // 上个月
2017-08-12

[[email protected] ~]# date -d "-1 years" +%F     // 上年
2016-09-12

[[email protected] ~]# date -d "-1 hour" +%T      // 过去的一小时
21:00:33

[[email protected] ~]# date +%s           // 从1970年到现在已经过去多少秒了   “时间戳”    
1505225506

换算某个时间点的时间戳:(2018年8月8号8时8分8秒离1970年过去了多少秒)
[[email protected] ~]# date +%s -d "2018-08-08 08:08:08"
1533686888

根据时间戳 得到一个具体的时间
[[email protected] ~]# date -d @1533686888
2018年 08月 08日 星期三 08:08:08 CST

shell中的变量

当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替,非常方便且能提高效率节省时间。

  • 使用条件语句时,常使用变量 if [ $a -gt 1 ]; then … ; fi
  • 引用某个命令的结果时,用变量替代 n=wc -l 1.txt
  • 写和用户交互的脚本时,变量也是必不可少的 read -p “Input a number: ” n; echo $n 如果没写这个n,可以直接使用$REPLY
  • 内置变量 $0, $1, $2… $0表示脚本本身,$1 第一个参数,$2 第二个 …. $#表示参数个数
  • 数学运算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

也许如上看起来比较费劲,但是后期真正用到脚本中就会很容易去理解了。


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我爱编程

Python DEBUG

>>> l = [3] >>> l() Traceback (most recent call last): File "<pyshell#77>", li...

31140
来自专栏大神带我来搬砖

一步步成为linux大神——bash shell中管道和其他命令分隔符的优先级

一般在bash中,用“|”作为管道,即pipeline,还可以用“;”之类的分隔符连接多个命令。那么下面这个命令的输出是什么呢? date; who |wc 根...

48760
来自专栏点滴积累

shell脚本学习心得

近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习...

31540
来自专栏我的博客

Python调用Shell命令–总有一款适合你

#!/usr/bin/python # -*- coding: utf-8 -*- import os import commands import subpr...

36860
来自专栏大神带我来搬砖

一步步成为linux大神——什么时候bash -c会创建child shell

在服务器上运行 bash -c "python -m SimpleHTTPServer" 此时另一个窗口运行 pstree -sp 10784 # 107...

39860
来自专栏大神带我来搬砖

一步步成为linux大神——bash停止解析选项

一般在bash shell中运行命令时,-a,-v之类的都会被解析为命令的选项,两个减号(double dash)则可以停止选项(option) 例如运行 r...

37540
来自专栏王磊的博客

js 创建快捷方式

<script type="text/javascript" language="javascript"> // 创建快捷方式[浏览器设置要低,ff不支...

35650
来自专栏点滴积累

Fish Shell

今天看到阮一峰同学的一篇博客(Fish shell 入门教程),讲述的非常详细、清楚,有兴趣的可以直接转去查看此文,本文仅提供一下个人使用心得。 一、fish ...

40160
来自专栏我的博客

YII使用命令行模式

入口文件:shell.php run(); 数据库配置文件console.php可以参考main.php 演示protected/commands/TestCo...

38330
来自专栏我的博客

shell多进程进行

需要缩短执行时间 #!/bin/bash line=5000 for((i=0;i<${line};i++)) do ll & done exit 0; ...

34960

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励