Linux命令大全:2W多字,一次實現(xiàn)Linux自由
前言
Linux 的學(xué)習(xí)對于一個程序員的重要性是不言而喻的。
學(xué)好它卻是程序員必備修養(yǎng)之一。
同時,也是很多公司的面試題。 比如說,曾有一個網(wǎng)易的面試題是:
這個 題目以及參考答案,收入咱們的 《尼恩Java面試寶典》,
這里尼恩站在網(wǎng)上其他小伙伴的梳理的基礎(chǔ)上,做個Linux 命令大全的文章,幫助大家實現(xiàn)Linux自由。
使得大家可以充分展示一下大家雄厚的 “技術(shù)肌肉”,讓面試官愛到 “不能自已、口水直流”。
從此,再也不怕 Linux命令的面試題,再也不用擔(dān)心Linux命令如何使用了。
關(guān)于虛擬機環(huán)境
一直以來,尼恩都使用的是 CentOS 7.7
虛擬機,并且通過百度網(wǎng)盤,共享虛擬機鏡像給大家。
最近,由于需要弄 云原生K8S的本地環(huán)境,升級到了 CentOS 8.0 虛擬機,也會共享虛擬機鏡像給大家。
虛擬機中,安裝了常用的 Java JDK、Mysql、Redis、Nacos、Zookeeper、Nginx等基礎(chǔ)組件
并且,也進行了高并發(fā)的文件句柄數(shù)、文件映射數(shù)的放開
大家不用做那些重復(fù)性的工作,拿過去一鍵導(dǎo)入,就可以享受那些基礎(chǔ)組件的服務(wù)。
這個虛擬機的鏡像,一級一鍵導(dǎo)入的操作方法, 可以找尼恩獲取,
至少,可以省去大家 2天的安裝、基礎(chǔ)組件部署、各種依賴踩坑的時間。
還自帶K8S的學(xué)習(xí)環(huán)境,這個是大家都夢寐以求的。
接下來,咱們回到正題,幫助大家,實現(xiàn)Linux 命令自由。
Linux 基礎(chǔ)
操作系統(tǒng)
操作系統(tǒng) Operating System
簡稱 OS
,是軟件的一部分,它是硬件基礎(chǔ)上的第一層軟件,是硬件和其它軟件溝通的橋梁。
操作系統(tǒng)會控制其他程序運行,管理系統(tǒng)資源,提供最基本的計算功能,如管理及配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序等,同時還提供一些基本的服務(wù)程序。

什么是 Linux
Linux 系統(tǒng)內(nèi)核與 Linux 發(fā)行套件的區(qū)別
??? Linux 系統(tǒng)內(nèi)核指的是由 Linus Torvalds 負(fù)責(zé)維護,提供硬件抽象層、硬盤及文件系統(tǒng)控制及多任務(wù)功能的系統(tǒng)核心程序。
??? Linux 發(fā)行套件系統(tǒng)是我們常說的 Linux 操作系統(tǒng),也即是由 Linux 內(nèi)核與各種常用軟件的集合產(chǎn)品。
「總結(jié):真正的 Linux 指的是系統(tǒng)內(nèi)核,而我們常說的 Linux 指的是“發(fā)行版完整的包含一些基礎(chǔ)軟件的操作系統(tǒng)”。」
Linux 對比 Windows
穩(wěn)定且有效率;
免費(或少許費用);
漏洞少且快速修補;
多任務(wù)多用戶;
更加安全的用戶與文件權(quán)限策略;
適合小內(nèi)核程序的嵌入系統(tǒng);
相對不耗資源。
Linux 對比 Windows
穩(wěn)定且有效率;
免費(或少許費用);
漏洞少且快速修補;
多任務(wù)多用戶;
更加安全的用戶與文件權(quán)限策略;
適合小內(nèi)核程序的嵌入系統(tǒng);
相對不耗資源。
終端( Xterm)連接虛擬機
尼恩使用的是 這個終端 xterm (X Window System)

建立SSH會話

然后輸入服務(wù)器連接密碼就可以順利登陸遠(yuǎn)程服務(wù)器。
從現(xiàn)在開始我們就可以在本地電腦操作遠(yuǎn)程服務(wù)器。
Shell
Shell
這個單詞的原意是“外殼”,跟 kernel
(內(nèi)核)相對應(yīng),比喻內(nèi)核外面的一層,即用戶跟內(nèi)核交互的對話界面。
Shell
是一個程序,提供一個與用戶對話的環(huán)境。這個環(huán)境只有一個命令提示符,讓用戶從鍵盤輸入命令,所以又稱為命令行環(huán)境(command line interface
,簡寫為CLI
)。Shell
接收到用戶輸入的命令,將命令送入操作系統(tǒng)執(zhí)行,并將結(jié)果返回給用戶。Shell
是一個命令解釋器,解釋用戶輸入的命令。它支持變量、條件判斷、循環(huán)操作等語法,所以用戶可以用Shell
命令寫出各種小程序,又稱為Shell
腳本。這些腳本都通過Shell
的解釋執(zhí)行,而不通過編譯。Shell
是一個工具箱,提供了各種小工具,供用戶方便地使用操作系統(tǒng)的功能。
Shell 的種類
Shell
有很多種,只要能給用戶提供命令行環(huán)境的程序,都可以看作是 Shell
。
歷史上,主要的 Shell
有下面這些:
Bourne Shell(sh)
Bourne Again shell(bash)
C Shell(csh)
TENEX C Shell(tcsh)
Korn shell(ksh)
Z Shell(zsh)
Friendly Interactive Shell(fish)
其中 Bash
是目前最常用的 Shell
。 MacOS
中的默認(rèn) Shell
就是 Bash
。
通過執(zhí)行 echo $SHELL
命令可以查看到當(dāng)前正在使用的 Shell
。

還可以通過 cat /etc/shells
查看當(dāng)前系統(tǒng)安裝的所有 Shell
種類。

命令
命令行提示符
進入命令行環(huán)境以后,用戶會看到 Shell
的提示符。
提示符往往是一串前綴,最后以 一個# (或者 $)結(jié)尾,用戶可以在這個符號后面輸入各種命令。
執(zhí)行一個簡單的命令 pwd
:
命令解析:
root
:表示用戶名;iZm5e8dsxce9ufaic7hi3uZ
:表示主機名;~
:表示目前所在目錄為家目錄,其中root
用戶的家目錄是/root
普通用戶的家目錄在/home
下;#
:指示你所具有的權(quán)限(root
用戶為#
,普通用戶為$
)。執(zhí)行
whoami
命令可以查看當(dāng)前用戶名;執(zhí)行
hostname
命令可以查看當(dāng)前主機名;
關(guān)于如何創(chuàng)建、切換、刪除用戶,在后面的用戶與權(quán)限會具體講解,這里先使用 root
用戶進行演示。
[備注]
root
是超級用戶,具備操作系統(tǒng)的一切權(quán)限。
注意: root
用戶為 #
,普通用戶為 $
命令格式
長短參數(shù)
「單個參數(shù)」:ls -a(a 是英文 all 的縮寫,表示“全部”)
「多個參數(shù)」:ls -al(全部文件 + 列表形式展示)
「單個長參數(shù)」:ls --all
「多個長參數(shù)」:ls --reverse --all
「長短混合參數(shù)」:ls --all -l
參數(shù)值
「短參數(shù)」:command -p 10(例如:ssh root@121.42.11.34 -p 22)
「長參數(shù)」:command --paramters=10(例如:ssh root@121.42.11.34 --port=22)
快捷方式
在開始學(xué)習(xí) Linux
命令之前,有這么一些快捷方式,是必須要提前掌握的,它將貫穿整個 Linux
使用生涯。
通過上下方向鍵 ↑ ↓ 來調(diào)取過往執(zhí)行過的
Linux
命令;命令或參數(shù)僅需輸入前幾位就可以用
Tab
鍵補全;Ctrl + R
:用于查找使用過的命令(history
命令用于列出之前使用過的所有命令,然后輸入!
命令加上編號(!2
)就可以直接執(zhí)行該歷史命令);Ctrl + L
:清除屏幕并將當(dāng)前行移到頁面頂部;Ctrl + C
:中止當(dāng)前正在執(zhí)行的命令;Ctrl + U
:從光標(biāo)位置剪切到行首;Ctrl + K
:從光標(biāo)位置剪切到行尾;Ctrl + W
:剪切光標(biāo)左側(cè)的一個單詞;Ctrl + Y
:粘貼Ctrl + U | K | Y
剪切的命令;Ctrl + A
:光標(biāo)跳到命令行的開頭;Ctrl + E
:光標(biāo)跳到命令行的結(jié)尾;Ctrl + D
:關(guān)閉Shell
會話;
文件和目錄
文件的組織

查看路徑
pwd
顯示當(dāng)前目錄的路徑

which
查看命令的可執(zhí)行文件所在路徑, Linux
下,每一條命令其實都對應(yīng)一個可執(zhí)行程序,在終端中輸入命令,按回車的時候,就是執(zhí)行了對應(yīng)的那個程序, which
命令本身對應(yīng)的程序也存在于 Linux
中。
總的來說一個命令就是一個可執(zhí)行程序。

瀏覽和切換目錄
ls
列出文件和目錄,它是 Linux
最常用的命令之一。
【常用參數(shù)】
-a
顯示所有文件和目錄包括隱藏的-l
顯示詳細(xì)列表-h
適合人類閱讀的-t
按文件最近一次修改時間排序-i
顯示文件的inode
(inode
是文件內(nèi)容的標(biāo)識)

cd
cd
是英語 change directory
的縮寫,表示切換目錄。
[注意] 輸入cd /ho
+ 單次 tab
鍵會自動補全路徑 + 兩次 tab
鍵會列出所有可能的目錄列表。
du
列舉目錄大小信息。
【常用參數(shù)】
-h
適合人類閱讀的;-a
同時列舉出目錄下文件的大小信息;-s
只顯示總計大小,不顯示具體信息。
瀏覽和創(chuàng)建文件
cat
一次性顯示文件所有內(nèi)容,更適合查看小的文件。
【常用參數(shù)】
-n
顯示行號。
less
分頁顯示文件內(nèi)容,更適合查看大的文件。
【快捷操作】
空格鍵:前進一頁(一個屏幕);
b
鍵:后退一頁;回車鍵:前進一行;
y
鍵:后退一行;上下鍵:回退或前進一行;
d
鍵:前進半頁;u
鍵:后退半頁;q
鍵:停止讀取文件,中止less
命令;=
鍵:顯示當(dāng)前頁面的內(nèi)容是文件中的第幾行到第幾行以及一些其它關(guān)于本頁內(nèi)容的詳細(xì)信息;h
鍵:顯示幫助文檔;/
鍵:進入搜索模式后,按n
鍵跳到一個符合項目,按N
鍵跳到上一個符合項目,同時也可以輸入正則表達式匹配。
head
顯示文件的開頭幾行(默認(rèn)是10行)
【參數(shù)】
-n
指定行數(shù)head cloud-init.log -n 2
tail
顯示文件的結(jié)尾幾行(默認(rèn)是10行)
【參數(shù)】
-n
指定行數(shù)head cloud-init.log -n 2
tail
顯示文件的結(jié)尾幾行(默認(rèn)是10行)
【參數(shù)】
-n
指定行數(shù)tail cloud-init.log -n 2
-f
會每過1秒檢查下文件是否有更新內(nèi)容,也可以用-s
參數(shù)指定間隔時間tail -f -s 4 xxx.log
touch
創(chuàng)建一個文件
mkdir
創(chuàng)建一個目錄
【常用參數(shù)】
-p
遞歸的創(chuàng)建目錄結(jié)構(gòu)mkdir -p one/two/three
文件的復(fù)制和移動
cp
拷貝文件和目錄
【常用參數(shù)】
-r
遞歸的拷貝,常用來拷貝一整個目錄
mv
移動(重命名)文件或目錄,與cp命令用法相似。
文件的刪除和鏈接
rm
刪除文件和目錄,由于 Linux
下沒有回收站,一旦刪除非常難恢復(fù),因此需要謹(jǐn)慎操作
【常用參數(shù)】
-i
向用戶確認(rèn)是否刪除;-f
文件強制刪除;-r
遞歸刪除文件夾,著名的刪除操作rm -rf
。
ln
英文 Link
的縮寫,表示創(chuàng)建鏈接。
學(xué)習(xí)創(chuàng)建鏈接之前,首先要理解鏈接是什么,我們先來看看 Linux 的文件是如何存儲的:
Linux 文件的存儲方式分為3個部分,文件名、文件內(nèi)容以及權(quán)限,其中文件名的列表是存儲在硬盤的其它地方和文件內(nèi)容是分開存放的,每個文件名通過 inode 標(biāo)識綁定到文件內(nèi)容。
Linux 下有兩種鏈接類型:硬鏈接和軟鏈接。
硬鏈接
使鏈接的兩個文件共享同樣文件內(nèi)容,就是同樣的 inode
,一旦文件1和文件2之間有了硬鏈接,那么修改任何一個文件,修改的都是同一塊內(nèi)容,它的缺點是,只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的(其實也可以,但比較復(fù)雜)而軟鏈接都可以,因此軟鏈接使用更加廣泛。

如果我們用 rm file1 來刪除 file1 ,對 file2 沒有什么影響,對于硬鏈接來說,刪除任意一方的文件,共同指向的文件內(nèi)容并不會從硬盤上刪除。只有同時刪除了 file1 與 file2 后,它們共同指向的文件內(nèi)容才會消失。
軟鏈接
軟鏈接就類似 windows 下快捷方式。

執(zhí)行 ls -l
命名查看當(dāng)前目錄下文件的具體信息
其實 file2 只是 file1 的一個快捷方式,它指向的是 file1 ,所以顯示的是 file1 的內(nèi)容,但其實 file2 的 inode 與 file1 并不相同。如果我們刪除了 file2 的話, file1 是不會受影響的,但如果刪除 file1 的話, file2 就會變成死鏈接,因為指向的文件不見了。
用戶與權(quán)限
用戶
Linux
是一個多用戶的操作系統(tǒng)。在 Linux
中,理論上來說,我們可以創(chuàng)建無數(shù)個用戶,但是這些用戶是被劃分到不同的群組里面的,有一個用戶,名叫 root
,是一個很特殊的用戶,它是超級用戶,擁有最高權(quán)限。

自己創(chuàng)建的用戶是有限權(quán)限的用戶,這樣大大提高了 Linux
系統(tǒng)的安全性,有效防止誤操作或是病毒攻擊,但是我們執(zhí)行的某些命令需要更高權(quán)限時可以使用 sudo
命令。
sudo
以 root
身份運行命令
useradd + passwd
useradd
添加新用戶passwd
修改用戶密碼
這兩個命令需要 root
用戶權(quán)限
userdel
刪除用戶,需要 root
用戶權(quán)限
su
切換用戶,需要 root
用戶權(quán)限
群組的管理
Linux
中每個用戶都屬于一個特定的群組,如果你不設(shè)置用戶的群組,默認(rèn)會創(chuàng)建一個和它的用戶名一樣的群組,并且把用戶劃歸到這個群組。
groupadd
創(chuàng)建群組,用法和 useradd
類似。
groupdel
刪除一個已存在的群組
groups
查看用戶所在群組
usermod
用于修改用戶的賬戶。
【常用參數(shù)】
-l
對用戶重命名。需要注意的是/home
中的用戶家目錄的名字不會改變,需要手動修改。-g
修改用戶所在的群組,例如usermod -g friends lion
修改lion
用戶的群組為friends
。-G
一次性讓用戶添加多個群組,例如usermod -G friends,foo,bar lion
。-a
-G
會讓你離開原先的群組,如果你不想這樣做的話,就得再添加-a
參數(shù),意味著append
追加的意思。
chgrp
用于修改文件的群組。
chown
改變文件的所有者,需要 root
身份才能運行。
【常用參數(shù)】
-R
遞歸設(shè)置子目錄和子文件,chown -R lion:lion /home/frank
把frank
文件夾的用戶和群組都改為lion
。
文件權(quán)限管理
chmod
修改訪問權(quán)限。
【常用參數(shù)】
-R
可以遞歸地修改文件訪問權(quán)限,例如chmod -R 777 /home/lion
修改權(quán)限的確簡單,但是理解其深層次的意義才是更加重要的。下面我們來系統(tǒng)的學(xué)習(xí) Linux
的文件權(quán)限。
其中 drwxr-xr-x
表示文件或目錄的權(quán)限。讓我們一起來解讀它具體代表什么?
d
:表示目錄,就是說這是一個目錄,普通文件是-
,鏈接是l
。r
:read
表示文件可讀。w
:write
表示文件可寫,一般有寫的權(quán)限,就有刪除的權(quán)限。x
:execute
表示文件可執(zhí)行。-
:表示沒有相應(yīng)權(quán)限。
權(quán)限的整體是按用戶來劃分的,如下圖所示:

現(xiàn)在再來理解這句權(quán)限 drwxr-xr-x
的意思:
它是一個文件夾;
它的所有者具有:讀、寫、執(zhí)行權(quán)限;
它的群組用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限;
它的其它用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限。
現(xiàn)在理解了權(quán)限,我們使用 chmod
來嘗試修改權(quán)限。 chmod
它不需要是 root
用戶才能運行的,只要你是此文件所有者,就可以用 chmod
來修改文件的訪問權(quán)限。
數(shù)字分配權(quán)限

因此要改變權(quán)限,只要做一些簡單的加法就行:
用字母來分配權(quán)限
u
:user
的縮寫,用戶的意思,表示所有者。g
:group
的縮寫,群組的意思,表示群組用戶。o
:other
的縮寫,其它的意思,表示其它用戶。a
:all
的縮寫,所有的意思,表示所有用戶。+
:加號,表示添加權(quán)限。-
:減號,表示去除權(quán)限。=
:等于號,表示分配權(quán)限。
查找文件
locate
搜索包含關(guān)鍵字的所有文件和目錄。后接需要查找的文件名,也可以用正則表達式。
安裝 locate
[注意] locate
命令會去文件數(shù)據(jù)庫中查找命令,而不是全磁盤查找,因此剛創(chuàng)建的文件并不會更新到數(shù)據(jù)庫中,所以無法被查找到,可以執(zhí)行 updatedb
命令去更新數(shù)據(jù)庫。
find
用于查找文件,它會去遍歷你的實際硬盤進行查找,而且它允許我們對每個找到的文件進行后續(xù)操作,功能非常強大。
「何處」:指定在哪個目錄查找,此目錄的所有子目錄也會被查找。
「何物」:查找什么,可以根據(jù)文件的名字來查找,也可以根據(jù)其大小來查找,還可以根據(jù)其最近訪問時間來查找。
「做什么」:找到文件后,可以進行后續(xù)處理,如果不指定這個參數(shù),
find
命令只會顯示找到的文件。
根據(jù)文件名查找
[注意] find
命令只會查找完全符合 “何物” 字符串的文件,而 locate
會查找所有包含關(guān)鍵字的文件。
根據(jù)文件大小查找
根據(jù)文件最近訪問時間查找
僅查找目錄或文件
操作查找結(jié)果
軟件倉庫
Linux
下軟件是以包的形式存在,一個軟件包其實就是軟件的所有文件的壓縮包,是二進制的形式,包含了安裝軟件的所有指令。 Red Hat
家族的軟件包后綴名一般為 .rpm
, Debian
家族的軟件包后綴是 .deb
。
Linux
的包都存在一個倉庫,叫做軟件倉庫,它可以使用 yum
來管理軟件包, yum
是 CentOS
中默認(rèn)的包管理工具,適用于 Red Hat
一族??梢岳斫獬?Node.js
的 npm
。
yum 常用命令
yum update | yum upgrade
更新軟件包yum search xxx
搜索相應(yīng)的軟件包yum install xxx
安裝軟件包yum remove xxx
刪除軟件包
切換 CentOS 軟件源
有時候 CentOS
默認(rèn)的 yum
源不一定是國內(nèi)鏡像,導(dǎo)致 yum
在線安裝及更新速度不是很理想。這時候需要將 yum
源設(shè)置為國內(nèi)鏡像站點。國內(nèi)主要開源的鏡像站點是網(wǎng)易和阿里云。
1、首先備份系統(tǒng)自帶 yum 源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下載阿里云的 yum 源配置文件到 /etc/yum.repos.d/CentOS7
3、生成緩存
閱讀手冊
Linux
命令種類繁雜,我們憑借記憶不可能全部記住,因此學(xué)會查用手冊是非常重要的。
man
安裝更新 man
man 手冊種類
可執(zhí)行程序或
Shell
命令;系統(tǒng)調(diào)用(
Linux
內(nèi)核提供的函數(shù));庫調(diào)用(程序庫中的函數(shù));
文件(例如
/etc/passwd
);特殊文件(通常在
/dev
下);游戲;
雜項(
man(7)
,groff(7)
);系統(tǒng)管理命令(通常只能被
root
用戶使用);內(nèi)核子程序。
man + 數(shù)字 + 命令
輸入 man + 數(shù)字 + 命令/函數(shù),可以查到相關(guān)的命令和函數(shù),若不加數(shù)字, man
默認(rèn)從數(shù)字較小的手冊中尋找相關(guān)命令和函數(shù)
man 手冊核心區(qū)域解析:(以 man pwd
為例)
help
man
命令像新華詞典一樣可以查詢到命令或函數(shù)的詳細(xì)信息,但其實我們還有更加快捷的方式去查詢, command --help
或 command -h
,它沒有 man
命令顯示的那么詳細(xì),但是它更加易于閱讀。
Linux 進階
文本操作
grep
全局搜索一個正則表達式,并且打印到屏幕。簡單來說就是,在文件中查找關(guān)鍵字,并顯示關(guān)鍵字所在行。
基礎(chǔ)語法
常用參數(shù)
-i
忽略大小寫,grep -i path /etc/profile
-n
顯示行號,grep -n path /etc/profile
-v
只顯示搜索文本不在的那些行,grep -v path /etc/profile
-r
遞歸查找,grep -r hello /etc
,Linux 中還有一個 rgrep 命令,作用相當(dāng)于grep -r
高級用法
grep
可以配合正則表達式使用。
sort
對文件的行進行排序。
基礎(chǔ)語法
實例用法
為了演示方便,我們首先創(chuàng)建一個文件 name.txt
,放入以下內(nèi)容:
執(zhí)行 sort name.txt
命令,會對文本內(nèi)容進行排序。
常用參數(shù)
-o
將排序后的文件寫入新文件,sort -o name_sorted.txt name.txt
;-r
倒序排序,sort -r name.txt
;-R
隨機排序,sort -R name.txt
;-n
對數(shù)字進行排序,默認(rèn)是把數(shù)字識別成字符串的,因此 138 會排在 25 前面,如果添加了-n
數(shù)字排序的話,則 25 會在 138 前面。
wc
word count
的縮寫,用于文件的統(tǒng)計。它可以統(tǒng)計單詞數(shù)目、行數(shù)、字符數(shù),字節(jié)數(shù)等。
基礎(chǔ)語法
實例用法
第一個13,表示行數(shù);
第二個13,表示單詞數(shù);
第三個91,表示字節(jié)數(shù)。
常用參數(shù)
-l
只統(tǒng)計行數(shù),wc -l name.txt
;-w
只統(tǒng)計單詞數(shù),wc -w name.txt
;-c
只統(tǒng)計字節(jié)數(shù),wc -c name.txt
;-m
只統(tǒng)計字符數(shù),wc -m name.txt
。
uniq
刪除文件中的重復(fù)內(nèi)容。
基礎(chǔ)語法
【注意】它只能去除連續(xù)重復(fù)的行數(shù)。
常用參數(shù)
-c
統(tǒng)計重復(fù)行數(shù),uniq -c name.txt
;-d
只顯示重復(fù)的行數(shù),uniq -d name.txt
。
cut
剪切文件的一部分內(nèi)容。
基礎(chǔ)語法
常用參數(shù)
-d
用于指定用什么分隔符(比如逗號、分號、雙引號等等)cut -d , name.txt
;-f
表示剪切下用分隔符分割的哪一塊或哪幾塊區(qū)域,cut -d , -f 1 name.txt
。
重定向 管道 流
在 Linux
中一個命令的去向可以有3個地方:終端、文件、作為另外一個命令的入?yún)ⅰ?/p>
重定向
把本來要顯示在終端的命令結(jié)果,輸送到別的地方(到文件中或者作為其他命令的輸入)。
輸出重定向 >
>
表示重定向到新的文件, cut -d , -f 1 notes.csv > name.csv
,它表示通過逗號剪切 notes.csv
文件(剪切完有3個部分)獲取第一個部分,重定向到 name.csv
文件。
我們來看一個具體示例,學(xué)習(xí)它的使用,假設(shè)我們有一個文件 notes.csv
,文件內(nèi)容如下:
執(zhí)行命令: cut -d , -f 1 notes.csv > name.csv
最后輸出如下內(nèi)容:
【注意】使用 >
要注意,如果輸出的文件不存在它會新建一個,如果輸出的文件已經(jīng)存在,則會覆蓋。因此執(zhí)行這個操作要非常小心,以免覆蓋其它重要文件。
輸出重定向 >>
表示重定向到文件末尾,因此它不會像 >
命令這么危險,它是追加到文件的末尾(當(dāng)然如果文件不存在,也會被創(chuàng)建)。
再次執(zhí)行 cut -d , -f 1 notes.csv >> name.csv
,則會把名字追加到 name.csv
里面。
我們平時讀的 log
日志文件其實都是用這個命令輸出的。
輸出重定向 2>
標(biāo)準(zhǔn)錯誤輸出
當(dāng)我們
cat
一個文件時,會把文件內(nèi)容打印到屏幕上,這個是標(biāo)準(zhǔn)輸出;當(dāng)使用了
> res.txt
時,則不會打印到屏幕,會把標(biāo)準(zhǔn)輸出寫入文件res.txt
文件中;2> errors.log
當(dāng)發(fā)生錯誤時會寫入errors.log
文件中。
輸出重定向 2>>
標(biāo)準(zhǔn)錯誤輸出(追加到文件末尾)同 >>
相似。
輸出重定向 2>&1
標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出都重定向都一個地方
目前為止,我們接觸的命令的輸入都來自命令的參數(shù),其實命令的輸入還可以來自文件或者鍵盤的輸入。

輸入重定向 <
<
符號用于指定命令的輸入。
雖然它的運行結(jié)果與 cat name.csv
一樣,但是它們的原理卻完全不同。
cat name.csv
表示cat
命令接收的輸入是notes.csv
文件名,那么要先打開這個文件,然后打印出文件內(nèi)容。cat < name.csv
表示cat
命令接收的輸入直接是notes.csv
這個文件的內(nèi)容,cat
命令只負(fù)責(zé)將其內(nèi)容打印,打開文件并將文件內(nèi)容傳遞給cat
命令的工作則交給終端完成。
輸入重定向 <<
將鍵盤的輸入重定向為某個命令的輸入。
管道 |
把兩個命令連起來使用,一個命令的輸出作為另外一個命令的輸入,英文是 pipeline
,可以想象一個個水管連接起來,管道算是重定向流的一種。

舉幾個實際用法案例:
流
流并非一個命令,在計算機科學(xué)中,流 stream
的含義是比較難理解的,記住一點即可:「流就是讀一點數(shù)據(jù), 處理一點點數(shù)據(jù)。其中數(shù)據(jù)一般就是二進制格式?!?/strong> 上面提及的重定向或管道,就是把數(shù)據(jù)當(dāng)做流去運轉(zhuǎn)的。
到此我們就接觸了,流、重定向、管道等 Linux
高級概念及指令。其實你會發(fā)現(xiàn)關(guān)于流和管道在其它語言中也有廣泛的應(yīng)用。 Angular
中的模板語法中可以使用管道。 Node.js
中也有 stream
流的概念。
查看進程
在 Windows
中通過 Ctrl + Alt + Delete
快捷鍵查看軟件進程。
w
幫助我們快速了解系統(tǒng)中目前有哪些用戶登錄著,以及他們在干什么。
ps
用于顯示當(dāng)前系統(tǒng)中的進程, ps
命令顯示的進程列表不會隨時間而更新,是靜態(tài)的,是運行 ps
命令那個時刻的狀態(tài)或者說是一個進程快照。
基礎(chǔ)語法
常用參數(shù)
-ef
列出所有進程;-efH
以喬木狀列舉出所有進程;-u
列出此用戶運行的進程;-aux
通過CPU
和內(nèi)存使用來過濾進程ps -aux | less
;-aux --sort -pcpu
按CPU
使用降序排列,-aux --sort -pmem
表示按內(nèi)存使用降序排列;-axjf
以樹形結(jié)構(gòu)顯示進程,ps -axjf
它和pstree
效果類似。
top
獲取進程的動態(tài)列表。
top - 07:20:07 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07
相當(dāng)w
命令的第一行的信息。展示的這些進程是按照使用處理器
%CPU
的使用率來排序的。
kill
結(jié)束一個進程, kill + PID
。
管理進程
進程狀態(tài)
主要是切換進程的狀態(tài)。我們先了解下 Linux
下進程的五種狀態(tài):
狀態(tài)碼
R
:表示正在運行的狀態(tài);狀態(tài)碼
S
:表示中斷(休眠中,受阻,當(dāng)某個條件形成后或接受到信號時,則脫離該狀態(tài));狀態(tài)碼
D
:表示不可中斷(進程不響應(yīng)系統(tǒng)異步信號,即使用kill命令也不能使其中斷);狀態(tài)碼
Z
:表示僵死(進程已終止,但進程描述符依然存在,直到父進程調(diào)用wait4()
系統(tǒng)函數(shù)后將進程釋放);狀態(tài)碼
T
:表示停止(進程收到SIGSTOP
、SIGSTP
、SIGTIN
、SIGTOU
等停止信號后停止運行)。
前臺進程 & 后臺進程
默認(rèn)情況下,用戶創(chuàng)建的進程都是前臺進程,前臺進程從鍵盤讀取數(shù)據(jù),并把處理結(jié)果輸出到顯示器。例如運行 top
命令,這就是一個一直運行的前臺進程。
后臺進程的優(yōu)點是不必等待程序運行結(jié)束,就可以輸入其它命令。在需要執(zhí)行的命令后面添加 &
符號,就表示啟動一個后臺進程。
&
啟動后臺進程,它的缺點是后臺進程與終端相關(guān)聯(lián),一旦關(guān)閉終端,進程就自動結(jié)束了。
nohup
使進程不受掛斷(關(guān)閉終端等動作)的影響。
nohup
命令也可以和 &
結(jié)合使用。
bg
使一個“后臺暫停運行”的進程,狀態(tài)改為“后臺運行”。
實際案例1:
實際案例2:
jobs
顯示當(dāng)前終端后臺進程狀態(tài)。
fg
fg
使進程轉(zhuǎn)為前臺運行,用法和 bg
命令類似。
我們用一張圖來表示前后臺進程切換:

我們可以使程序在后臺運行,成為后臺進程,這樣在當(dāng)前終端中我們就可以做其他事情了,而不必等待此進程運行結(jié)束。
守護進程
一個運行起來的程序被稱為進程。在 Linux 中有些進程是特殊的,它不與任何進程關(guān)聯(lián),不論用戶的身份如何,都在后臺運行,這些進程的父進程是 PID 為1的進程, PID 為1的進程只在系統(tǒng)關(guān)閉時才會被銷毀。它們會在后臺一直運行等待分配工作。我們將這類進程稱之為守護進程 daemon 。
守護進程的名字通常會在最后有一個 d ,表示 daemon 守護的意思,例如 systemd 、httpd 。
systemd
systemd
是一個 Linux
系統(tǒng)基礎(chǔ)組件的集合,提供了一個系統(tǒng)和服務(wù)管理器,運行為 PID 1
并負(fù)責(zé)啟動其它程序。
通過命令也可以看到 PID
為1的進程就是 systemd
的系統(tǒng)進程。
systemd
常用命令(它是一組命令的集合):
文件壓縮解壓
打包:是將多個文件變成一個總的文件,它的學(xué)名叫存檔、歸檔。
壓縮:是將一個大文件(通常指歸檔)壓縮變成一個小文件。
我們常常使用 tar
將多個文件歸檔為一個總的文件,稱為 archive
。 然后用 gzip
或 bzip2
命令將 archive
壓縮為更小的文件。

tar
創(chuàng)建一個 tar
歸檔。
基礎(chǔ)用法
常用參數(shù)
-cvf
表示create
(創(chuàng)建)+verbose
(細(xì)節(jié))+file
(文件),創(chuàng)建歸檔文件并顯示操作細(xì)節(jié);-tf
顯示歸檔里的內(nèi)容,并不解開歸檔;-rvf
追加文件到歸檔,tar -rvf archive.tar file.txt
;-xvf
解開歸檔,tar -xvf archive.tar
。
gzip / gunzip
“壓縮/解壓”歸檔,默認(rèn)用 gzip
命令,壓縮后的文件后綴名為 .tar.gz
。
tar 歸檔+壓縮
可以用 tar
命令同時完成歸檔和壓縮的操作,就是給 tar
命令多加一個選項參數(shù),使之完成歸檔操作后,還是調(diào)用 gzip
或 bzip2
命令來完成壓縮操作。
zcat、zless、zmore
之前講過使用 cat less more
可以查看文件內(nèi)容,但是壓縮文件的內(nèi)容是不能使用這些命令進行查看的,而要使用 zcat、zless、zmore
進行查看。
zip/unzip
“壓縮/解壓” zip
文件( zip
壓縮文件一般來自 windows
操作系統(tǒng))。
命令安裝
基礎(chǔ)用法
編譯安裝軟件
之前我們學(xué)會了使用 yum
命令進行軟件安裝,如果碰到 yum
倉庫中沒有的軟件,我們就需要會更高級的軟件安裝“源碼編譯安裝”。
編譯安裝
簡單來說,編譯就是將程序的源代碼轉(zhuǎn)換成可執(zhí)行文件的過程。大多數(shù) Linux
的程序都是開放源碼的,可以編譯成適合我們的電腦和操縱系統(tǒng)屬性的可執(zhí)行文件。
基本步驟如下:
下載源代碼
解壓壓縮包
配置
編譯
安裝
實際案例
1、下載
我們來編譯安裝 htop
軟件,首先在它的官網(wǎng)下載源碼:
https://bintray.com/htop/source/htop#files
下載好的源碼在本機電腦上使用如下命令同步到服務(wù)器上:
也可以使用 wegt
進行下載:
2、解壓文件
3、配置
執(zhí)行 ./configure
,它會分析你的電腦去確認(rèn)編譯所需的工具是否都已經(jīng)安裝了。
4、編譯
執(zhí)行 make
命令
5、安裝
執(zhí)行 make install
命令,安裝完成后執(zhí)行 ls /usr/local/bin/
查看是否有 htop
命令。如果有就可以執(zhí)行 htop
命令查看系統(tǒng)進程了。
網(wǎng)絡(luò)
ifconfig
查看 ip
網(wǎng)絡(luò)相關(guān)信息,如果命令不存在的話, 執(zhí)行命令 yum install net-tools
安裝。
參數(shù)解析:
eth0
對應(yīng)有線連接(對應(yīng)你的有線網(wǎng)卡),就是用網(wǎng)線來連接的上網(wǎng)。eth
是Ethernet
的縮寫,表示“以太網(wǎng)”。有些電腦可能同時有好幾條網(wǎng)線連著,例如服務(wù)器,那么除了eht0
,你還會看到eth1
、eth2
等。lo 表示本地回環(huán)( Local Loopback 的縮寫,對應(yīng)一個虛擬網(wǎng)卡)可以看到它的 ip 地址是 127.0.0.1 。每臺電腦都應(yīng)該有這個接口,因為它對應(yīng)著“連向自己的鏈接”。這也是被稱之為“本地回環(huán)”的原因。所有經(jīng)由這個接口發(fā)送的東西都會回到你自己的電腦??雌饋砗孟癫]有什么用,但有時為了某些緣故,我們需要連接自己。例如用來測試一個網(wǎng)絡(luò)程序,但又不想讓局域網(wǎng)或外網(wǎng)的用戶查看,只能在此臺主機上運行和查看所有的網(wǎng)絡(luò)接口。例如在我們啟動一個前端工程時,在瀏覽器輸入 127.0.0.1:3000 啟動項目就能查看到自己的 web 網(wǎng)站,并且它只有你能看到。
wlan0
表示無線局域網(wǎng)(上面案例并未展示)。
host
ip
地址和主機名的互相轉(zhuǎn)換。
軟件安裝
基礎(chǔ)用法
ssh 連接遠(yuǎn)程服務(wù)器
通過非對稱加密以及對稱加密的方式(同 HTTPS
安全連接原理相似)連接到遠(yuǎn)端服務(wù)器。
配置 ssh
config
文件可以配置 ssh
,方便批量管理多個 ssh
連接。
配置文件分為以下幾種:
全局
ssh
服務(wù)端的配置:/etc/ssh/sshd_config
;全局
ssh
客戶端的配置:/etc/ssh/ssh_config
(很少修改);當(dāng)前用戶
ssh
客戶端的配置:~/.ssh/config
。
【服務(wù)端 config
文件的常用配置參數(shù)】

[注意] 修改完服務(wù)端配置文件需要重啟服務(wù)
systemctl restart sshd
【客戶端 config
文件的常用配置參數(shù)】

配置當(dāng)前用戶的 config
:
這樣配置完成后,下次登錄時,可以這樣登錄 ssh lion
會自動識別為 root
用戶。
[注意] 這段配置不是在服務(wù)器上,而是你自己的機器上,它僅僅是設(shè)置了一個別名。
免密登錄
ssh
登錄分兩種,一種是基于口令(賬號密碼),另外一種是基于密鑰的方式。
基于口令,就是每次登錄輸入賬號和密碼,顯然這樣做是比較麻煩的,今天主要學(xué)習(xí)如何基于密鑰實現(xiàn)免密登錄。
基于密鑰驗證原理
客戶機生成密鑰對(公鑰和私鑰),把公鑰上傳到服務(wù)器,每次登錄會與服務(wù)器的公鑰進行比較,這種驗證登錄的方法更加安全,也被稱為“公鑰驗證登錄”。
具體實現(xiàn)步驟
1、在客戶機中生成密鑰對(公鑰和私鑰) ssh-keygen
(默認(rèn)使用 RSA 非對稱加密算法)
運行完 ssh-keygen
會在 ~/.ssh/
目錄下,生成兩個文件:
id_rsa.pub
:公鑰id_rsa
:私鑰
2、把客戶機的公鑰傳送到服務(wù)
執(zhí)行 ssh-copy-id root@172.x.x.x(ssh-copy-id 它會把客戶機的公鑰追加到服務(wù)器 ~/.ssh/authorized_keys 的文件中)。
執(zhí)行完成后,運行 ssh root@172.x.x.x 就可以實現(xiàn)免密登錄服務(wù)器了。
配合上面設(shè)置好的別名,直接執(zhí)行 ssh lion 就可以登錄,是不是非常方便。
wget
可以使我們直接從終端控制臺下載文件,只需要給出文件的HTTP或FTP地址。
wget
非常穩(wěn)定,如果是由于網(wǎng)絡(luò)原因下載失敗, wget
會不斷嘗試,直到整個文件下載完畢。
常用參數(shù)
-c
繼續(xù)中斷的下載。
備份
scp
它是 Secure Copy
的縮寫,表示安全拷貝。 scp
可以使我們通過網(wǎng)絡(luò),把文件從一臺電腦拷貝到另一臺電腦。
scp
是基于 ssh
的原理來運作的, ssh
會在兩臺通過網(wǎng)絡(luò)連接的電腦之間創(chuàng)建一條安全通信的管道, scp
就利用這條管道安全地拷貝文件。
其中 source_file
和 destination_file
都可以這樣表示: user@ip:file_name
, user
是登錄名, ip
是域名或 ip
地址。 file_name
是文件路徑。
rsync
rsync
命令主要用于遠(yuǎn)程同步文件。它可以同步兩個目錄,不管它們是否處于同一臺電腦。它應(yīng)該是最常用于“增量備份”的命令了。它就是智能版的 scp
命令。
軟件安裝
基礎(chǔ)用法
常用參數(shù)
-a
保留文件的所有信息,包括權(quán)限,修改日期等;-r
遞歸調(diào)用,表示子目錄的所有文件也都包括;-v
冗余模式,輸出詳細(xì)操作信息。
默認(rèn)地, rsync
在同步時并不會刪除目標(biāo)目錄的文件,例如你在源目錄中刪除一個文件,但是用 rsync
同步時,它并不會刪除同步目錄中的相同文件。如果向刪除也可以這么做: rsync -arv --delete Images/ backups/
。
系統(tǒng)
halt
關(guān)閉系統(tǒng),需要 root
身份。
reboot
重啟系統(tǒng),需要 root
身份。
poweroff
直接運行即可關(guān)機,不需要 root
身份。
Vim 編輯器
Vim 是什么?
Vim
是從 vi
發(fā)展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs
并列成為類 Unix
系統(tǒng)用戶最喜歡的編輯器。
Vim 常用模式
交互模式
插入模式
命令模式
可視模式
交互模式
也成為正常模式,這是 Vim
的默認(rèn)模式,每次運行 Vim
程序的時候,就會進入這個模式。
例如執(zhí)行 vim name.txt
則會進入交互模式。
交互模式特征:
在這個模式下,你不能輸入文本;
它可以讓我們在文本間移動,刪除一行文本,復(fù)制黏貼文本,跳轉(zhuǎn)到指定行,撤銷操作,等等。
插入模式
這個模式是我們熟悉的文本編輯器的模式,就是可以輸入任何你想輸入的內(nèi)容。進入這個模式有幾種方法,最常用的方法是按字母鍵 i
( i、I、a、A、o、O
都可以進入插入模式,只是所處的位置不同),退出這種模式,只需要按下 Esc
鍵。
i, I
進入輸入模式Insert mode
:i
為“從目前光標(biāo)所在處輸入”,I
為“在目前所在行的第一個非空格符處開始輸入”;a, A
進入輸入模式Insert mode
:a
為“從目前光標(biāo)所在的下一個字符處開始輸入”,A
為“從光標(biāo)所在行的最后一個字符處開始輸入”;o, O
進入輸入模式Insert mode
:o
為“在目前光標(biāo)所在的下一行處輸入新的一行”;O
為在目前光標(biāo)所在處的上一行輸入新的一行。
命令模式
命令模式也稱為底線命令模式,這個模式下可以運行一些命令例如“退出”,“保存”,等動作。
也可以用這個模式來激活一些 Vim
配置,例如語法高亮,顯示行號,等。甚至還可以發(fā)送一些命令給終端命令行,例如 ls、cp
。
為了進入命令模式,首先要進入交互模式,再按下冒號鍵。
用一張圖表示三種模式如何切換:

基本操作
打開 Vim
在終端命令行中輸入 vim
回車后 Vim
就會被運行起來,也可以用 Vim
來打開一個文件,只需要在 vim
后面再加文件名。如 vim file.name
,如果文件不存在,那么會被創(chuàng)建。
插入
進入文件之后,此時處于交互模式,可以通過輸入 i
進入插入模式。
移動
在 Vim
的交互模式下,我們可以在文本中移動光標(biāo)。
h
向左移動一個字符j
向下移動一個字符k
向上移動一個字符i
向右移動一個字符
當(dāng)然也可以使用四個方向鍵進行移動,效果是一樣的。
跳至行首和行末
「行首:」 在交互模式下,為了將光標(biāo)定位到一行的開始位置,只需要按下數(shù)字鍵
0
即可,鍵盤上的Home
鍵也有相同效果。「行末:」 在交互模式下,為了將光標(biāo)定位到一行的末尾,只需要按下美元符號鍵
$
即可,鍵盤上的End
鍵也有相同效果。
按單詞移動
在交互模式下,按字母鍵 w
可以一個單詞一個單詞的移動。
退出文件
在交互模式下,按下冒號鍵 :
進入命令模式,再按下 q
鍵,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q
退出 Vim
,那么 Vim
會顯示一個紅字標(biāo)明錯誤信息。此時我們有兩個選擇:
保存并退出
:wq
或:x
;不保存且退出
:q!
。
標(biāo)準(zhǔn)操作
刪除字符
在交互模式下,將光標(biāo)定位到一個你想要刪除的字符上,按下字母鍵 x
你會發(fā)現(xiàn)這個字符被刪除了。
也可以一次性刪除多個字符,只需要在按 x
鍵之前輸入數(shù)字即可。
刪除(剪切)單詞,行
「刪除一行」:連按兩次
d
來刪除光標(biāo)所在的那一行。「刪除多行」:例如先輸入數(shù)字
2
,再按下dd
,就會刪除從光標(biāo)所在行開始的兩行。「刪除一個單詞」:將光標(biāo)置于一個單詞的首字母處,然后按下
dw
。「刪除多個單詞」:例如先按數(shù)字鍵
2
再按dw
就可以刪除兩個單詞了。「從光標(biāo)所在位置刪除至行首」:
d0
。「從光標(biāo)所在位置刪除至行末」:
d$
。
復(fù)制單詞,行
「復(fù)制行」:按兩次
y
會把光標(biāo)所在行復(fù)制到內(nèi)存中,和dd
類似,dd
用于“剪切”光標(biāo)所在行。「復(fù)制單詞」:
yw
會復(fù)制一個單詞。「復(fù)制到行末」:
y$
是復(fù)制從光標(biāo)所在處到行末的所有字符。「復(fù)制到行首」:
y0
是復(fù)制光標(biāo)所在處到行首的所有字符。
粘貼
如果之前用 dd
或者 yy
剪切復(fù)制過來的,可以使用 p
來粘貼。同樣也可以使用 數(shù)字+p
來表示復(fù)制多次。
替換一個字符
在交互模式下,將光標(biāo)置于想要替換的字符上。按下 r
鍵,接著輸入你要替換的字符即可。
撤銷操作
如果要撤銷最近的修改,只需要按下 u
鍵,如果想要撤銷最近四次修改,可以按下4,再按下 u
重做
取消撤銷,也就是重做之前的修改使用 ctrl + r
。
跳轉(zhuǎn)到指定行
Vim
編輯的文件中,每一行都有一個行號,行號從1開始,逐一遞增。
行號默認(rèn)是不顯示,如果需要它顯示的話,可以進入命令模式,然后輸入 set nu
,如果要隱藏行號的話,使用 set nonu
。
跳轉(zhuǎn)到指定行:
數(shù)字+gg
,例如7gg
,表示跳轉(zhuǎn)到第7行。要跳轉(zhuǎn)到最后一行,按下
G
。要跳轉(zhuǎn)到第一行,按下
gg
。
高級操作
查找
處于交互模式下,按下 /
鍵,那么就進入查找模式,輸入你要查找的字符串,然后按下回車。光標(biāo)就會跳轉(zhuǎn)到文件中下一個查找到的匹配處。如果字符串不存在,那么會顯示 "pattern not found"
。
n
跳轉(zhuǎn)到下一個匹配項;N
跳轉(zhuǎn)到上一個匹配項。
?
[注意] 用斜杠來進行的查找是從當(dāng)前光標(biāo)處開始向文件尾搜索,如果你要從當(dāng)前光標(biāo)處開始,向文件頭搜索則使用
?
,當(dāng)然也可以先按下gg
跳轉(zhuǎn)到第一行在進行全文搜索。?
查找并替換
替換光標(biāo)所在行第一個匹配的字符串:
替換光標(biāo)所在行所有舊字符串為新字符串:
替換光標(biāo)所在行所有舊字符串為新字符串:
替換第幾行到第幾行中所有字符串:
最常用的就是全文替換了:
合并文件
可以用冒號 +r
( :r
) 實現(xiàn)在光標(biāo)處插入一個文件的內(nèi)容。
分屏
Vim
有一個特別便捷的功能那就是分屏,可以同時打開好幾個文件,分屏之后,屏幕每一塊被稱為一個 viewport
,表示“視口”。
橫向分屏
:sp 文件名
垂直分屏
:vsp 文件名
分屏模式下的快捷鍵
Ctrl + w
再加Ctrl + w
,表示從一個viewport
移動光標(biāo)到另外一個viewport
;Ctrl + w
再加 “方向鍵”,就可以移動到這個方向所處的下一個視口了;Ctrl + w
再加+
號,表示擴大當(dāng)前視口;Ctrl + w
再加-
號,表示縮小當(dāng)前視口;Ctrl + w
再加=
號,表示平均當(dāng)前視口;Ctrl + w
再加r
鍵,會反向調(diào)換視口位置;Ctrl + w
再加q
鍵,會關(guān)閉當(dāng)前視口;Ctrl + w
再加o
鍵,會關(guān)閉除當(dāng)前視口以外的所有視口;
運行外部命令 :!
在 Vim
中可以運行一些終端命令,只要先輸入 :!
,然后接命令名稱。
例如:
可視模式
前面只講了 Vim
的三種模式,其實還有一種模式叫做可視模式。
進入它的三種方式(都是從交互模式開始):
v
字符可視模式,進入后配合方向鍵選中字符后,然后再按d
鍵可以刪除選中。V
行可視模式,進入后光標(biāo)所在行默認(rèn)被選中,然后再按d
鍵可以刪除所在行。Ctrl + v
塊可視模式,它是可視模式最有用的功能了,配合d
和I
鍵可以實現(xiàn)刪除選中的內(nèi)容和插入內(nèi)容。
同時選中多行,并在選中行頭部插入內(nèi)容的具體操作步驟:
ctrl + v
進入塊可視模式使用方向鍵進行選中(上下左右)假設(shè)選中5行
輸入
I
鍵進行多行同時插入操作插入完成后連續(xù)按兩下
esc
鍵,實現(xiàn)多行同時插入相同字符
進入可視模式之后的操作鍵:
d
鍵,表示刪除選中;I
鍵,表示在選中之前插入;u
鍵,表示選中變?yōu)樾懀?/p>U
鍵,表示選中變?yōu)榇髮懀?/p>
Vim 配置
選項參數(shù)
在 Vim
被啟動后,可以運行一些指令來激活一些選項參數(shù),但是這些選項參數(shù)的配置在退出 Vim
時會被忘記,例如前面講解的激活行號。如果希望所在的配置是永久性的,那么需要在家目錄( cd ~
)創(chuàng)建一個 Vim
的配置文件 .vimrc
。
.vimrc
Vim
配置非常豐富,我們可以通過個性化配置把 Vim
打造成屬于自己的 IDE
等等。在 github
上也可以搜索到一些強大的 Vim
配置文件。
總結(jié)
相信通過本文的學(xué)習(xí),你應(yīng)該會對 Linux
有一個更加全面的認(rèn)識。
最后,實現(xiàn)Linux 命令自由。
