iT邦幫忙

DAY 10
5

完全用 GNU/Linux 工作系列 第 10

[完全用 GNU/Linux 工作] 10. Shell Scripts

熟悉各種指令 (動作) 後,就可將它組成 Shell Scripts (招式),來應付各種狀況 (敵人)。這種高度客製化是 Windows 所不及的,(本文同步發佈於 凍仁的筆記)。
Shell Scripts 說穿了就是把 bash 各種指令包進一個 Scripts 裡,並搭配條件判斷式、迴圈及應付各種狀況,更可與排程 (Cron Job) 結合進行週期性的作業。

隨著使用的指令及撰寫的 Scripts 增加,對電腦的整體觀念及熟悉度也會隨之提升。這種完全操控電腦的招式就藏在日常生活中,等著大家去發現!這就是為什麼凍仁會堅持要學習指令的原因,依賴圖形介面是難以得到累積的。以下就讓凍仁介紹些 Scripts。

使用 wget 下載指定檔案內的連結

原先凍仁都習慣用自己寫的 wget-list.sh 來批次下載指定的檔案,但後來發現 wget 早就支援指定檔案下載的參數 -i 於此跟大家分享。

	$ wget -i list.txt

使用 MD5 進行批次驗證

相信 MD5 批次驗證一功能在 Windows 上有不少的替代方案。但如果能直接在效能極佳的伺服器上進行離線作業不是更好?這支簡單的 Scripts 是個讓凍仁提早下班的壓箱寶呢!

建立批次產生驗證檔 Scripts [mirror]

	$ cat md5-make.sh
	#!/bin/bash
	# Filename: md5-make.sh
	# Info:		make md5sum fils with list.txt
	
	for X in $(cat list.txt); do
	
		# 依序使用 md5sum 檢查當前目錄下所有檔案,並將其儲存其結果。
		echo "md5sum $X > $X.sum " | bash
	
	done

建立批次驗證 Scripts [mirror]

	$ cat md5-check.sh 
	#!/bin/bash
	# Filename: md5-check.sh
	# Info:		use md5sum check fils with list.txt
	
	for X in $(cat list.txt); do
	
		# 依序檢查當前目錄下所有的 .sum。
		echo "md5sum -c $X.sum" | bash
	
		# 使用背景執行 (&) 是個很好的加速方法,但當檔案過大或過多時會導致系統過於忙碌而無法進行其它作業。
		#echo "md5sum -c $X.sum" | bash &
	
	done

觀看當前目錄之檔案。

	$ ls
	index.htm  index.html  index.php  md5-check.sh  md5-make.sh

將欲驗證檔寫入 list.txt

	$ ls index.* > list.txt; cat list.txt
	index.htm
	index.html
	index.php

批次產生 MD5 驗證檔。

	$ ./md5-make.sh

批次進行 MD5 驗證並儲存紀錄,事後就可藉由紀錄檔觀看整體的執行結果。

	$ ./md5-check.sh | tee md5-result.log
	index.htm: OK
	index.html: OK
	index.php: OK

相關連結

« 回到 [完全用 GNU/Linux 工作]


上一篇
[完全用 GNU/Linux 工作] 09. Hacking Bash
下一篇
[完全用 GNU/Linux 工作] 14. 色碼擷取器 - Gpick vs Gcolor2
系列文
完全用 GNU/Linux 工作28
0
timloo
iT邦研究生 2 級 ‧ 2013-09-30 09:44:06

依你所舉的例子:

是要檢查一個目錄內的檔案,是否被別人修改過嗎?

這是很機密的目錄嗎?

那應該要把$X.sum放在別的目錄,比較安全吧??

這種用途還不錯。

如果是更動很頻繁的檔案,這樣做就比較沒必要了!

當初是備份 MySQL DB 後要移至其它地方,前後需確保檔案的完整性而撰寫的 Scripts。

修改的部份曾看到友人把整個網站丟到 Git 裡面的 XD

我要留言

立即登入留言