习题分析
本题有两个核心知识点:
1. 如何自动表示当天的日期 2. 磁盘使用情况
# 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: 没有那个文件或目录
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/120404.html