在Linux系統中一切都是文件,而配置一個服務器就是在修改其配置文件的參數。而且在日常工作中大家也肯定免不了要編寫文檔,這些工作都是通過文本編輯器來完成的。
Vim之所以能得到廣大廠商與用於的認可,原因在於Vim編輯器中設置了三種模式——命令模式,末行模式和編輯模式,每種模式分別又支持多種不同的命令快捷鍵,這大大提高了工作效率,而且用戶在習慣之后也會覺得相當順手。要想高效率地操作文本,就必須先搞清這三種模式的操作區別以及模式之間的切換方法。
命令模式:控制光標移動,可對文本進行復制,粘貼,刪除和查找等工作。
輸入模式:正常的文本錄入。
末行模式:保存或退出文檔,以及設置編輯環境。
Vim編輯器模式的切換方法
在每次運行Vim編輯器時,默認進入命令模式,此時需要先切換到輸入模式后再進行文檔編輯工作,而每次在編寫完文檔后需要先返回命令模式,然后在進入末行模式,執行文檔的保存或退出操作。在Vim中,無法直接從輸入模式切換到末行模式。
Vim中常用的命令
命令 作用
dd 刪除(剪切)光變所在整行
5dd 刪除(剪切)從光標處開始的5行
yy 復制光標所在整行
5yy 復制從光標處開始的5行
n 顯示搜索命令定位到的下一個字符串
N 顯示搜索命令定位到的上一個字符串
u 撤銷上一步的操作
p 將之前刪除(dd)或復制(yy)過的數據粘貼到光標后面
末行模式主要用於保存或退出文件,以及設置Vim編輯器的工作環境,還可以讓用戶執行外部的Linux命令或跳轉到所編寫文檔的特定行數。要想切換到末行模式,在命令模式中輸入一個冒號就可以了。
末行模式中可用的命令
命令 作用
: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系統內部的通信媒介,除了能夠支持各種變量與參數外,還提供了諸如循環,分支等高級編程語言才有的控制結構特性。想要正確使用shell中的這些功能特性,准確下達命令尤為重要。shell腳本命令的工作方式有兩種:交互式和批處理。
交互式:用戶每輸入一條命令就立即執行
批處理: 由用戶事先編寫好一個完整的shell腳本,shell會一次性執行腳本中諸多的命令。
在shell腳本中不僅會用到前面學習過的很多Linux命令以及正則表達式,管道符,數據流重定向的語法規則,還需要把內部功能模塊化后通過邏輯語句進行處理,最終形成日常所見的shell腳本。
編寫簡單的腳本
在看完上文中有關shell腳本的復雜描述后。但是,上文指的是一個高級shell腳本的編寫原則,其實使用Vim編輯器把Linux命令按照順序依次寫入到一個文件中,這就是一個簡單的腳本了。
shell腳本文件的名稱可以任意,但為了避免被誤以為是普通文件,建議將.sh后綴加上,以表示是一個腳本文件。腳本中實際上出現三種不同的元素:第一行的腳本聲明(#!)用來告訴系統使用那種shell解釋器來執行該腳本;第二行的注釋信息(#)是對腳本功能和某些命令的介紹信息,是自己或他人在日后看到這個腳本內容時,可以快速知道該腳本的作用或一些警告信息;第三,四行的可執行語句也就是我們平時執行的Linux命令了。
接受用於的參數
像上面這樣的腳本程序只能執行一些預先定義好的功能,未免太過死板了。為了讓shell腳本程序更好地滿足用戶的一些實時需求,以便靈活完成工作,必須要讓腳本程序能夠像之前執行命令時那樣,接收用戶輸入的參數。
其實,Linux系統中的shell腳本語言早就考慮到了這些,已經內設了用於接收參數的變量,變量之間可以使用空格間隔。例如$0對應的是當前shell腳本程序的名稱,$#對應的是總共有幾個參數,$*對應的是所有位置的參數值,$?對應的是顯示上一次命令的執行返回值,而$1,$2,$3.......則分別對應着第N個位置的參數值。
2020-09-22 17:09:19