每日一道shell脚本练习(01)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一道shell脚本练习(01)相关的知识,希望对你有一定的参考价值。

0. 引言

准备开一个新坑,每天更新一道shell练习。因为shell脚本属于那种不练习就会生疏,甚至忘记的技能,所以,为了对抗遗忘阻力,我只能不断加强练习了。

1. 第一天练习题目

【题目】
请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2018-04-08.log,并且把磁盘的使用情况写到这个文件中,不用考虑cron,仅仅写脚本即可。

【分析】
第一点,要明白 linux 命令 date 的用法,打印“xxxx-xx-xx”这样的时间格式用date +%F 或者 date +%Y-%m-%d;
第二点,检查磁盘使用情况的命令是:df -h 。

2. 具体脚本

有了上面两点分析,写脚本就很容易了。

#!/bin/bash

name=`date  %F`

logfile=$name.log

df   -h  > $logfile

【脚本分析】
将当天的日期赋值给变量name,然后定义日志文件名logfile。
“>”这个符号在shell 脚本中有输出重定向的功能。它比较特殊,可以将符号左边的输出内容,写入到该符号的右边的文件中。

3. 扩展知识

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

        # n=`wc   -l   /etc/passwd | awk  ‘{print  $1}‘`
    # echo   $n
    
        29
  2. date 还有诸多用法,例如:

    date  +%H      #  小时
    21
    date  +%M     #  分钟
    48
    date  +%S     # 秒钟
    48
    date    +%T   # 时间
    21:49:04
    date   %w    # 星期
    0                 # 从0开始,表示星期日
    date  -d  "-1 day"  +%F   # 表示1天之前,-d 用来进行算术运算
    2018-04-07
    date  -d   "-1 hour"   ‘+%T‘   # 表示 1 小时以前
    20:50:01
  3. ">" 为正确重定向,我们运行一条命令时,有正确的信息输出,也有可能会有错误的信息输出。与 > 相对应的,就有一个 2> 这样的错误重定向符号,它就是负责将命令的错误返回信息输出到指定的文件。例如:
[[email protected] work]# ls /etc/nofile
ls: cannot access /etc/nofile: No such file or directory
上面的这条就是错误的提示信息。

ls   /etc/passwd   /etc/nofile  > /tmp/log   2> /tmp/errorlog

[[email protected] work]# cat /tmp/log
/etc/passwd
[[email protected] work]# cat /tmp/errorlog 
ls: cannot access /etc/nofile: No such file or directory

4. 总结

今天的脚本,复习了反引号的用法,date命令和df 这个查看磁盘使用情况的命令。还对这几个命令进行了扩展学习。

以上是关于每日一道shell脚本练习(01)的主要内容,如果未能解决你的问题,请参考以下文章

每日一道shell练习(06)——检测端口服务

每日一道shell练习(04)

每日一道shell练习(03)

每日一道shell练习(10)——统计字符数

每日一道shell练习(09)——sed处理

shell 脚本之 shell 练习题汇总