1. 程式人生 > >每日一道shell腳本練習(01)

每日一道shell腳本練習(01)

shell linux 磁盤檢查

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> 這樣的錯誤重定向符號,它就是負責將命令的錯誤返回信息輸出到指定的文件。例如:
[root@cenvm71 work]# ls /etc/nofile
ls: cannot access /etc/nofile: No such file or directory
上面的這條就是錯誤的提示信息。

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

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

4. 總結

今天的腳本,復習了反引號的用法,date命令和df 這個查看磁盤使用情況的命令。還對這幾個命令進行了擴展學習。

每日一道shell腳本練習(01)