Linux基礎(chǔ)教程(下)
4 Linux常用基礎(chǔ)命令
Linux剛面世時并沒有圖形界面, 所有的操作全靠命令完成, 如磁盤操作、文件存取、目錄操作、進(jìn)程管理、文件權(quán)限設(shè)定等 在職場中,大量的服務(wù)器維護(hù)工作 都是遠(yuǎn)程通過SSH客戶端來完成的,并沒有圖形界面,所有的維護(hù)工作都需要通過命令來完成。 Linux部分常用命令:

Linux文件系統(tǒng)目錄樹
windows系統(tǒng)可以擁有多個盤符, 如 C盤、D盤、E盤。
Linux沒有盤符這個概念, 只有一個根目錄/, 所有文件都在它下面:

Linux主要目錄:
/bin: 二進(jìn)制命令所在的目錄
/boot : 系統(tǒng)引導(dǎo)程序所需要的文件目錄,引導(dǎo)系統(tǒng)開機(jī)
/dev :設(shè)備軟件目錄,磁盤,光驅(qū), ?
/etc: 系統(tǒng)配置,啟動程序
/home:普通用戶的家,目錄默認(rèn)數(shù)據(jù)存放目錄
/lib: 啟動系統(tǒng)和運(yùn)行命令所需的共享庫文件和內(nèi)核模塊存放
/mnt:臨時掛載儲存設(shè)備的掛載點(diǎn),
/proc:操作系統(tǒng)運(yùn)行時,進(jìn)程信息和內(nèi)核信息存放在這里 ?
/root:Linux超級權(quán)限用戶root的家目錄
/sbin:和管理系統(tǒng)相關(guān)的命令,【超級管理員用】
/tmp:臨時文件目錄,這個目錄被當(dāng)作回收站使用
/usr:用戶或系統(tǒng)軟件應(yīng)用程序目錄
/var:存放系統(tǒng)日志的目錄
注意:一般不要操作非自己創(chuàng)建的目錄和文件,否則可能導(dǎo)致服務(wù)器崩潰。
4.1 命令幫助手冊
因為一個命令有很多可選項, 死記硬背肯定不行, 所以需要借助手冊查閱.
在線手冊:https://www.runoob.com/linux/linux-command-manual.html
4.1.1 help命令
命令格式: command --help
例子: ?ls ?--help
說明: 顯示 command 命令的幫助信息
缺點(diǎn): 雖然可以查詢命令的幫助信息, 但是沒有提供 翻頁、搜索功能.
4.1.2 man命令
命令格式: man command
例子: man ?ls
說明: 查詢command命令的使用手冊 man 時 manual 的縮寫, 是Linux提供的一個手冊, 包含了絕大部分的命令、函數(shù)的詳細(xì)使用說明.
使用 man 時的操作鍵:

4.2 文件和目錄的常用命令
目標(biāo):學(xué)習(xí)掌握以下命令
查看目錄內(nèi)容: ls
切換目錄: cd
創(chuàng)建和刪除操作: touch、 rm、 mkdir
拷貝和移動文件: cp、 mv
查看文件內(nèi)容: cat、 less、tail、head、 grep
其他: echo、 重定向 > 和 >>、 ?管道 |
2.1、查看目錄內(nèi)容
2.1.1、終端使用技巧
A、自動補(bǔ)全
在敲出 文件/ 目錄 / 命令 的前幾個字母之后, 按下 tab鍵
如果還存在其他 文件 / 目錄 / 命令, 再按一下tab鍵, 系統(tǒng)會提示可能存在的命令
B、曾經(jīng)使用過的命令
使用 上 / 下 光標(biāo)鍵可以在曾經(jīng)使用過的命令之間來回切換
如果想要退出選擇, 并且不想執(zhí)行當(dāng)前選中的命令, 可以按 ctrl + c
2.1.2、ls命令說明
ls 是英文單詞list的簡寫, 其功能為列出目錄的內(nèi)容,是用戶最常用的命令之一 因為需要編輯服務(wù)器上的文件, 所以需要先確認(rèn)指定目錄下是否存在 linux 下文件和目錄的特點(diǎn):
linux文件 或者 目錄 名稱最長可以 256 個字符
以 . 開頭的文件為隱藏文件, 需要用 -a 參數(shù)才能顯示
. 代表當(dāng)前目錄
.. 代表上一級目錄
案例:
1 創(chuàng)建文件 01.txt ?
2 創(chuàng)建隱藏文件 02.txt
3 羅列隱藏文件和非隱藏文件
2.1.3、ls命令常用選項
如果 只使用ls命令 就只能看到當(dāng)前目錄下 非隱藏 文件。
如果想增強(qiáng)功能,就需要學(xué)習(xí)更多的選項

案例:
1 切換到 /usr/tmp 清空內(nèi)容 ?
2 創(chuàng)建隱藏文件 非隱藏文件 目錄
3 查看當(dāng)前目錄內(nèi)容 (缺點(diǎn): 隱藏文件看不到)
4 查看當(dāng)前目錄所有內(nèi)容 (既包含隱藏, 也包含非隱藏)
5 查看目錄內(nèi)容的詳細(xì)信息(查看文件類型、權(quán)限、大小等 缺點(diǎn):文件大小沒有單位)
6 簡化合并 查看目錄內(nèi)容的詳細(xì)信息(要顯示文件大小)
命令如下:

2.1.4、ls命令中通配符的使用
準(zhǔn)備工作
代碼如下


案例:
1 查看以 1 開頭的文件或目錄
2 查看以 3.txt 結(jié)尾的 文件或目錄
3 查看含有3的文件列表
4 查看第二個字符是2的文件
5 查看 第一個字符是 1到5, 以23.txt結(jié)尾 的 目錄或文件名

2.2、切換目錄
2.2.1、cd命令
cd 是英文單詞 change directory 的縮寫, 其功能為 更改當(dāng)前的工作目錄, 也是用戶最常用的命令之一
注意: linux的所有 目錄 和 文件名 都是大小寫敏感的

需求: 1 查看當(dāng)前所在目錄
2 切換到 /usr/local
3 切換到 上一級目錄 /usr
4 后退到上一次訪問的目錄中 代碼如下:

2.2.2、相對路徑和絕對路徑
2.2.2.1、相對路徑
特征: 相對路徑輸入路徑時, 最前面不是以 "/" 開始的, 表示相對 當(dāng)前目錄 所在的位置
缺點(diǎn): 參照工作目錄 發(fā)生變化 相對路徑也要發(fā)生變化
演示案例:
需求1: 當(dāng)前工作目錄是 /usr, 使用相對路徑 切換到 /usr/tmp 目錄下 ?
需求2: 當(dāng)前工作目錄是 /root, 使用相對路徑 切換到 /usr/tmp 目錄下 ?
在root目錄下時,無法使用相對路徑實(shí)現(xiàn)切換到/usr/tmp目錄
代碼如下:

2.2.2.2、絕對路徑
特征: 絕對路徑 在輸入路徑時, 最前面是以 / 開始的, 表示從 根目錄 開始的具體目錄位置
優(yōu)點(diǎn): 定位準(zhǔn)確, 不會因為 工作目錄變化 而變化
演示案例:
需求1: 當(dāng)前工作目錄是 /usr, 使用絕對路徑 切換到 /usr/tmp 目錄下 ?
需求2: 當(dāng)前工作目錄是 /root, 使用絕對路徑 切換到 /usr/tmp 目錄下
小結(jié):
相對路徑 在輸入路徑時, 最前面不是以 / 開始的 , 表示相對 當(dāng)前目錄 所在的目錄位置
絕對路徑 在輸入路徑時, 最前面是以 / 開始的, 表示 從 根目錄 開始的具體目錄位置
2.3、創(chuàng)建和刪除操作
2.3.1、創(chuàng)建文件
命令格式:touch 文件
案例:
第一步: 創(chuàng)建一個空白文件
touch 不存在的文件
第二步: 修改文件的末次修改日期
touch 存在的文件
小結(jié):
通過 touch 文件名 創(chuàng)建文件 和 修改文件的末次訪問時間
2.3.2、創(chuàng)建目錄
命令格式:mkdir 文件目錄
案例:
第一步: 創(chuàng)建 沒有層級關(guān)系的目錄(單層次目錄)
mkdir 目錄名
第二步: 創(chuàng)建 有層級關(guān)系的目錄(創(chuàng)建多層次目錄)
mkdir -p 目錄1/目錄2/目錄3
mkdir命令選項:

2.3.3、刪除文件或目錄
通過 rm -rf 文件/目錄 命令實(shí)現(xiàn)刪除文件和目錄的功能
rm 對應(yīng)的英文是 remove 含義: 刪除
案例1: 刪除文件 (有提示)
rm 文件
案例2: 刪除文件 (取消提示)
rm -f 文件

案例3: 刪除目錄 rm -rf 目錄

案例4: rm 結(jié)合 通配符 ?
常用通配符:?[abc][a-z]
rm -rf .txt
小結(jié): 通過 rm -rf 文件/目錄 完成刪除 文件或目錄的功能.
注意: 使用 rm 命令要小心, 因為文件刪除后不能恢復(fù)
記?。涸谄髽I(yè)開發(fā)中,自己只刪除自己創(chuàng)建的文件
2.4、拷貝和移動文件

2.4.1、tree命令
通過 tree 命令可以以樹狀圖列出文件目錄結(jié)構(gòu)
準(zhǔn)備工作:
創(chuàng)建目錄
創(chuàng)建文件
案例1:以樹形結(jié)構(gòu)顯示目錄中的文件和目錄
如果指定目錄, 就顯示指定目錄的內(nèi)容
如果不指定目錄,就顯示當(dāng)前目錄的內(nèi)容
tree [目錄]
提示:默認(rèn)沒有安裝tree時,需要聯(lián)網(wǎng)安裝
安裝 tree組件
卸載 tree組件
案例2:只顯示當(dāng)前目錄中的文件夾(目錄)

案例3:顯示指定的兩層

2.4.2、cp命令(拷貝)
通過 cp 實(shí)現(xiàn)復(fù)制將指定的 文件 或 目錄 復(fù)制到 兩一個 文件 或 目錄中
案例1: 備份指定文件
cp ?文件1 ?備份文件名

案例2: 將文件復(fù)制到目錄中
cp 文件1 目錄/
案例3: 將文件復(fù)制到另一個文件中, 實(shí)現(xiàn)覆蓋效果
cp 文件1 文件2(存在的)
案例4: 復(fù)制目錄 到指定 目錄中
cp -r 目錄1/ 目錄2/

小結(jié): cp命令的功能是將給出的 文件 或 目錄 復(fù)制到另一個 文件 或 目錄中
2.4.3、mv命令(移動)
通過mv 命令可以用來 移動 文件 或 目錄, 也可以給 文件或目錄重命名
案例1: 將文件 移動 另一個目錄中
案例2: 重命名
案例3: 將目錄移動到 另一個目錄中
2.5、查看文件內(nèi)容

準(zhǔn)備工作:
清空指定目錄內(nèi)容
復(fù)制 /etc/passwd 文件 到 /export/ 目錄中
復(fù)制 /etc/profile 文件 到 /export/ 目錄中
羅列目錄中內(nèi)容
2.5.1、cat命令
通過 cat 會一次顯示所有的內(nèi)容, 適合 查看內(nèi)容較少 的文本文件
案例1: 顯示文件內(nèi)容
案例2: 顯示文件內(nèi)容(顯示行號 包含空行)

缺點(diǎn): 空行也顯示行號
案例3: 顯示文件內(nèi)容(顯示行號 排除空行)

擴(kuò)展: nl 文件名 也可以實(shí)現(xiàn) 非空行顯示行號的效果

小結(jié): 通過 cat 文件名 查看小文件內(nèi)容
2.5.2、less命令
通過 less [參數(shù)] 文件名 命令可以用于分屏顯示文件內(nèi)容, 每次只顯示一頁內(nèi)容
less 命令適合查看 內(nèi)容較多 的文本文件
準(zhǔn)備工作:
>> 重定向這個命令, 為了課程需要 我們先用, 后面我們會講
將文件 /etc/profile 的內(nèi)容 追加到 /export/01.txt目錄中
案例1 : 分屏顯示文件內(nèi)容 less -N 文件名 ?###分屏展示文件內(nèi)容,適合大文件

使用 less 的操作鍵:

案例2 : 根據(jù)關(guān)鍵詞搜索內(nèi)容
根據(jù)關(guān)鍵詞搜索
/word

小結(jié): 針對 linux中的文本文件信息,可以使用cat或less進(jìn)行查看
通常cat適用于文本內(nèi)容比較少的情況下 命令: cat 文件名 cat -n 文件名 nl 文件名
less適用文本內(nèi)容比較多的情況 命令:less -N 文件名
常用操作: ? ? ? ?
f 下一頁 ? ? ? ?
b 上一頁 ? ? ? ?
q 退出 ? ? ? ?
/檢查的關(guān)鍵字 搜索文本中的關(guān)鍵字
n: 向下繼續(xù)檢索 ? ? ? ? ? ? ? ? ? ?
N:向上檢索
2.5.3、head命令
通過 head 命令查看文檔的前幾行內(nèi)容
準(zhǔn)備工作:
案例1: 查看文件的前5行內(nèi)容

2.5.4、tail命令
tail命令用來查看文檔(日志)的后幾行內(nèi)容
案例1: 查看文檔的最后10行內(nèi)容
案例2: 動態(tài)顯示文檔的最后內(nèi)容,一般用來查看日志
使用場景:在開發(fā)中當(dāng)某個服務(wù)啟動后,需要監(jiān)控該服務(wù)中的相關(guān)參數(shù)信息時,會查看服務(wù)的日志文件信息
在開發(fā)中,通常會把一些日志信息,寫入到一個log文件中。當(dāng)遇到一些bug時,需要對當(dāng)前的log文件進(jìn)行日志的監(jiān)控或查看。 會使用:tail -f log日志文件 監(jiān)控日志中輸出的信息,從而來排查bug
案例3: 動態(tài)顯示文檔的最后10行內(nèi)容
小結(jié):
通過
head 命令查看文檔的前幾行內(nèi)容
head -n 數(shù)值 文件名 --查看文件的前n行信息
通過
tail -10f 文件 命令 查看文檔(日志)的后幾行內(nèi)容
tail -數(shù)值 文件名 --查看文件的后n行信息
tail -f 文件名 --動態(tài)的查看文件中的信息 (會一直滾屏)
2.6、其他命令
2.6.1、管道 |
通過 命令1 | 命令2 可以將命令1的結(jié)果 通過 命令2 作進(jìn)一步的處理
案例1 : 過濾 /etc/ 目錄下 以 pro 開頭的文件
案例2 : 搜索 存在關(guān)鍵字 的行數(shù)
命令:wc[參數(shù)] [文件] ? ###打印文件的行數(shù), 單詞數(shù), 字節(jié)數(shù)
參數(shù):-l ?###顯示行數(shù)

小結(jié): ? 管道符:| ?
作用:把執(zhí)行的第一個命令結(jié)果,放入到管道中,用來執(zhí)行第二個命令
例: ls /etc | grep ^pro
第一個命令: 查看/etc下所有的文件或目錄 ? ?
第一個命令執(zhí)行結(jié)果:/etc下所有的文件和目錄
第二個命令: grep ^pro 搜索以pro開頭的文件或目錄 第二個命令執(zhí)行結(jié)果:把/etc下所有的文件或目錄中,以pro開頭檢索出來
2.6.2、echo命令
echo string 將字符串輸出到控制臺 , 通常會和 重定向 聯(lián)合使用
演示案例:
2.6.3、重定向 >(覆蓋)和>>(追加)

默認(rèn)情況下linux執(zhí)行命令后,命令的結(jié)果會輸出到控制臺
通過 重定向 可以將結(jié)果 輸出到文件
案例1: 將 命令的成功結(jié)果 覆蓋 指定文件內(nèi)容

案例2: 將 命令的成功結(jié)果 追加 指定文件的后面

案例3: 將 命令的失敗結(jié)果 追加 指定文件的后面

小結(jié): 通過 命令 > 文件 將命令的成功結(jié)果 覆蓋 指定文件內(nèi)容
通過 命令 >> 文件 將命令的成功結(jié)果 追加 指定文件的后面
通過 命令 &>> 文件 將 命令的失敗結(jié)果 追加 指定文件的后面
2.6.4、&&和||

案例1:如果創(chuàng)建目錄成功, 就提示創(chuàng)建成功

案例2:如果創(chuàng)建目錄失敗, 就提示創(chuàng)建失敗

練習(xí):
1 如果創(chuàng)建目錄成功, 就切換到指定目錄?
2 如果創(chuàng)建文件成功, 就羅列新建文件 所在目錄的內(nèi)容
2.6.5、軟鏈接(創(chuàng)建快捷方式)

軟鏈接也叫符號鏈接,相當(dāng)于windows的快捷方式。主要使用場景:當(dāng)文件存儲的目錄比較深時,為了快速的去訪問藏的比較深的文件,可以給這類文件創(chuàng)建一個訪問的快捷方式。
軟鏈接類似一個文本文件,里面存放的是源文件的路徑,指向源文件實(shí)體。刪除源文件,軟鏈接文件依然存放,但是無法訪問指向的源文件路徑內(nèi)容了。失效的時候一般是紅字白底閃爍提示。
命令格式: ln -s /源文件的絕對路徑 快捷方式的訪問路徑

小結(jié): 注意: 必須 增加 -s , 否則 就變成了 硬鏈接。
硬鏈接的作用之一是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬鏈接到重要的文件,以防止“誤刪”源數(shù)據(jù)。
之所以文件建立了硬鏈接就會防止數(shù)據(jù)誤刪,是因為文件系統(tǒng)的原理是,只要文件的索引節(jié)點(diǎn)還有一個以上的鏈接(僅刪除了該文件的指向),只刪除其中一個鏈接并不影響索引節(jié)點(diǎn)本身和其他的鏈接(數(shù)據(jù)的實(shí)體并未刪除),只有當(dāng)最后一個鏈接被刪除后,此時如果有新數(shù)據(jù)要存儲到磁盤上,被刪除的文件的數(shù)據(jù)塊及目錄的鏈接才會被釋放,空間被新數(shù)據(jù)暫用覆蓋。
4.3 Linux搜索命令
3.1、find搜索
find是linux中最常見的搜索命令。
find命令在linux系統(tǒng)的整個目錄結(jié)構(gòu)中搜索文件,并對搜索結(jié)果執(zhí)行指定的操作。 ?find的使用格式如下:
find <指定目錄> <指定條件> <指定動作>
- <指定目錄>: 所要搜索的目錄及其所有子目錄。默認(rèn)為當(dāng)前目錄
- <指定條件>: 所要搜索的文件的特征
- <指定動作>: 對搜索結(jié)果進(jìn)行特定的處理
如果什么參數(shù)也不加,find默認(rèn)搜索當(dāng)前目錄及其子目錄,并且不過濾任何結(jié)果(也就是返回所有文件),將它們?nèi)硷@示在屏幕上。
3.1.1、find命令基本應(yīng)用
通過find命令 在特定目錄下(包含它的后代目錄) 搜索符合條件的文件。
find命令的基本使用格式:

說明:1、如果省略路徑, 表示在當(dāng)前文件夾下查找 ?
2、之前學(xué)習(xí)的通配符, 在使用find命令時同時可用
準(zhǔn)備工作
案例1: 搜索指定目錄下, 文件是 abc.txt的文件
案例2: 搜索指定目錄下, 文件名 包含 1 的文件

案例3: 搜索指定目錄下,所有以.txt 為擴(kuò)展名的文件
案例4: 搜索指定目錄下, 以數(shù)字1開頭的文件

3.1.2、find擴(kuò)展實(shí)例
find命令的基本格式: find 目錄 -name ?‘.txt’
find . -name ".log" -ls ?在當(dāng)前目錄查找以.log 結(jié)尾的文件, 并顯示詳細(xì)信息。
find /root/ -perm 777 ?查找/root/目錄下權(quán)限為 777 的文件 ?
find . -type f -name "*.log" ?查找當(dāng)目錄,以.log 結(jié)尾的普通文件 ?
find . -type d | sort ?查找當(dāng)前所有目錄并排序
find . -size +100M 查找當(dāng)前目錄大于 100M 的文件
3.2、grep命令
grep 命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來
使用實(shí)例: ?
ps -ef | grep sshd 查找指定 ssh 服務(wù)進(jìn)程
ps -ef | grep sshd | grep -v grep 查找指定服務(wù)進(jìn)程,排除 gerp 本身
ps -ef | grep sshd -c 查找指定進(jìn)程個數(shù) ?
cat a.txt | grep -f b.txt 從文件中讀取關(guān)鍵詞進(jìn)行搜索 輸出 a.txt 文件中含有從 b.txt 文件中讀取出的關(guān)鍵詞的內(nèi)容行 ?
cat a.txt | grep -nf b.txt ?從文件中讀取關(guān)鍵詞進(jìn)行搜索, 顯示行號 ?
grep -n 'linux' test.txt 從文件中查找關(guān)鍵詞,并顯示行號
cat test.txt | grep ^u 找出以 u 開頭的行內(nèi)容
cat test.txt |grep ^[^u] 輸出非 u 開頭的行內(nèi)容 ?
cat test.txt |grep hat$ 輸出以 hat 結(jié)尾的行內(nèi)容 ?
cat test.txt | grep -E "ed|at" 顯示包含 ed 或者 at 字符的內(nèi)容行
3.3、locate命令
locate命令其實(shí)是“find -name”的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數(shù)據(jù)庫(/var/lib/locatedb),這個數(shù)據(jù)庫中含有本地所有文件信息。Linux系統(tǒng)自動創(chuàng)建這個數(shù)據(jù)庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數(shù)據(jù)庫。
如果是精簡版 CentOS 系統(tǒng)需要安裝 locate 命令 ?
yum -y install mlocate
updatedb 命令來創(chuàng)建 locate 命令依賴的數(shù)據(jù)庫 ?
updatedb
使用實(shí)例: ?
locate /etc/sh ?搜索 etc 目錄下所有以 sh 開頭的文件 ?
locate pwd ?查找和 pwd 相關(guān)的所有文件
4.4 解壓縮命令
解壓縮命令能做什么呢?
1、從第三方下載軟件壓縮包, 解壓縮后安裝軟件到服務(wù)器上;
2、通過打包壓縮備份文件

4.1、打包和解包
準(zhǔn)備工作
4.1.1、打包
生活中的事例:將冬天的衣服放到袋中
在linux中可以把多個文件打包成為一個大文件,且打包后的文件需要以 .tar 結(jié)尾

練習(xí)題:
4.1.2、解包
生活中的事例:從袋子中把冬天的衣服取出來
在linux中,使用tar 命令進(jìn)行解包

練習(xí)題:
4.2、壓縮和解壓縮
準(zhǔn)備工作
4.2.1、使用gzip格式壓縮和解壓縮
在 Linux 中, 最常用的壓縮文件格式是 xxx.tar.gz
在 tar 命令中有一個選項 -z 可以調(diào)用 gzip , 從而可以方便的實(shí)現(xiàn)壓縮和解壓縮的功能
命令格式如下:
tar 的選項說明

練習(xí)題:
4.2.2、使用bzip2格式壓縮和解壓縮
在 Linux 中, bzip2 壓縮文件格式是 xxx.tar.bz2
在 tar 命令中有一個選項 -j 可以調(diào)用 bzip2 , 從而可以方便的實(shí)現(xiàn)壓縮和解壓縮的功能
命令格式如下:
tar 的選項說明

練習(xí)題:
5 vi/vim文本編輯器
1. ?編輯器簡介
vi編輯器是所有Unix及Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,相當(dāng)于windows系統(tǒng)中的記事本一樣,它的強(qiáng)大不遜色于任何最新的文本編輯器。是使用Linux系統(tǒng)不能缺少的工具。由于對Unix及Linux系統(tǒng)的任何版本,vi編輯器是完全相同的。
vim(vi improved)編輯器是從 vi 發(fā)展出來的一個文本編輯器。代碼補(bǔ)完、編譯及錯誤跳轉(zhuǎn)、語法高亮等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡單的來說, vi 是老式的,不過功能已經(jīng)很齊全了,但是還是有可以進(jìn)步的地方。 vim 則可以說是程序開發(fā)者的一項很好用的工具。vim 的官方網(wǎng)站 (http://www.vim.org) 自己也說 vim 是一個程序開發(fā)工具而不是文字處理軟件。
vi/vim編輯器的核心設(shè)計思想:
讓程序員的手指始終保持在鍵盤的核心區(qū)域, 就能完成所有的編輯操作

2. ?打開和新建文件
如果當(dāng)前的linux系統(tǒng)中輸出:vim命令后,出現(xiàn)命令的不識別的情況,需要安裝VIM
安裝方式: yum -y install vim*
在終端中輸入vim在后面跟上 文件名 即可
vim 文件名
如果文件已經(jīng)存在, 會直接打開該文件
如果文件不存在, 保存且退出時 就會新建一個文件
2.1、打開文件并且定位行
在日常工作中, 有可能會遇到打開一個文件, 并定位到指定行的情況。
例如: 在開發(fā)時候知道某一行代碼有錯誤, 可以快速定位到出錯誤代碼的位置,這個時候, 可以使用以下命令打開文件:
提示: 如果只帶上+ 而不指定行號, 會直接定位到文件末尾
2.2、異常處理
如果 vi 異常退出, 在磁盤上可能會保存有 交換文件
下次再使用 vi 編輯文件時, 會看到以下屏幕信息, 按下字母 d 刪除交換文件即可。

這種現(xiàn)象如何產(chǎn)生:編輯文件時沒有退出, 直接關(guān)閉會話窗口。

2.3、vi/vim三種工作模式
基本上 vi/vim 共分為三種模式,分別是:命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode).

1、命令模式
打開文件首先進(jìn)入命令模式, 是使用vim的入口。
命令模式下下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。
若想要編輯文本:必須切換到輸入模式。
2、底線命令模式 ?
執(zhí)行 保存 退出等操作 (是從命令模式進(jìn)入的)
要退出 vi 返回到控制臺, 需要在底線命令模式下輸入命令,是 vi編輯器 的出口。
在底線命令模式中,基本的命令有(已經(jīng)省略了冒號):
q 退出程序
w 保存文件
wq 保存且退出文件
wq! 強(qiáng)制保存且退出文件
3、輸入編輯模式 ?
正常的編輯文字
3. ?常用命令
vi命令還是比較多, 實(shí)際使用中也就是那么幾個。不奢求一下子全部都記住, 個別命令忘記了, 只是會影響編輯速度而已 . 在使用vi命令時, 注意關(guān)閉中文輸入法。
熟能生巧,多用多會。
3.1、光標(biāo)移動
移動光標(biāo)的方法

如果想要進(jìn)行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進(jìn)行的次數(shù)(數(shù)字)后,按下動作即可!

3.2、復(fù)制粘貼

3.3、搜索替換

3.4、刪除

4. ?撤銷和恢復(fù)撤銷
在學(xué)習(xí)編輯命令之前,先要知道怎樣撤銷之前一次 錯誤的 編輯操作

5. ?插入命令(重要)
在 vi 中除了常用 i 進(jìn)入編輯模式 外, 還提供了一下命令同樣可以進(jìn)入編輯模式

小結(jié):在進(jìn)入編輯模式之前,可以通常輸入的命令,來進(jìn)入到不同編輯狀態(tài)
i:進(jìn)入到編輯模式后,定位到當(dāng)前光標(biāo)前面
I:進(jìn)入到編輯模式后,定位到當(dāng)前行的首位置
a:進(jìn)入到編輯模式后,定位到當(dāng)前光標(biāo)的后面追加要寫入的內(nèi)容
A:進(jìn)入到編輯模式后,定位到當(dāng)前行的行尾
o:進(jìn)入到編輯模式后,在當(dāng)前行的后面,添加一行空行
O:進(jìn)入到編輯模式后,在當(dāng)前行的前面,添加一行空行