Vim 編譯器
Vim 文件編譯器是編寫文件的好工具,它包括以下 3 種模式:
- 命令模式:移動光標,對文本進行增刪查改等操作;
- 輸入模式:向文件中輸入文本;
- 末行模式:保存或退出文檔,設置編輯環境。
使用 Vim 編譯器時進入的是命令模式,通過 “a、i、o” 三個鍵可以切換為輸入模式。“a” 鍵在光標的后一位進入輸入模式,“i” 鍵在光標的當前位置進入,“o” 鍵則是在光標下面創建一個空行。
Vim 編輯器的常用命令如下:
命令 | 作用 |
---|---|
dd | 刪除光標所在整行 |
(數字)dd | 刪除光標處開始的 n 行 |
yy | 復制光標處所在整行 |
(數字)yy | 復制刪除光標處開始的 n 行 |
n | 顯示搜索命令定位到的下一個字符串 |
N | 顯示搜索命令定位到的上一個字符串 |
u | 撤銷上一步操作 |
p | 將之前復制或刪除的數據粘貼到光標后面 |
進入輸入模式編輯好文本后,按 ESC 鍵回到命令模式,然后按 “:” 進入末行模式進行文本的保存和退出。
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:q! | 強制退出 |
:wq! | 保存強制退出 |
:set nu | 顯示行號 |
:set nonu | 不顯示行號 |
:命令 | 執行命令 |
:整數 | 跳轉到該行 |
: s/字符串a/字符串b | 將當前光標所在行的第一個字符串 a 替換為字符串 b |
: s/字符串a/字符串b/g | 將當前光標所在行的所有字符串 a 替換為字符串 b |
:%s/字符串a/字符串b/g | 將全文的字符串 a 替換為字符串 b |
?字符串 | 在文本中從下到上搜索字符串 |
/字符串 | 在文本中從上到下搜索字符串 |
Shell 腳本
將一系列 Linux 命令用 Vim 編輯器寫到一個文件中,將這個文件的后綴名改為 .sh 就可以建立一個 Shell 腳本了。
vim example.sh
腳本中第一行需要用 “#!” 聲明要使用哪種 Shell 解釋器來執行腳本,而單一的 “#” 則是注釋,一個簡單的 Shell 腳本如下:
#!bash example.sh
#Hello,world!
echo Hello,world!
運行 Shell 腳本可以直接用 bash 解釋器運行,也可以用腳本的路徑來運行。
bash example.sh
./example.sh
參數
運行 Shell 腳本時可以向腳本傳參,寫法是在調用 Shell 腳本文件后面用空格間隔寫上多個參數。一些用於接收參數的變量為:
變量 | 存儲內容 |
---|---|
$0 | Shell 腳本程序的名稱 |
$# | 參數的總數 |
$* | 所有位置的參數值 |
$? | 顯示上一次命令的返回值 |
$數字 | 第 n 個傳入的參數值 |
條件表達式
測試語句
Shell 的測試語句用於判斷表達式是否成立,條件成立返回數字 0,否則返回其他數據。測試語句的格式如下所示,注意中括號和表達式之間都有一個空格。
[ 條件表達式 ]
條件表達式自然支持邏輯運算符了,Shell 表達式支持 3 種邏輯運算符。“&&” 表示邏輯與,只有前面的語句執行成功后才會執行后面的語句。“||” 表示邏輯或,前面的語句執行失敗后才會執行后面的語句。“!” 表示邏輯非,邏輯非會把條件測試中的結果取相反的值。例如:
[ -e /dev/cdrom ] && echo "Exist"
[ $USER = root ] || echo "user"
[ ! $USER = root ] || echo "administrator"
在用其他編程語言時,我們可能不是很關心語句是否執行,只關心表達式的運算結果。但是在 Shell 腳本來說要很注意語句的執行順序,某個語句是否執行將產生很大的不同。
文件測試運算符
Shell 腳本對於不同的數據,使用的是不同的運算符進行比較。文件測試運算符有:
運算符 | 作用 |
---|---|
-d | 測試文件是否為目錄類型 |
-e | 測試文件是否存在 |
-f | 判斷是否為一般文件 |
-r | 測試當前用戶是否有讀權限 |
-w | 測試當前用戶是否有寫權限 |
-x | 測試當前用戶是否有執行權限 |
例如:
[ -d /etc/fstab ]
[ -f /etc/fstab ]
數字比較運算符
運算符 | 作用 |
---|---|
-eq | = |
-ne | != |
-gt | > |
-lt | < |
-le | ≤ |
-ge | ≥ |
例如:
[ 10 -gt 10 ]
[ 10 -ep 10 ]
字符串比較運算符
運算符 | 作用 |
---|---|
= | 比較字符串是否相同 |
!= | 比較字符串是否不同 |
-z | 比較字符串是否為 null |
例如:
[ -z $String ]
[ $LANG != “en.US” ] && echo "Not en.US"
流程測試語句
條件語句
if 條件語句
if 條件測試操作 1
then 命令序列 1
elif 條件測試操作 2
then 命令序列 2
else
命令序列 3
fi
case 條件語句
case 變量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
*)
默認命令序列
esac
循環語句
for 循環
for 變量名 in 取值列表
do
命令序列
dono
while 循環
while 條件測試操作
do
命令序列
done
計划服務
Linux 可以在指定的時間段啟用或停止某些服務或命令,實現服務器自動化運行。
一次性計划任務
一次性計划任務指的是設置之后只在指定時間執行一次,一般用於臨時工作需求。
命令 | 功能 |
---|---|
at 時間 | 設置在指定時間運行的指令 |
at -l | 查看已設置但是未執行的一次性任務 |
atrm 任務序號 | 刪除序號對應的任務 |
長期性計划任務
長期性計划任務可以實現按照某個時間周期完成任務,使用 Linux 的 crond 服務可以實現。
命令 | 功能 |
---|---|
crontab -e | 創建、編輯任務 |
crontab -l | 查看當前任務 |
crontab -r | 刪除某個任務 |