每日一道shell腳本練習(01)
阿新 • • 發佈:2018-04-09
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. 擴展知識
-
shell 中反引號可以表示一個命令的結果,通常給變量賦值,例如下面的命令:
# n=`wc -l /etc/passwd | awk ‘{print $1}‘` # echo $n 29
-
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
- ">" 為正確重定向,我們運行一條命令時,有正確的信息輸出,也有可能會有錯誤的信息輸出。與 > 相對應的,就有一個 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)