Linux學習筆記——Vim與Shell

這兩天在實訓Linux,特此做一下筆記防止遺忘,參考劉老師的《Linux就該這麼學》

一、Vim文本編輯器

1.引入

“在Linux中一切都是文件,配置一個服務就是在修改其配置文件的參數。”

而我們在日常的Linux運維過程中,就需要編輯各種各樣的文件,所以,這就少不了一款強大的文本編輯器,而在CentOS中,已經爲我們默認安裝好了Vim,我們可以通過他來回文檔進行編輯。

1.1Vim編輯器中的三種模式

  • 命令模式:控制光標移動,可對文本盡心複製、粘貼、刪除和查找等工作。
  • 輸入模式:可以進行正常的文本錄入。
  • 末行模式:可以保存或退出文檔,以及設置編輯環境。

模式轉換
在每次運行Vim時,默認首先進入命令模式,此時就需要切換到輸入模式後再對文檔進行編寫工作,而在每次編寫完文檔後需要先返回命令模式,然後再進入末行模式執行文件的保存或退出操作。

1.2基本命令

(1)命令模式下常用的命令

命令 作用
dd 刪除(剪切)整行
5dd 刪除(剪切)從光標開始的5行
yy 複製光標所在的行
5yy 複製光標處開始的5行
n 顯示搜索命令定位到的下一個字符串
N 顯示搜索命令定位到的上一個字符串
u 撤銷上一步的操作
p 將之前刪除(dd)或複製(yy)過的數據粘貼到光標後面

(2)末行模式中可用的命令

命令 作用
:w 保存
:q 退出
:q! 強制退出(放棄修改)
:wq! 強制保存退出
:set nu 顯示行號
:set nonu 不顯示行號
: 命令 執行該命令
:整數 跳轉到該行
?字符串 在文本中從上至下搜索該字符串
/字符串 在文本中從下至上搜索該字符串

2.實踐

我們這裏模擬一個需求,創建一個practice.txt文件並在裏面輸入Hello World後保存退出。

(1)首先進入到文件,這裏如果沒有對應文件,Vim就會創建一個臨時文件:

進入文件

(2)三個選擇

  • a:在光標後一位切換到輸入模式
  • i:在光標當前位置切換到輸入模式
  • o:在光標下面新建一個空行
    我們輸入a切換到輸入模式
    輸入模式

(3)保存並退出文件

因爲此時我們正處於輸入模式,所以要先按ESC推出道末行模式並輸入:wq保存並退出文件
保存並退出
如果我們想要繼續編輯這個文件,就可以直接按o創建新行,這樣更高效。


二、編寫Shell腳本

2.1Shell的工作方式

  • 交互式:用戶沒輸入一行就立即執行。
  • 批處理:用戶實現編寫好一個完整的Shell腳本,Shell會一次性執行腳本中的所有命令。

2.2示例引入

(1)腳本文件

我們首先用之前講到的Vim編輯器創建一個腳本文件example.sh

(2)編輯信息

讓這個腳本可以打印出我們當前所在的目錄以及輸出此目錄下的文件
如圖

  • 第一行是腳本聲明(#!)用來高速系統使用哪種Shell解釋器來執行該腳本(默認使用Bash)
  • 第三四行是執行的Linux命令
  • 在這裏我們還可以用 #註釋 的形式書寫註釋

(3)用bash解釋器來運行

運行
在這裏,我們也可以不用bash解釋器直接運行Shell腳本文件,而可以通過輸入完整路徑的方式來執行,但是肯能會出現權限不足的情況,這裏就需要爲腳本文件增加執行權限。
直接執行

2.2接收用戶參數

看一個例子
例子

結果

可以看出我們的Shell 是可以接收用戶參數的,這提高了程序的靈活性

2.3用戶參數的判斷

2.3.1 條件測試語句的分類

  • 文件測試語句
  • 邏輯測試語句
  • 整數值比較語句
  • 字符串比較語句

格式: [ 條件表達式 ] 注意兩邊都有空格

2.3.2 常用參數

(1)文件測試所用參數
命令 作用
-d 測試文件是否爲目錄文件
-e 測試文件是否存在
-f 測試是否爲一般文件
-r 測試當前用戶是否有權限讀取
-w 測試當前用戶是否有權限寫入
-x 測試當前用戶是否有權限執行

看一個例子,判斷是否存在/etc/fatab下是否爲一個目錄型的文件,返回值爲0則代表目錄存在,如果飯時非零的值則目錄不存在
例子

(2)邏輯語句

&& : 與,標識當前命令執行成功後纔會執行他後面的命令
|| : 或,標識當前面的命令執行失敗後纔會執行他後面的命令
!  : 非,取反

這裏看一個綜合例子,注意空格
例子
由於當前登陸的賬戶是root,這個語句的邏輯也就是:
如果當前用戶不是root,那麼就會輸出user,是root,就會輸出root;

假如第一個語句判斷爲真,也就是說當前用戶不是root,那麼[ ]中的值就會爲真,就會執行後面的 && echo “user”,如果當前用戶是root,那麼[ ] && echo "user"這整個聚在就會被判斷成假,則會執行 || echo "root"語句輸出root。

(3)整數比較運算符

命令 作用
-eq 是否等於
-ne 是否不等於
-gt 是否大於
-lt 是否小於
-le 是否等於或小於
-ge 是否大於或等於

例子
例子
例子

(4)常見字符串比較運算符

命令 作用
= 字符串內容是否相等
!= 字符串內容是否不同
-z 字符串內容是否爲空

例子
例子


2.4流程控制語句

2.4.1 if語句

(1) 格式

//單分支的if語句
if 條件測試語句
	then 命令序列
fi

//多分支的if語句
if 條件測試操作1
	then 命令序列1
elif 條件測試操作2
	then 命令序列2
else
	命令序列3
fi

(2) 示例

示例
示例

2.4.2 for語句

(1) 格式

for 變量名 in 取值列表
do
	命令序列
done

(2) 示例

1.創建users.txt

users.txt

2.編輯Example.sh腳本文件

代碼

3.執行文件

在這裏插入圖片描述

再來一個for循環計算1加到100的值
示例

2.4.3while循環

(1)格式

while 條件測試語句
do
	命令列表
done

(2)例子:猜數字

while.sh文件
猜數字

2.4.4 case條件

(1)格式

case 變量值 in
模式1)
	命令序列1
	;;
模式1)
	命令序列2
	;;
	......
*)
	默認命令序列
esac

(2)例子

用來判斷判斷用戶輸入的單個字符是哪種
判斷用戶輸入的單個字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章