习题分析

本题有两个核心知识点:

  1. 如何自动表示当天的日期

  2. 磁盘使用情况

打印日期的命令为 date,示例命令如下:

  # date

  2017 年 12 月 20 日 星期三 16:26:55 CST

而题目中要求的格式为应该是:2017-12-20,date 命令是有这样的功能的,示例命令如下:

  # date +%Y-%m-%d

  2017-12-20

  或者:

  # date +%F

  2017-12-20

磁盘使用情况,我们用命令 df -h 实现,示例命令如下:

  # df -h

  文件系统 容量 已用 可用 已用% 挂载点

  /dev/vda1 99G 1.8G 92G 2% /

  devtmpfs 911M 0 911M 0% /dev

  tmpfs 920M 0 920M 0% /dev/shm

  tmpfs 920M 336K 920M 1% /run

  tmpfs 920M 0 920M 0% /sys/fs/cgroup

  tmpfs 184M 0 184M 0% /run/user/0
习题答案

有了上面的分析之后,我们最终得到本题答案:

  #! /bin/bash

  d=`date +%F`

  logfile=$d.log

  df -h > $logfile
 
答案解析

把当天日期赋值给变量 d,从而定义每日的日志文件名,最终把磁盘使用情况的结果直接输入到该日志里。这里的>,比较特殊它可以把该符号左边的结果写入到该符号右边的文件里。

扩展知识点

1. shell 中反引号可以表示一个命令的结果,通常给变量赋值,示例命令如下:

  # n=`wc -l /etc/passwd|awk '{print $1}'`

  # echo $n

  23

2. date 命令还有诸多用法,示例如下:

  # date +%H ##小时

  16

  # date +%M ##分钟

  38

  # date +%S ##秒

  55

  # date +%T ##时间

  16:39:31

  # date +%w ##星期

  3

  # date -d "-1 day" +%F ##一天以前

  2017-12-19

3. >为正确重定向,我们运行一条命令时,有正确的输出信息也有错误的输出信息,>会把正确的输出信息写入到指定文件里,与其对应的还有一个错误重定向符号 2>,顾名思义它会把错误信息写入到指定文件里。示例如下:

  # ls /etc/passwd /etc/nofile ##其中/etc/nofile 是不存在的,所以会报错

  ls: 无法访问/etc/nofile: 没有那个文件或目录

  /etc/passwd

  # ls /etc/passwd /etc/nofile > /tmp/log 2>/tmp/error

  # cat /tmp/log

  /etc/passwd

  # cat /tmp/error

  ls: 无法访问/etc/nofile: 没有那个文件或目录

案例二:shell脚本获取当前日期和时间及磁盘使情况的更多相关文章

  1. shell脚本:统计分析 /home/ 目录用户磁盘使用情况

    一.统计单台机器 /home/ 目录下磁盘空间使用 top3 的用户 common.sh 脚本用于统计 /home/* 目录下存储空间 top3 的用户. du -sb /home/* |sort - ...

  2. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  3. PHP获取当前日期和时间的方法

    PHP获取当前日期和时间的方法 来源:wikiHow   时间:2014-12-04 14:49:45   阅读数:7240 分享到:0 [导读] PHP是用来创建网络中动态内容的常见语言,因此PHP ...

  4. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  5. 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址

    1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...

  6. 014-交互式Shell和shell脚本获取进程 pid

    Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...

  7. java如何获取当前日期和时间

    System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的.例如: 15431 ...

  8. JS小知识--获取当前日期的时间和上周五时间

    获取当前日期的时间和上周五时间 var today=new Date();//获取当前时间var weekday=today.getDay();//获取星期几    var monday=new Da ...

  9. 通过shell脚本获取日期,并赋给变量

    通过shell获取当前8位日期,并赋给变量,并且使用变量作为文件名,建立文件夹 代码如下: ls_date=`date +%Y%m%d` mkdir ${ls_date} 上面两句代码虽然简单 但是在 ...

随机推荐

  1. manjaro20配置matebook fn驱动

    安装fn驱动 https://github.com/aymanbagabas/Huawei-WMI Latest release中下载并安装 matebook-applet_2.4.8_amd64.d ...

  2. golang中的go get命令

    ### 下载指定版本 go get k8s.io/klog@v1.0.0 go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装. 这个命令在内部实际上分成了两 ...

  3. while...break 实例

    // 输出1-100内前5个可以被3整除的数 public class Demo { public static void main(String[] args) { int num = 0; for ...

  4. 使用XmlWriter写入XML

    麻了..整理完了发现XmlWriter不能添加元素,只能重写,还是得用Xdocument..好像DOM能实现添加元素 点击查看代码 **MemoryStream msXml = new MemoryS ...

  5. 多源最短路-Floyd

    题目描述 时间限制:5.0s 内存限制:256.0MB 问题描述 给定\(n\)个结点两两之间的单向边的长度,求两两之间的最短路径. 输入格式 输入第一行包含一个整数\(n\),表示点数. 接下来\( ...

  6. 使用Xamarin开发移动应用示例——数独游戏(八)使用MVVM实现完成游戏列表页面

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们已经完成了游戏的大部分功能,玩家可以玩预制的数独游戏,也可以自己添加 ...

  7. Java8-Consumer、Supplier、Predicate和Function方法总结

    这几个接口都在 java.util.function 包下的,分别是Consumer(消费型).supplier(供给型).predicate(谓词型).function(功能性): 那么,下面,我们 ...

  8. Jackson 高级应用

    转自:https://www.ibm.com/developerworks/cn/java/jackson-advanced-application/index.html 格式处理(含日期格式) 不同 ...

  9. Mybatis返回插入数据的主键的两种方式

    方式一: 需要在映射文件中添加如下片段: <insert id="insertProduct" parameterType="domain.model.Produc ...

  10. 利用纯代码写出一个秒表表盘的方法 —— #DF

    @interface ViewController () @property (nonatomic, strong) CALayer *secLayer; // 秒针layer @property ( ...