[完全用 GNU/Linux 工作] 10. Shell Script
Shell script 說穿了就是把 bash 各種的指令 (command) 包進一個 script 裡,並搭配條件判斷式、迴圈 (loop) 及應付各種狀況,更可與排程 (Cron Job) 結合進行週期性的作業。
隨著使用的指令及撰寫的 script 增加,對電腦的整體觀念及熟悉度也會隨之提升。這種完全操控電腦的招式就藏在日常生活中,等著大家去發現!這就是為什麼凍仁會堅持要學習指令的原因,依賴圖形介面是難以得到累積的。以下就讓凍仁介紹些 script。
原先凍仁都習慣用自己寫的 wget-list.sh 來批次下載指定的檔案,但後來發現 wget 早就支援指定檔案下載的參數 -i 於此跟大家分享。
相信 MD5 批次驗證一功能在 Windows 上有不少的替代方案。但如果能直接在效能極佳的伺服器上進行離線作業不是更好?這支簡單的 script 是個讓凍仁提早下班的壓箱寶呢!
2.1. 建立批次產生驗證檔 script。 [mirror]
2.2. 建立批次驗證 script。 [mirror]
2.3. 觀看當前目錄之檔案。
2.4. 將欲驗證檔寫入 list.txt
2.5. 批次產生 MD5 驗證檔。
2.6. 批次進行 MD5 驗證並儲存紀錄,事後就可藉由紀錄檔觀看整體的執行結果。
隨著使用的指令及撰寫的 script 增加,對電腦的整體觀念及熟悉度也會隨之提升。這種完全操控電腦的招式就藏在日常生活中,等著大家去發現!這就是為什麼凍仁會堅持要學習指令的原因,依賴圖形介面是難以得到累積的。以下就讓凍仁介紹些 script。
1. 使用 wget 下載指定檔案內的連結
原先凍仁都習慣用自己寫的 wget-list.sh 來批次下載指定的檔案,但後來發現 wget 早就支援指定檔案下載的參數 -i 於此跟大家分享。
[ jonny@wheezy ~ ]
$ wget -i list.txt Enter
2. 使用 MD5 進行批次驗證
相信 MD5 批次驗證一功能在 Windows 上有不少的替代方案。但如果能直接在效能極佳的伺服器上進行離線作業不是更好?這支簡單的 script 是個讓凍仁提早下班的壓箱寶呢!
2.1. 建立批次產生驗證檔 script。 [mirror]
[ jonny@wheezy ~ ]
$ vi md5-make.sh Enter
1 #!/bin/bash 2 # Filename: md5-make.sh 3 # Info: make md5sum fils with list.txt 4 5 for X in $(cat list.txt); do 6 7 # 依序使用 md5sum 檢查當前目錄下所有檔案,並將其儲存其結果。 8 echo "md5sum $X > $X.sum " | bash 9 10 done 11
2.2. 建立批次驗證 script。 [mirror]
[ jonny@wheezy ~ ]
$ vim md5-check.sh Enter
1 #!/bin/bash 2 # Filename: md5-check.sh 3 # Info: use md5sum check fils with list.txt 4 5 for X in $(cat list.txt); do 6 7 # 依序檢查當前目錄下所有的 .sum。 8 echo "md5sum -c $X.sum" | bash 9 10 # 使用背景執行 (&) 是個很好的加速方法,但當檔案過大或過多時會導致系統過於忙碌而無法進行其它作業。 11 #echo "md5sum -c $X.sum" | bash & 12 13 done 14
2.3. 觀看當前目錄之檔案。
[ jonny@wheezy ~ ]
$ ls Enter
index.htm index.html index.php md5-check.sh md5-make.sh
2.4. 將欲驗證檔寫入 list.txt
[ jonny@wheezy ~ ]
$ ls index.* > list.txt; cat list.txt Enter
index.htm
index.html
index.php
2.5. 批次產生 MD5 驗證檔。
[ jonny@wheezy ~ ]
$ ./md5-make.sh Enter
2.6. 批次進行 MD5 驗證並儲存紀錄,事後就可藉由紀錄檔觀看整體的執行結果。
[ jonny@wheezy ~ ]
$ ./md5-check.sh | tee md5-result.log Enter
index.htm: OK
index.html: OK
index.php: OK
本文同步發佈於 iT 邦幫忙。
站內連結:
★凍仁於 GitHub 上的 Shell script
★凍仁的筆記: Shell script
相關連結:
★鳥哥的 Linux 私房菜 -- 學習 Shell Scripts
★柏青哥的 SuSE Linux -- 簡易的 Shell Scripts
★FreeBSD 6.0 架設管理與應用 -- 第二十一章 Shell Scripts
留言
張貼留言
喜歡這篇文章嗎?歡迎在底下留言讓凍仁知道。😉