编写shell脚本中怎么获取当前日期和时间?磁盘使

作者: admin 分类: shell 发布时间: 2018-02-14 20:29

 

【习题分析】

  本题有两个核心知识点:

  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: 没有那个文件或目录

更多

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!