Linux Vim 編輯器編寫 Shell 腳本


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 刪除某個任務

參考資料

Linux就該這么學


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM