RHCE linux學習第五天

2021-09-25 06:01:48 字數 3096 閱讀 8146

4.1 vim文字編輯器

每當在講課時遇到需要讓學生記住的知識點時,為了能讓他們打起精神來,我都會突然提高嗓門,因此有句話他們記得尤其深刻:「在linux系統中一切都是檔案,而配置乙個服務就是在修改其配置檔案的引數」。而且在日常工作中大家也肯定免不了要編寫文件,這些工作都是通過文字編輯器來完成的。劉遄老師寫作本書的目的是讓讀者切實掌握linux系統的運維方法,而不是僅僅停留在「會用某個作業系統」的層面上,所以我們這裡選擇使用vim文字編輯器,它缺省會安裝在當前所有的linux作業系統上,是一款超棒的文字編輯器。

vim之所以能得到廣大廠商與使用者的認可,原因在於vim編輯器中設定了三種模式—命令模式、末行模式和編輯模式,每種模式分別又支援多種不同的命令快捷鍵,這大大提高了工作效率,而且使用者在習慣之後也會覺得相當順手。要想高效率地操作文字,就必須先搞清這三種模式的操作區別以及模式之間的切換方法(見圖4-1)。

命令模式:控制游標移動,可對文字進行複製、貼上、刪除和查詢等工作。

輸入模式:正常的文字錄入。

第4章 vim編輯器與shell命令指令碼。第4章 vim編輯器與shell命令指令碼。

圖4-1 vim編輯器模式的切換方法

在每次執行vim編輯器時,預設進入命令模式,此時需要先切換到輸入模式後再進行文件編寫工作,而每次在編寫完文件後需要先返回命令模式,然後再進入末行模式,執行文件的儲存或退出操作。在vim中,無法直接從輸入模式切換到末行模式。vim編輯器中內建的命令有成百上千種用法,為了能夠幫助讀者更快地掌握vim編輯器,表4-1總結了在命令模式中最常用的一些命令。

表4-1 vim中常用的命令

命令 作用

dd 刪除(剪下)游標所在整行

5dd 刪除(剪下)從游標處開始的5行

yy 複製游標所在整行

5yy 複製從游標處開始的5行

n 顯示搜尋命令定位到的下乙個字串

n 顯示搜尋命令定位到的上乙個字串

u 撤銷上一步的操作

p 將之前刪除(dd)或複製(yy)過的資料貼上到游標後面

末行模式主要用於儲存或退出檔案,以及設定vim編輯器的工作環境,還可以讓使用者執行外部的linux命令或跳轉到所編寫文件的特定行數。要想切換到末行模式,在命令模式中輸入乙個冒號就可以了。末行模式中可用的命令如表4-2所示。

表4-2 末行模式中可用的命令

命令 作用

:w 儲存

:q 退出

:q! 強制退出(放棄對文件的修改內容)

:wq! 強制儲存退出

:set nu 顯示行號

:set nonu 不顯示行號

:命令 執行該命令

:整數 跳轉到該行

?/one/two 將當前游標所在行的第乙個one替換成two

?/one/two/g 將當前游標所在行的所有one替換成two

:%s/one/two/g 將全文中的所有one替換成two

?字串 在文字中從下至上搜尋該字串

/字串 在文字中從上至下搜尋該字串

4.2 編寫shell指令碼

可以將shell終端直譯器當作人與計算機硬體之間的「翻譯官」,它作為使用者與linux系統內部的通訊媒介,除了能夠支援各種變數與引數外,還提供了諸如迴圈、分支等高階程式語言才有的控制結構特性。要想正確使用shell中的這些功能特性,準確下達命令尤為重要。shell指令碼命令的工作方式有兩種:互動式和批處理。

互動式(interactive):使用者每輸入一條命令就立即執行。

批處理(batch):由使用者事先編寫好乙個完整的shell指令碼,shell會一次性執行指令碼中諸多的命令。

在shell指令碼中不僅會用到前面學習過的很多linux命令以及正規表示式、管道符、資料流重定向等語法規則,還需要把內部功能模組化後通過邏輯語句進行處理,最終形成日常所見的shell指令碼。

4.3 流程控制語句

儘管此時可以通過使用linux命令、管道符、重定向以及條件測試語句來編寫最基本的shell指令碼,但是這種指令碼並不適用於生產環境。原因是它不能根據真實的工作需求來調整具體的執行命令,也不能根據某些條件實現自動迴圈執行。例如,我們需要批量建立1000位使用者,首先要判斷這些使用者是否已經存在;若不存在,則通過迴圈語句讓指令碼自動且依次建立他們。

接下來我們通過if、for、while、case這4種流程控制語句來學習編寫難度更大、功能更強的shell指令碼。為了保證下文的實用性和趣味性,做到寓教於樂,我會盡可能多地講解各種不同功能的shell指令碼示例,而不是逮住乙個指令碼不放,在它原有內容的基礎上修修補補。儘管這種修補式的示例教學也可以讓讀者明白理論知識,但是卻無法開放思路,不利於日後的工作。

4.3.1 if條件測試語句

if條件測試語句可以讓指令碼根據實際情況自動執行相應的命令。從技術角度來講,if語句分為單分支結構、雙分支結構、多分支結構;其複雜度隨著靈活度一起逐級上公升。

圖4-17 單分支的if語句

下面使用單分支的if條件語句來判斷/media/cdrom檔案是否存在,若存在就結束條件判斷和整個shell指令碼,反之則去建立這個目錄:

[root@linuxprobe ~]# vim mkcdrom.sh

#!/bin/bash

dir="/media/cdrom"

if [ ! -e $dir ]

then

mkdir -p $dir

fi由於第5章才講解使用者身份與許可權,因此這裡繼續用「bash 指令碼名稱」的方式來執行指令碼。在正常情況下,順利執行完指令碼檔案後沒有任何輸出資訊,但是可以使用ls命令驗證/media/cdrom目錄是否已經成功建立:

[root@linuxprobe ~]# bash mkcdrom.sh

第4章 vim編輯器與shell命令指令碼。第4章 vim編輯器與shell命令指令碼。

圖4-18 雙分支的if條件語句

學習第五天

清楚測試用例是什麼 測試用例的重要性 有效性 測試用例是測試人員測試過程中的重要參考依據,準確的測試用例的計畫 執行和跟蹤是 測試的有效性的有力證明 可復用性 設計良好的測試用例可以重複執行,能節約時間,提高測試效率 易組織性 清晰詳細的測試用例能夠便於測試執行的開展 可評估性 測試用例的通過率是檢...

Java學習第五天

當類載入器需要載入某個類時,類載入器會在載入初始化後生成該類的乙個類物件 class 用於描述該類的元資料資訊等。在其後的連線過程中,會初始化該類的靜態成員 變數或靜態初始化器 靜態初始化變數和初始化器按照先後順序執行初始化。例如 static int a 10 static 這樣初始化後a 100...

C 學習第五天

c 中的is和as is可用於任何型別。例如 int a 10 a is object true object o 10 o is int true o person o is int false as右側型別必須為引用型別或可空型別。as操作如果失敗,不丟擲異常,而是返回null 結構 struc...