Vim編輯器和Shell命令腳本
Vim文本編輯器
Vim文本編輯器內設有三種模式:命令模式、末行模式和編輯模式。
命令模式:控制光標移動,可對文本進行刪除、復制、粘貼和查找等工作。
輸入模式:正常的文本錄入。
末行模式:保存、退出與設置編輯環境。

命令模式和末行模式下的一些快捷鍵:

末行模式下的命令:

Shell命令腳本
Shell終端解釋器類似人與計算機硬件的翻譯官,作為用戶與Linux系統內部通訊的媒介。Shell腳本命令的工作方式有兩種,首先是前面所接觸的交互方式,即當用戶每輸入一條命令就執行一次,而批量處理則是用戶事先編好一個完整的Shell腳本,Shell會一次性執行腳本中諸多的命令。可以通過SHELL變量查看系統當前已經默認使用bash解釋器作為命令行終端了。

編寫簡單的腳本
使用vim編輯器把Linux命令按照順尋一次寫入文件就是編寫完成一個最簡單的腳本,下體是編寫一個查看當前所在工作路徑並列出目錄下所有文件及屬性信息。


Shell腳本的名稱可以任意起,行業規范腳本文件的后綴一般是.sh,腳本內容中:#!表示用何種shell解釋器來執行腳本程序,#表示注釋信息,后面就是命令行。執行腳本的方法有兩種:第一種是如上圖使用“解釋器 shell腳本”運行,這樣系統則會忽略掉腳本內容中的#!內容,第二種是輸入完整路徑的方式來執行,但是系統會默認因為權限不足而提示報錯信息,這時需要為腳本文件增加權限。
接收用戶的參數
腳本中定義了很多變量功能,例如“$0”對應當前shell腳本程序的名稱,“$#”對應總共有幾個參數,“$*”對應所有位置的參數值,而“$1”“$2”等對應第N個位置的參數。


判斷用戶的參數
為了判斷用戶輸入的參數,需要使用條件測試語法,若條件成立則返回0,否則則返回其他隨機數值。測試語句格式:[ 條件表達式 ]兩邊均有一個空格,條件判斷語句按測試對象可分為文件測試、邏輯測試、整數值比較與字符串比較.
文件測試
文件測試是按照指定條件來判斷文件是否存在或者權限是否滿足,具體參數為:


通過$?得到上一條命令的返回值
邏輯測試
邏輯測試則是判斷用戶給出的條件是為真還是假,從而把條件測試語句與邏輯語句相搭配結合使用可以實現一個更高級的使用方法,例如在Shell終端中邏輯“與”符號是&&,它代表當前面的命令執行成功后才會執行后面的命令。

“或”符號是“||”,其代表前面的命令執行失敗后才會執行后面的命令

整數值比較
整數比較運算符是僅對數字的測試操作,不能把數字與字符串、文件等內容一起操作,而且不能想當然的使用日常生活中的等號、大於號、小於號等來做判斷,因為等號與是賦值命令符沖突,大於號和小於號分別是和輸出重定向命令符和輸入重定向命令符沖突。雖然有時候碰巧也能執行成功,但是在后面腳本程序中普遍會產生錯誤,一定要使用規范的整數比較運算符來進行操作:


字符串比較
字符串比較是判斷測試字符串是否為空值,或兩個字符串是否相同的操作,常常用來判斷某個變量是否未被定義(即內容為空值),常用參數:


流程控制語句
if條件測試語句
單分支結構(if-then-fi)

shell腳本文件:如果在linux目錄中不存在hahaha文件,則創建hahaha文件
測試結果:

雙分支結構(if-then-else-if)
多重分支(if-then-elif-then-else-fi)

如果成績大於85小於100,則輸出excellent等等...
測試結果:

for條件循環語句
格式:
for 變量名 in 取值列表
do
命令序列
done
下面是批量創建用戶的例子:

第1行的read命令是讀取客戶輸入的值作為變量PASSWD的值,-p參數是為了輸出提示語句。
第6行的id $UNAME命令可查看是否存在該用戶,&>表示不管前面命令輸出的是正確結果還是錯誤結果,都將輸出信息重定向到/dev/null,/dev/null是被稱作Linux黑洞的文件,把輸出信息重定向到這個文件后等同於刪除數據(沒有回收功能的垃圾箱),讓用戶的屏幕窗口保持簡潔。
第7行表示如果id $UNAME執行成功,則說明該用戶存在。
第11,12行則是添加用戶的命令和設置密碼的命令。
注意:變量間的相加在linux系統中默認是字符串相加,例如:

要實現兩個變量的值相加,需要使用expr命令將字符串轉換為數字

while條件循環
格式:
while 條件測試操作
do
命令序列
done
利用while寫一個猜價格的腳本

測試結果

case條件測試
格式:
*case 變量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
)
默認命令序列
esac
測試:


計划任務服務程序
一次性計划任務(使用at命令行)
例子:

使用atrm + 編號可以刪除對應編號的計划任務

周期性計划任務
可以使用Linux系統中默認啟用的crond服務創建任務。創建、編輯計划任務的命令為crontab -e,查看當前計划任務的命令為crontab -l,刪除某條計划任務的命令為crontab -r,如果使用管理員登陸系統,可以用crontab -u來編輯他人的任務。口訣:分、時、日、月、星期。

需要說明的是,除了用逗號來表示多個時間段,例如”8,9,12”表示8月,9月和12月;還可以用減號來表示連續的時間周期(例如字段“日”的取值為“12-15”,則表示每月的12~15日)。以及用除號(/)表示執行任務的間隔時間(例如“*/2”表示每隔2分鍾執行一次任務)。
另外,在crond服務的計划參數中,所用命令一定要用絕對路徑的方式來寫,如果不知道絕對路徑,可以用whereis命令進行查詢,絕對路徑為輸出信息的加粗部分。
