Linux中Vim編輯器與Shell命令指令碼
阿新 • • 發佈:2021-07-11
-
Vim文字編輯器
Vim的釋出最早可以追溯到1991年,英文全稱為:“Vi IMproved”,也就是對vi編輯器的提升版本,其中最大的改進當屬對程式碼的著色功能,亦有些程式設計場景能夠自動修正錯誤程式碼。
三種模式:
命令模式:控制游標移動,可對文字進行復制、貼上、刪除和查詢等工作。
輸入模式:正常的文字錄入。
末行模式:儲存或退出文件,以及設定編輯環境。
命令模式中最常用的一些命令
命令 | 作用 |
dd | 刪除(剪下)游標所在整行 |
5dd | 刪除(剪下)從游標處開始的5行 |
yy | 複製游標所在整行 |
5yy | 複製從游標處開始的5行 |
n | 顯示搜尋命令定位到的下一個字串 |
N | 顯示搜尋命令定位到的上一個字串 |
u | 撤銷上一步的操作 |
p | 將之前刪除(dd)或複製(yy)過的資料貼上到游標後面 |
末行模式中最常用的一些命令
命令 | 作用 |
:w | 儲存 |
:q | 退出 |
:q! | 強制退出(放棄對文件的修改內容) |
:wq! | 強制儲存退出 |
:set nu | 顯示行號 |
:set nonu | 不顯示行號 |
:命令 | 執行該命令 |
:整數 | 跳轉到該行 |
:s/one/two | 將當前游標所在行的第一個one替換成two |
:s/one/two/g | 將當前游標所在行的所有one替換成two |
:%s/one/two/g | 將全文中的所有one替換成two |
?字串 | 在文字中從下至上搜索該字串 |
/字串 | 在文字中從上至下搜尋該字串 |
-
編寫Shell指令碼
- 指令碼的組成
第一行的指令碼宣告(#!)用來告訴系統使用哪種Shell直譯器來執行該指令碼;
第二行的註釋資訊(#)是對指令碼功能和某些命令的介紹資訊,使得自己或他人在日後看到這個指令碼內容時,可以快速知道該指令碼的作用或一些警告資訊;
第三、四行的可執行語句也就是我們平時執行的Linux命令了
#!/bin/bash #For Example pwd ls -al
2.指令碼中接收引數的變數
Linux系統中的Shell指令碼語言已經內設了用於接收引數的變數,變數之間使用空格間隔。例如$0對應的是當前Shell指令碼程式的名稱,$#對應的是總共有幾個引數,$*對應的是所有位置的引數值,
$?對應的是顯示上一次命令的執行返回值,而$1、$2、$3……則分別對應著第N個位置的引數
3.條件測試語句
Shell指令碼中的條件測試語法可以判斷表示式是否成立,若條件成立則返回數字0,否則便返回非零值。條件測試語法的執行格式如圖
按照測試物件來劃分,條件測試語句可以分為4種:
檔案測試語句;
邏輯測試語句;
整數值比較語句;
字串比較語句。
檔案測試所用的引數
操作符 | 作用 |
-d | 測試檔案是否為目錄型別 |
-e | 測試檔案是否存在 |
-f | 判斷是否為一般檔案 |
-r | 測試當前使用者是否有許可權讀取 |
-w | 測試當前使用者是否有許可權寫入 |
-x | 測試當前使用者是否有許可權執行 |
# [ -d /etc/fstab ]
# echo $?
1
邏輯語句用於對測試結果進行邏輯分析,根據測試結果可實現不同的效果。
邏輯與:&& 表示當前面的命令執行成功後才會執行它後面的命令
邏輯或:|| 表示當前面的命令執行失敗後才會執行它後面的命令
邏輯非:! 示把條件測試中的判斷結果取相反值
# [ ! $USER = root ] && echo "user" || echo "root"
# [ ! $USER = root ] || echo "administrator"
整數比較運算子僅是對數字的操作,不能將數字與字串、檔案等內容一起操作,而且不能想當然地使用日常生活中的等號、大於號、小於號等來判斷。
可用的整數比較運算子
操作符 | 作用 |
-eq | 是否等於 |
-ne | 是否不等於 |
-gt | 是否大於 |
-lt | 是否小於 |
-le | 是否等於或小於 |
-ge | 是否大於或等於 |
# [ `free -m | grep Mem: | awk '{print $4}'` -lt 1024 ] && echo "Insufficient Memory"
字串比較語句用於判斷測試字串是否為空值,或兩個字串是否相同。它經常用來判斷某個變數是否未被定義(即內容為空值)
常見的字串比較運算子
操作符 | 作用 |
= | 比較字串內容是否相同 |
!= | 比較字串內容是否不同 |
-z | 判斷字串內容是否為空 |
接下來通過判斷String變數是否為空值,進而判斷是否定義了這個變數:
# [ -z $String ]
# echo $?
0
表明:該變數未被定義,可以使用
4.流程控制語句
- if條件測試語句
- if 單分支
2.if 雙分支
3.if 多分支
- for條件迴圈語句
- while條件迴圈語句
- case條件測試語句
- 書本筆記截圖: