1. 程式人生 > 其它 >Linux中Vim編輯器與Shell命令指令碼

Linux中Vim編輯器與Shell命令指令碼

  • 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指令碼
  1. 指令碼的組成

  第一行的指令碼宣告(#!)用來告訴系統使用哪種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條件測試語句
  1. if 單分支

  

   2.if 雙分支

  

  3.if 多分支

  

  • for條件迴圈語句

  • while條件迴圈語句

  

  • case條件測試語句

  • 書本筆記截圖: