国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

?2 萬字系統(tǒng)總結(jié),帶你實(shí)現(xiàn) Linux 命令自由?

共 39213字,需瀏覽 79分鐘

 ·

2023-03-10 23:23


作者:Lion

鏈接:https://juejin.cn/post/6938385978004340744

前言

Linux 的學(xué)習(xí)對(duì)于一個(gè)程序員的重要性是不言而喻的。前端開發(fā)相比后端開發(fā),接觸 Linux 機(jī)會(huì)相對(duì)較少,因此往往容易忽視它。但是學(xué)好它卻是程序員必備修養(yǎng)之一。

如果本文對(duì)你有所幫助,請(qǐng)點(diǎn)個(gè)?? 吧。

作者使用的是阿里云服務(wù)器 ECS (最便宜的那種) CentOS 7.7 64位。當(dāng)然你也可以在自己的電腦安裝虛擬機(jī),虛擬機(jī)中再去安裝 CentOS 系統(tǒng)(這就完全免費(fèi)了)。至于它的安裝教程可以去谷歌搜索下,相關(guān)教程非常多。

Linux 基礎(chǔ)

操作系統(tǒng)

操作系統(tǒng) Operating System 簡(jiǎn)稱 OS ,是軟件的一部分,它是硬件基礎(chǔ)上的第一層軟件,是硬件和其它軟件溝通的橋梁。

操作系統(tǒng)會(huì)控制其他程序運(yùn)行,管理系統(tǒng)資源,提供最基本的計(jì)算功能,如管理及配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序等,同時(shí)還提供一些基本的服務(wù)程序。

什么是 Linux

Linux 系統(tǒng)內(nèi)核與 Linux 發(fā)行套件的區(qū)別

  • Linux 系統(tǒng)內(nèi)核指的是由 Linus Torvalds 負(fù)責(zé)維護(hù),提供硬件抽象層、硬盤及文件系統(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 對(duì)比 Windows

  1. 穩(wěn)定且有效率;
  2. 免費(fèi)(或少許費(fèi)用);
  3. 漏洞少且快速修補(bǔ);
  4. 多任務(wù)多用戶;
  5. 更加安全的用戶與文件權(quán)限策略;
  6. 適合小內(nèi)核程序的嵌入系統(tǒng);
  7. 相對(duì)不耗資源。

Linux 系統(tǒng)種類

  • 紅帽企業(yè)版 LinuxRHEL 是全世界內(nèi)使用最廣泛的 Linux 系統(tǒng)。它具有極強(qiáng)的性能與穩(wěn)定性,是眾多生成環(huán)境中使用的(收費(fèi)的)系統(tǒng)。
  • Fedora :由紅帽公司發(fā)布的桌面版系統(tǒng)套件,用戶可以免費(fèi)體驗(yàn)到最新的技術(shù)或工具,這些技術(shù)或工具在成熟后會(huì)被加入到 RHEL 系統(tǒng)中,因此 Fedora 也成為 RHEL 系統(tǒng)的試驗(yàn)版本。
  • CentOS :通過把 RHEL 系統(tǒng)重新編譯并發(fā)布給用戶免費(fèi)使用的 Linux 系統(tǒng),具有廣泛的使用人群。
  • Deepin :中國(guó)發(fā)行,對(duì)優(yōu)秀的開源成品進(jìn)行集成和配置。
  • Debian :穩(wěn)定性、安全性強(qiáng),提供了免費(fèi)的基礎(chǔ)支持,在國(guó)外擁有很高的認(rèn)可度和使用率。
  • Ubuntu :是一款派生自 Debian 的操作系統(tǒng),對(duì)新款硬件具有極強(qiáng)的兼容能力。UbuntuFedora 都是極其出色的 Linux 桌面系統(tǒng),而且 Ubuntu 也可用于服務(wù)器領(lǐng)域。

終端連接阿里云服務(wù)器

通過執(zhí)行 ssh [email protected] 命令,然后輸入服務(wù)器連接密碼就可以順利登陸遠(yuǎn)程服務(wù)器。從現(xiàn)在開始我們就可以在本地電腦操作遠(yuǎn)程服務(wù)器。

  1. 這個(gè)黑色的面板就是終端也就是 Shell (命令行環(huán)境)。
  2. ssh root@xxx 這是一條命令,必須要在 Shell 中才能執(zhí)行。

Shell

Shell 這個(gè)單詞的原意是“外殼”,跟 kernel(內(nèi)核)相對(duì)應(yīng),比喻內(nèi)核外面的一層,即用戶跟內(nèi)核交互的對(duì)話界面。

  • Shell 是一個(gè)程序,提供一個(gè)與用戶對(duì)話的環(huán)境。這個(gè)環(huán)境只有一個(gè)命令提示符,讓用戶從鍵盤輸入命令,所以又稱為命令行環(huán)境( command line interface ,簡(jiǎn)寫為 CLI )。Shell 接收到用戶輸入的命令,將命令送入操作系統(tǒng)執(zhí)行,并將結(jié)果返回給用戶。
  • Shell 是一個(gè)命令解釋器,解釋用戶輸入的命令。它支持變量、條件判斷、循環(huán)操作等語法,所以用戶可以用 Shell 命令寫出各種小程序,又稱為 Shell 腳本。這些腳本都通過 Shell 的解釋執(zhí)行,而不通過編譯。
  • Shell 是一個(gè)工具箱,提供了各種小工具,供用戶方便地使用操作系統(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 種類。

命令

命令行提示符

進(jìn)入命令行環(huán)境以后,用戶會(huì)看到 Shell 的提示符。提示符往往是一串前綴,最后以一個(gè)美元符號(hào) $ 結(jié)尾,用戶可以在這個(gè)符號(hào)后面輸入各種命令。

執(zhí)行一個(gè)簡(jiǎn)單的命令 pwd

[root@iZm5e8dsxce9ufaic7hi3uZ ~]# pwd
/root

命令解析:

  • root:表示用戶名;
  • iZm5e8dsxce9ufaic7hi3uZ:表示主機(jī)名;
  • ~:表示目前所在目錄為家目錄,其中 root 用戶的家目錄是 /root 普通用戶的家目錄在 /home 下;
  • #:指示你所具有的權(quán)限( root 用戶為 # ,普通用戶為 $ )。
  • 執(zhí)行 whoami 命令可以查看當(dāng)前用戶名;
  • 執(zhí)行 hostname 命令可以查看當(dāng)前主機(jī)名;

關(guān)于如何創(chuàng)建、切換、刪除用戶,在后面的用戶與權(quán)限會(huì)具體講解,這里先使用 root 用戶進(jìn)行演示。

[備注] root 是超級(jí)用戶,具備操作系統(tǒng)的一切權(quán)限。

命令格式

command parameters(命令 參數(shù))

長(zhǎng)短參數(shù)

單個(gè)參數(shù):ls -a(a 是英文 all 的縮寫,表示“全部”)
多個(gè)參數(shù):ls -al(全部文件 + 列表形式展示)
單個(gè)長(zhǎng)參數(shù):ls --all
多個(gè)長(zhǎng)參數(shù):ls --reverse --all
長(zhǎng)短混合參數(shù):ls --all -l

參數(shù)值

短參數(shù):command -p 10(例如:ssh [email protected] -p 22)
長(zhǎng)參數(shù):command --paramters=10(例如:ssh [email protected] --port=22)

快捷方式

在開始學(xué)習(xí) Linux 命令之前,有這么一些快捷方式,是必須要提前掌握的,它將貫穿整個(gè) Linux 使用生涯。

  • 通過上下方向鍵 ↑ ↓ 來調(diào)取過往執(zhí)行過的 Linux 命令;
  • 命令或參數(shù)僅需輸入前幾位就可以用 Tab 鍵補(bǔ)全;
  • Ctrl + R :用于查找使用過的命令(history 命令用于列出之前使用過的所有命令,然后輸入 ! 命令加上編號(hào)( !2 )就可以直接執(zhí)行該歷史命令);
  • Ctrl + L:清除屏幕并將當(dāng)前行移到頁面頂部;
  • Ctrl + C:中止當(dāng)前正在執(zhí)行的命令;
  • Ctrl + U:從光標(biāo)位置剪切到行首;
  • Ctrl + K:從光標(biāo)位置剪切到行尾;
  • Ctrl + W:剪切光標(biāo)左側(cè)的一個(gè)單詞;
  • Ctrl + Y:粘貼 Ctrl + U | K | Y 剪切的命令;
  • Ctrl + A:光標(biāo)跳到命令行的開頭;
  • Ctrl + E:光標(biāo)跳到命令行的結(jié)尾;
  • Ctrl + D:關(guān)閉 Shell 會(huì)話;

文件和目錄

文件的組織

查看路徑

pwd

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

which

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

總的來說一個(gè)命令就是一個(gè)可執(zhí)行程序。

瀏覽和切換目錄

ls

列出文件和目錄,它是 Linux 最常用的命令之一。

【常用參數(shù)】

  • -a 顯示所有文件和目錄包括隱藏的
  • -l 顯示詳細(xì)列表
  • -h 適合人類閱讀的
  • -t 按文件最近一次修改時(shí)間排序
  • -i 顯示文件的 inodeinode 是文件內(nèi)容的標(biāo)識(shí))

cd

cd 是英語 change directory 的縮寫,表示切換目錄。

cd / --> 跳轉(zhuǎn)到根目錄
cd ~ --> 跳轉(zhuǎn)到家目錄
cd .. --> 跳轉(zhuǎn)到上級(jí)目錄
cd ./home --> 跳轉(zhuǎn)到當(dāng)前目錄的home目錄下
cd /home/lion --> 跳轉(zhuǎn)到根目錄下的home目錄下的lion目錄
cd --> 不添加任何參數(shù),也是回到家目錄

[注意] 輸入cd /ho + 單次 tab 鍵會(huì)自動(dòng)補(bǔ)全路徑 + 兩次 tab 鍵會(huì)列出所有可能的目錄列表。

du

列舉目錄大小信息。

【常用參數(shù)】

  • -h 適合人類閱讀的;
  • -a 同時(shí)列舉出目錄下文件的大小信息;
  • -s 只顯示總計(jì)大小,不顯示具體信息。

瀏覽和創(chuàng)建文件

cat

一次性顯示文件所有內(nèi)容,更適合查看小的文件。

cat cloud-init.log

【常用參數(shù)】

  • -n 顯示行號(hào)。

less

分頁顯示文件內(nèi)容,更適合查看大的文件。

less cloud-init.log

【快捷操作】

  • 空格鍵:前進(jìn)一頁(一個(gè)屏幕);
  • b 鍵:后退一頁;
  • 回車鍵:前進(jìn)一行;
  • y 鍵:后退一行;
  • 上下鍵:回退或前進(jìn)一行;
  • d 鍵:前進(jìn)半頁;
  • u 鍵:后退半頁;
  • q 鍵:停止讀取文件,中止 less 命令;
  • = 鍵:顯示當(dāng)前頁面的內(nèi)容是文件中的第幾行到第幾行以及一些其它關(guān)于本頁內(nèi)容的詳細(xì)信息;
  • h 鍵:顯示幫助文檔;
  • / 鍵:進(jìn)入搜索模式后,按 n 鍵跳到一個(gè)符合項(xiàng)目,按 N 鍵跳到上一個(gè)符合項(xiàng)目,同時(shí)也可以輸入正則表達(dá)式匹配。

head

顯示文件的開頭幾行(默認(rèn)是10行)

head cloud-init.log

【參數(shù)】

  • -n 指定行數(shù) head cloud-init.log -n 2

tail

顯示文件的結(jié)尾幾行(默認(rèn)是10行)

tail cloud-init.log

【參數(shù)】

  • -n 指定行數(shù) tail cloud-init.log -n 2
  • -f 會(huì)每過1秒檢查下文件是否有更新內(nèi)容,也可以用 -s 參數(shù)指定間隔時(shí)間 tail -f -s 4 xxx.log

touch

創(chuàng)建一個(gè)文件

touch new_file

mkdir

創(chuàng)建一個(gè)目錄

mkdir new_folder

【常用參數(shù)】

  • -p 遞歸的創(chuàng)建目錄結(jié)構(gòu) mkdir -p one/two/three

文件的復(fù)制和移動(dòng)

cp

拷貝文件和目錄

cp file file_copy --> file 是目標(biāo)文件,file_copy 是拷貝出來的文件
cp file one --> 把 file 文件拷貝到 one 目錄下,并且文件名依然為 file
cp file one/file_copy --> 把 file 文件拷貝到 one 目錄下,文件名為file_copy
cp *.txt folder --> 把當(dāng)前目錄下所有 txt 文件拷貝到 folder 目錄下

【常用參數(shù)】

  • -r 遞歸的拷貝,常用來拷貝一整個(gè)目錄

mv

移動(dòng)(重命名)文件或目錄,與cp命令用法相似。

mv file one --> 將 file 文件移動(dòng)到 one 目錄下
mv new_folder one --> 將 new_folder 文件夾移動(dòng)到one目錄下
mv *.txt folder --> 把當(dāng)前目錄下所有 txt 文件移動(dòng)到 folder 目錄下
mv file new_file --> file 文件重命名為 new_file

文件的刪除和鏈接

rm

刪除文件和目錄,由于 Linux 下沒有回收站,一旦刪除非常難恢復(fù),因此需要謹(jǐn)慎操作

rm new_file  --> 刪除 new_file 文件
rm f1 f2 f3  --> 同時(shí)刪除 f1 f2 f3 3個(gè)文件

【常用參數(shù)】

  • -i 向用戶確認(rèn)是否刪除;
  • -f 文件強(qiáng)制刪除;
  • -r 遞歸刪除文件夾,著名的刪除操作 rm -rf 。

ln

英文 Link 的縮寫,表示創(chuàng)建鏈接。

學(xué)習(xí)創(chuàng)建鏈接之前,首先要理解鏈接是什么,我們先來看看 Linux 的文件是如何存儲(chǔ)的:

Linux 文件的存儲(chǔ)方式分為3個(gè)部分,文件名、文件內(nèi)容以及權(quán)限,其中文件名的列表是存儲(chǔ)在硬盤的其它地方和文件內(nèi)容是分開存放的,每個(gè)文件名通過 inode 標(biāo)識(shí)綁定到文件內(nèi)容。

Linux 下有兩種鏈接類型:硬鏈接和軟鏈接。

硬鏈接

使鏈接的兩個(gè)文件共享同樣文件內(nèi)容,就是同樣的 inode ,一旦文件1和文件2之間有了硬鏈接,那么修改任何一個(gè)文件,修改的都是同一塊內(nèi)容,它的缺點(diǎn)是,只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的(其實(shí)也可以,但比較復(fù)雜)而軟鏈接都可以,因此軟鏈接使用更加廣泛。

ln file1 file2  --> 創(chuàng)建 file2 為 file1 的硬鏈接

如果我們用 rm file1 來刪除 file1 ,對(duì) file2 沒有什么影響,對(duì)于硬鏈接來說,刪除任意一方的文件,共同指向的文件內(nèi)容并不會(huì)從硬盤上刪除。只有同時(shí)刪除了 file1file2 后,它們共同指向的文件內(nèi)容才會(huì)消失。

軟鏈接

軟鏈接就類似 windows 下快捷方式。

ln -s file1 file2

執(zhí)行 ls -l 命名查看當(dāng)前目錄下文件的具體信息

total 0
-rw-r--r-- 1 root root 0 Jan 14 06:29 file1
lrwxrwxrwx 1 root root 5 Jan 14 06:42 file2 -> file1  # 表示file2 指向 file1

其實(shí) file2 只是 file1 的一個(gè)快捷方式,它指向的是 file1 ,所以顯示的是 file1 的內(nèi)容,但其實(shí) file2inodefile1 并不相同。如果我們刪除了 file2 的話, file1 是不會(huì)受影響的,但如果刪除 file1 的話, file2 就會(huì)變成死鏈接,因?yàn)橹赶虻奈募灰娏恕?/p>

用戶與權(quán)限

用戶

Linux 是一個(gè)多用戶的操作系統(tǒng)。在 Linux 中,理論上來說,我們可以創(chuàng)建無數(shù)個(gè)用戶,但是這些用戶是被劃分到不同的群組里面的,有一個(gè)用戶,名叫 root ,是一個(gè)很特殊的用戶,它是超級(jí)用戶,擁有最高權(quán)限。

自己創(chuàng)建的用戶是有限權(quán)限的用戶,這樣大大提高了 Linux 系統(tǒng)的安全性,有效防止誤操作或是病毒攻擊,但是我們執(zhí)行的某些命令需要更高權(quán)限時(shí)可以使用 sudo 命令。

sudo

root 身份運(yùn)行命令

sudo date  --> 當(dāng)然查看日期是不需要sudo的這里只是演示,sudo 完之后一般還需要輸入用戶密碼的

useradd + passwd

  • useradd 添加新用戶
  • passwd 修改用戶密碼

這兩個(gè)命令需要 root 用戶權(quán)限

useradd lion --> 添加一個(gè)lion用戶,添加完之后在 /home 路徑下可以查看
passwd lion --> 修改lion用戶的密碼

userdel

刪除用戶,需要 root 用戶權(quán)限

userdel lion --> 只會(huì)刪除用戶名,不會(huì)從/home中刪除對(duì)應(yīng)文件夾
userdel lion -r --> 會(huì)同時(shí)刪除/home下的對(duì)應(yīng)文件夾

su

切換用戶,需要 root 用戶權(quán)限

sudo su --> 切換為root用戶(exit 命令或 CTRL + D 快捷鍵都可以使普通用戶切換為 root 用戶)
su lion --> 切換為普通用戶
su - --> 切換為root用戶

群組的管理

Linux 中每個(gè)用戶都屬于一個(gè)特定的群組,如果你不設(shè)置用戶的群組,默認(rèn)會(huì)創(chuàng)建一個(gè)和它的用戶名一樣的群組,并且把用戶劃歸到這個(gè)群組。

groupadd

創(chuàng)建群組,用法和 useradd 類似。

groupadd friends

groupdel

刪除一個(gè)已存在的群組

groupdel foo  --> 刪除foo群組

groups

查看用戶所在群組

groups lion  --> 查看 lion 用戶所在的群組

usermod

用于修改用戶的賬戶。

【常用參數(shù)】

  • -l 對(duì)用戶重命名。需要注意的是 /home 中的用戶家目錄的名字不會(huì)改變,需要手動(dòng)修改。
  • -g 修改用戶所在的群組,例如 usermod -g friends lion修改 lion 用戶的群組為 friends 。
  • -G 一次性讓用戶添加多個(gè)群組,例如 usermod -G friends,foo,bar lion 。
  • -a -G 會(huì)讓你離開原先的群組,如果你不想這樣做的話,就得再添加 -a 參數(shù),意味著 append 追加的意思。

chgrp

用于修改文件的群組。

chgrp bar file.txt --> file.txt文件的群組修改為bar

chown

改變文件的所有者,需要 root 身份才能運(yùn)行。

chown lion file.txt --> 把其它用戶創(chuàng)建的file.txt轉(zhuǎn)讓給lion用戶
chown lion:bar file.txt --> 把file.txt的用戶改為lion,群組改為bar

【常用參數(shù)】

  • -R 遞歸設(shè)置子目錄和子文件, chown -R lion:lion /home/frankfrank 文件夾的用戶和群組都改為 lion 。

文件權(quán)限管理

chmod

修改訪問權(quán)限。

chmod 740 file.txt

【常用參數(shù)】

  • -R 可以遞歸地修改文件訪問權(quán)限,例如 chmod -R 777 /home/lion

修改權(quán)限的確簡(jiǎn)單,但是理解其深層次的意義才是更加重要的。下面我們來系統(tǒng)的學(xué)習(xí) Linux 的文件權(quán)限。

[root@lion ~]# ls -l
drwxr-xr-x 5 root root 4096 Apr 13  2020 climb
lrwxrwxrwx 1 root root    7 Jan 14 06:41 hello2.c -> hello.c
-rw-r--r-- 1 root root  149 Jan 13 06:14 hello.c

其中 drwxr-xr-x 表示文件或目錄的權(quán)限。讓我們一起來解讀它具體代表什么?

  • d :表示目錄,就是說這是一個(gè)目錄,普通文件是 - ,鏈接是 l
  • rread 表示文件可讀。
  • wwrite 表示文件可寫,一般有寫的權(quán)限,就有刪除的權(quán)限。
  • xexecute 表示文件可執(zhí)行。
  • - :表示沒有相應(yīng)權(quán)限。

權(quán)限的整體是按用戶來劃分的,如下圖所示:

現(xiàn)在再來理解這句權(quán)限 drwxr-xr-x 的意思:

  • 它是一個(gè)文件夾;
  • 它的所有者具有:讀、寫、執(zhí)行權(quán)限;
  • 它的群組用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限;
  • 它的其它用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限。

現(xiàn)在理解了權(quán)限,我們使用 chmod 來嘗試修改權(quán)限。chmod 它不需要是 root 用戶才能運(yùn)行的,只要你是此文件所有者,就可以用 chmod 來修改文件的訪問權(quán)限。

數(shù)字分配權(quán)限
權(quán)限數(shù)字
r4
w2
x1

因此要改變權(quán)限,只要做一些簡(jiǎn)單的加法就行:

chmod 640 hello.c # 分析
6 = 4 + 2 + 0 表示所有者具有 rw 權(quán)限
4 = 4 + 0 + 0 表示群組用戶具有 r 權(quán)限
0 = 0 + 0 + 0 表示其它用戶沒有權(quán)限

對(duì)應(yīng)文字權(quán)限為:-rw-r-----

用字母來分配權(quán)限
  • uuser 的縮寫,用戶的意思,表示所有者。
  • ggroup 的縮寫,群組的意思,表示群組用戶。
  • oother 的縮寫,其它的意思,表示其它用戶。
  • aall 的縮寫,所有的意思,表示所有用戶。
  • + :加號(hào),表示添加權(quán)限。
  • - :減號(hào),表示去除權(quán)限。
  • = :等于號(hào),表示分配權(quán)限。
chmod u+rx file --> 文件file的所有者增加讀和運(yùn)行的權(quán)限
chmod g+r file --> 文件file的群組用戶增加讀的權(quán)限
chmod o-r file --> 文件file的其它用戶移除讀的權(quán)限
chmod g+r o-r file --> 文件file的群組用戶增加讀的權(quán)限,其它用戶移除讀的權(quán)限
chmod go-r file --> 文件file的群組和其他用戶移除讀的權(quán)限
chmod +x file --> 文件file的所有用戶增加運(yùn)行的權(quán)限
chmod u=rwx,g=r,o=- file --> 文件file的所有者分配讀寫和執(zhí)行的權(quán)限,群組其它用戶分配讀的權(quán)限,其他用戶沒有任何權(quán)限

查找文件

locate

搜索包含關(guān)鍵字的所有文件和目錄。后接需要查找的文件名,也可以用正則表達(dá)式。

安裝 locate

yum -y install mlocate --> 安裝包
updatedb --> 更新數(shù)據(jù)庫(kù)
locate file.txt
locate fil*.txt

[注意] locate 命令會(huì)去文件數(shù)據(jù)庫(kù)中查找命令,而不是全磁盤查找,因此剛創(chuàng)建的文件并不會(huì)更新到數(shù)據(jù)庫(kù)中,所以無法被查找到,可以執(zhí)行 updatedb 命令去更新數(shù)據(jù)庫(kù)。

find

用于查找文件,它會(huì)去遍歷你的實(shí)際硬盤進(jìn)行查找,而且它允許我們對(duì)每個(gè)找到的文件進(jìn)行后續(xù)操作,功能非常強(qiáng)大。

find <何處> <何物> <做什么>
  • 何處:指定在哪個(gè)目錄查找,此目錄的所有子目錄也會(huì)被查找。
  • 何物:查找什么,可以根據(jù)文件的名字來查找,也可以根據(jù)其大小來查找,還可以根據(jù)其最近訪問時(shí)間來查找。
  • 做什么:找到文件后,可以進(jìn)行后續(xù)處理,如果不指定這個(gè)參數(shù), find 命令只會(huì)顯示找到的文件。

根據(jù)文件名查找

find -name "file.txt" --> 當(dāng)前目錄以及子目錄下通過名稱查找文件
find . -name "syslog" --> 當(dāng)前目錄以及子目錄下通過名稱查找文件
find / -name "syslog" --> 整個(gè)硬盤下查找syslog
find /var/log -name "syslog" --> 在指定的目錄/var/log下查找syslog文件
find /var/log -name "syslog*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有
find /var/log -name "*syslog*" --> 查找包含syslog的文件 

[注意] find 命令只會(huì)查找完全符合 “何物” 字符串的文件,而 locate 會(huì)查找所有包含關(guān)鍵字的文件。

根據(jù)文件大小查找

find /var -size +10M --> /var 目錄下查找文件大小超過 10M 的文件
find /var -size -50k --> /var 目錄下查找文件大小小于 50k 的文件
find /var -size +1G --> /var 目錄下查找文件大小查過 1G 的文件
find /var -size 1M --> /var 目錄下查找文件大小等于 1M 的文件

根據(jù)文件最近訪問時(shí)間查找

find -name "*.txt" -atime -7  --> 近 7天內(nèi)訪問過的.txt結(jié)尾的文件

僅查找目錄或文件

find . -name "file" -type f  --> 只查找當(dāng)前目錄下的file文件find . -name "file" -type d  --> 只查找當(dāng)前目錄下的file目錄

操作查找結(jié)果

find -name "*.txt" -printf "%p - %u\n" --> 找出所有后綴為txt的文件,并按照 %p - %u\n 格式打印,其中%p=文件名,%u=文件所有者
find -name "*.jpg" -delete --> 刪除當(dāng)前目錄以及子目錄下所有.jpg為后綴的文件,不會(huì)有刪除提示,因此要慎用
find -name "*.c" -exec chmod 600 {} \; --> 對(duì)每個(gè).c結(jié)尾的文件,都進(jìn)行 -exec 參數(shù)指定的操作,{} 會(huì)被查找到的文件替代,\; 是必須的結(jié)尾
find -name "*.c" -ok chmod 600 {} \; --> 和上面的功能一直,會(huì)多一個(gè)確認(rèn)提示

軟件倉(cāng)庫(kù)

Linux 下軟件是以包的形式存在,一個(gè)軟件包其實(shí)就是軟件的所有文件的壓縮包,是二進(jìn)制的形式,包含了安裝軟件的所有指令。Red Hat 家族的軟件包后綴名一般為 .rpm , Debian 家族的軟件包后綴是 .deb 。

Linux 的包都存在一個(gè)倉(cāng)庫(kù),叫做軟件倉(cāng)庫(kù),它可以使用 yum 來管理軟件包, yumCentOS 中默認(rèn)的包管理工具,適用于 Red Hat 一族??梢岳斫獬?Node.jsnpm 。

yum 常用命令

  • yum update | yum upgrade 更新軟件包
  • yum search xxx 搜索相應(yīng)的軟件包
  • yum install xxx 安裝軟件包
  • yum remove xxx 刪除軟件包

切換 CentOS 軟件源

有時(shí)候 CentOS 默認(rèn)的 yum 源不一定是國(guó)內(nèi)鏡像,導(dǎo)致 yum 在線安裝及更新速度不是很理想。這時(shí)候需要將 yum 源設(shè)置為國(guó)內(nèi)鏡像站點(diǎn)。國(guó)內(nèi)主要開源的鏡像站點(diǎn)是網(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

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、生成緩存

yum makecache

閱讀手冊(cè)

Linux 命令種類繁雜,我們憑借記憶不可能全部記住,因此學(xué)會(huì)查用手冊(cè)是非常重要的。

man

安裝更新 man

sudo yum install -y man-pages --> 安裝
sudo mandb --> 更新

man 手冊(cè)種類

  1. 可執(zhí)行程序或 Shell 命令;
  2. 系統(tǒng)調(diào)用( Linux 內(nèi)核提供的函數(shù));
  3. 庫(kù)調(diào)用(程序庫(kù)中的函數(shù));
  4. 文件(例如 /etc/passwd );
  5. 特殊文件(通常在 /dev 下);
  6. 游戲;
  7. 雜項(xiàng)( man(7) ,groff(7) );
  8. 系統(tǒng)管理命令(通常只能被 root 用戶使用);
  9. 內(nèi)核子程序。

man + 數(shù)字 + 命令

輸入 man + 數(shù)字 + 命令/函數(shù),可以查到相關(guān)的命令和函數(shù),若不加數(shù)字, man 默認(rèn)從數(shù)字較小的手冊(cè)中尋找相關(guān)命令和函數(shù)

man 3 rand  --> 表示在手冊(cè)的第三部分查找 rand 函數(shù)
man ls               --> 查找 ls 用法手冊(cè)

man 手冊(cè)核心區(qū)域解析:(以 man pwd 為例)

NAME # 命令名稱和簡(jiǎn)單描述        pwd -- return working directory name

SYNOPSIS # 使用此命令的所有方法    
 pwd [-L | -P]

DESCRIPTION # 包括所有參數(shù)以及用法    
 The pwd utility writes the absolute pathname of the current working directory to the standard output.  
   Some shells may provide a builtin pwd command which is similar or identical to this utility.  Consult the builtin(1) manual page.   
  The options are as follows:   
  -L      Display the logical current working directory.  
   -P      Display the physical current working directory (all symbolic links resolved).   
  If no options are specified, the -L option is assumed.

SEE ALSO # 擴(kuò)展閱讀相關(guān)命令    
 builtin(1), cd(1), csh(1), sh(1), getcwd(3)

help

man 命令像新華詞典一樣可以查詢到命令或函數(shù)的詳細(xì)信息,但其實(shí)我們還有更加快捷的方式去查詢, command --helpcommand -h ,它沒有 man 命令顯示的那么詳細(xì),但是它更加易于閱讀。

Linux 進(jìn)階

文本操作

grep

全局搜索一個(gè)正則表達(dá)式,并且打印到屏幕。簡(jiǎn)單來說就是,在文件中查找關(guān)鍵字,并顯示關(guān)鍵字所在行。

基礎(chǔ)語法

grep text file # text代表要搜索的文本,file代表供搜索的文件

# 實(shí)例
[root@lion ~]# grep path /etc/profile
pathmunge () {  
  pathmunge /usr/sbin  
  pathmunge /usr/local/sbin  
  pathmunge /usr/local/sbin after  
  pathmunge /usr/sbin after
unset -f pathmunge

常用參數(shù)

  • -i 忽略大小寫, grep -i path /etc/profile
  • -n 顯示行號(hào),grep -n path /etc/profile
  • -v 只顯示搜索文本不在的那些行,grep -v path /etc/profile
  • -r 遞歸查找, grep -r hello /etc ,Linux 中還有一個(gè) rgrep 命令,作用相當(dāng)于 grep -r

高級(jí)用法

grep 可以配合正則表達(dá)式使用。

grep -E path /etc/profile --> 完全匹配path
grep -E ^path /etc/profile --> 匹配path開頭的字符串
grep -E [Pp]ath /etc/profile --> 匹配path或Path

sort

對(duì)文件的行進(jìn)行排序。

基礎(chǔ)語法

sort name.txt # 對(duì)name.txt文件進(jìn)行排序

實(shí)例用法

為了演示方便,我們首先創(chuàng)建一個(gè)文件 name.txt ,放入以下內(nèi)容:

Christopher
Shawn
Ted
Rock
Noah
Zachary
Bella

執(zhí)行 sort name.txt 命令,會(huì)對(duì)文本內(nèi)容進(jìn)行排序。

常用參數(shù)

  • -o 將排序后的文件寫入新文件, sort -o name_sorted.txt name.txt ;
  • -r 倒序排序, sort -r name.txt
  • -R 隨機(jī)排序, sort -R name.txt
  • -n 對(duì)數(shù)字進(jìn)行排序,默認(rèn)是把數(shù)字識(shí)別成字符串的,因此 138 會(huì)排在 25 前面,如果添加了 -n 數(shù)字排序的話,則 25 會(huì)在 138 前面。

wc

word count 的縮寫,用于文件的統(tǒng)計(jì)。它可以統(tǒng)計(jì)單詞數(shù)目、行數(shù)、字符數(shù),字節(jié)數(shù)等。

基礎(chǔ)語法

wc name.txt # 統(tǒng)計(jì)name.txt

實(shí)例用法

[root@lion ~]# wc name.txt 
13 13 91 name.txt

  • 第一個(gè)13,表示行數(shù);
  • 第二個(gè)13,表示單詞數(shù);
  • 第三個(gè)91,表示字節(jié)數(shù)。

常用參數(shù)

  • -l 只統(tǒng)計(jì)行數(shù), wc -l name.txt
  • -w 只統(tǒng)計(jì)單詞數(shù), wc -w name.txt
  • -c 只統(tǒng)計(jì)字節(jié)數(shù), wc -c name.txt ;
  • -m 只統(tǒng)計(jì)字符數(shù), wc -m name.txt 。

uniq

刪除文件中的重復(fù)內(nèi)容。

基礎(chǔ)語法

uniq name.txt # 去除name.txt重復(fù)的行數(shù),并打印到屏幕上
uniq name.txt uniq_name.txt # 把去除重復(fù)后的文件保存為 uniq_name.txt

【注意】它只能去除連續(xù)重復(fù)的行數(shù)。

常用參數(shù)

  • -c 統(tǒng)計(jì)重復(fù)行數(shù), uniq -c name.txt ;
  • -d 只顯示重復(fù)的行數(shù), uniq -d name.txt 。

cut

剪切文件的一部分內(nèi)容。

基礎(chǔ)語法

cut -c 2-4 name.txt # 剪切每一行第二到第四個(gè)字符

常用參數(shù)

  • -d 用于指定用什么分隔符(比如逗號(hào)、分號(hào)、雙引號(hào)等等) cut -d , name.txt
  • -f 表示剪切下用分隔符分割的哪一塊或哪幾塊區(qū)域, cut -d , -f 1 name.txt

重定向 管道 流

Linux 中一個(gè)命令的去向可以有3個(gè)地方:終端、文件、作為另外一個(gè)命令的入?yún)ⅰ?img class="rich_pages wxw-img" data-ratio="0.7672849915682968" data-type="other" data-w="593" src="https://filescdn.proginn.com/85053dad7cd9fa416e31b6ba0b0d09e6/c510fd4748f4a5469652bf98a1b4c178.webp" style="display: block;margin-right: auto;margin-left: auto;height: auto !important;">命令一般都是通過鍵盤輸入,然后輸出到終端、文件等地方,它的標(biāo)準(zhǔn)用語是 stdinstdout 以及 stderr 。

  • 標(biāo)準(zhǔn)輸入 stdin ,終端接收鍵盤輸入的命令,會(huì)產(chǎn)生兩種輸出;
  • 標(biāo)準(zhǔn)輸出 stdout ,終端輸出的信息(不包含錯(cuò)誤信息);
  • 標(biāo)準(zhǔn)錯(cuò)誤輸出 stderr ,終端輸出的錯(cuò)誤信息。

重定向

把本來要顯示在終端的命令結(jié)果,輸送到別的地方(到文件中或者作為其他命令的輸入)。

輸出重定向 >

> 表示重定向到新的文件, cut -d , -f 1 notes.csv > name.csv ,它表示通過逗號(hào)剪切 notes.csv 文件(剪切完有3個(gè)部分)獲取第一個(gè)部分,重定向到 name.csv 文件。

我們來看一個(gè)具體示例,學(xué)習(xí)它的使用,假設(shè)我們有一個(gè)文件 notes.csv ,文件內(nèi)容如下:

Mark1,951/100,很不錯(cuò)1Mark2,952/100,很不錯(cuò)2Mark3,953/100,很不錯(cuò)3Mark4,954/100,很不錯(cuò)4Mark5,955/100,很不錯(cuò)5Mark6,956/100,很不錯(cuò)6

執(zhí)行命令:cut -d , -f 1 notes.csv > name.csv 最后輸出如下內(nèi)容:

Mark1
Mark2
Mark3
Mark4
Mark5
Mark6

【注意】使用 > 要注意,如果輸出的文件不存在它會(huì)新建一個(gè),如果輸出的文件已經(jīng)存在,則會(huì)覆蓋。因此執(zhí)行這個(gè)操作要非常小心,以免覆蓋其它重要文件。

輸出重定向 >>

表示重定向到文件末尾,因此它不會(huì)像 > 命令這么危險(xiǎn),它是追加到文件的末尾(當(dāng)然如果文件不存在,也會(huì)被創(chuàng)建)。

再次執(zhí)行 cut -d , -f 1 notes.csv >> name.csv ,則會(huì)把名字追加到 name.csv 里面。

Mark1
Mark2
Mark3
Mark4
Mark5
Mark6
Mark1
Mark2
Mark3
Mark4
Mark5
Mark6

我們平時(shí)讀的 log 日志文件其實(shí)都是用這個(gè)命令輸出的。

輸出重定向 2>

標(biāo)準(zhǔn)錯(cuò)誤輸出

cat not_exist_file.csv > res.txt 2> errors.log
  • 當(dāng)我們 cat 一個(gè)文件時(shí),會(huì)把文件內(nèi)容打印到屏幕上,這個(gè)是標(biāo)準(zhǔn)輸出;
  • 當(dāng)使用了 > res.txt 時(shí),則不會(huì)打印到屏幕,會(huì)把標(biāo)準(zhǔn)輸出寫入文件 res.txt 文件中;
  • 2> errors.log 當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)寫入 errors.log 文件中。

輸出重定向 2>>

標(biāo)準(zhǔn)錯(cuò)誤輸出(追加到文件末尾)同 >> 相似。

輸出重定向 2>&1

標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都重定向都一個(gè)地方

cat not_exist_file.csv > res.txt 2>&1  # 覆蓋輸出
cat not_exist_file.csv >> res.txt 2>&1 # 追加輸出

目前為止,我們接觸的命令的輸入都來自命令的參數(shù),其實(shí)命令的輸入還可以來自文件或者鍵盤的輸入。

輸入重定向 <

< 符號(hào)用于指定命令的輸入。

cat < name.csv # 指定命令的輸入為 name.csv

雖然它的運(yùn)行結(jié)果與 cat name.csv 一樣,但是它們的原理卻完全不同。

  • cat name.csv 表示 cat 命令接收的輸入是 notes.csv 文件名,那么要先打開這個(gè)文件,然后打印出文件內(nèi)容。
  • cat < name.csv 表示 cat 命令接收的輸入直接是 notes.csv 這個(gè)文件的內(nèi)容, cat 命令只負(fù)責(zé)將其內(nèi)容打印,打開文件并將文件內(nèi)容傳遞給 cat 命令的工作則交給終端完成。

輸入重定向 <<

將鍵盤的輸入重定向?yàn)槟硞€(gè)命令的輸入。

sort -n << END # 輸入這個(gè)命令之后,按下回車,終端就進(jìn)入鍵盤輸入模式,其中END為結(jié)束命令(這個(gè)可以自定義)
wc -m << END # 統(tǒng)計(jì)輸入的單詞

管道 |

把兩個(gè)命令連起來使用,一個(gè)命令的輸出作為另外一個(gè)命令的輸入,英文是 pipeline ,可以想象一個(gè)個(gè)水管連接起來,管道算是重定向流的一種。

舉幾個(gè)實(shí)際用法案例:

cut -d , -f 1 name.csv | sort > sorted_name.txt 
# 第一步獲取到的 name 列表,通過管道符再進(jìn)行排序,最后輸出到sorted_name.txt

du | sort -nr | head 
# du 表示列舉目錄大小信息
# sort 進(jìn)行排序,-n 表示按數(shù)字排序,-r 表示倒序
# head 前10行文件

grep log -Ir /var/log | cut -d : -f 1 | sort | uniq
# grep log -Ir /var/log 表示在log文件夾下搜索 /var/log 文本,-r 表示遞歸,-I 用于排除二進(jìn)制文件
# cut -d : -f 1 表示通過冒號(hào)進(jìn)行剪切,獲取剪切的第一部分
# sort 進(jìn)行排序
# uniq 進(jìn)行去重

流并非一個(gè)命令,在計(jì)算機(jī)科學(xué)中,流 stream 的含義是比較難理解的,記住一點(diǎn)即可:流就是讀一點(diǎn)數(shù)據(jù), 處理一點(diǎn)點(diǎn)數(shù)據(jù)。其中數(shù)據(jù)一般就是二進(jìn)制格式。 上面提及的重定向或管道,就是把數(shù)據(jù)當(dāng)做流去運(yùn)轉(zhuǎn)的。

到此我們就接觸了,流、重定向、管道等 Linux 高級(jí)概念及指令。其實(shí)你會(huì)發(fā)現(xiàn)關(guān)于流和管道在其它語言中也有廣泛的應(yīng)用。Angular 中的模板語法中可以使用管道。Node.js 中也有 stream 流的概念。

查看進(jìn)程

Windows 中通過 Ctrl + Alt + Delete 快捷鍵查看軟件進(jìn)程。

w

幫助我們快速了解系統(tǒng)中目前有哪些用戶登錄著,以及他們?cè)诟墒裁础?/p>

[root@lion ~]# w 06:31:53 up 25 days,  9:53,  1 user,  load average: 0.000.010.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    118.31.243.53    05:56    1.00s  0.02s  0.00s w 06:31:53:表示當(dāng)前時(shí)間
up 25 days, 9:53:表示系統(tǒng)已經(jīng)正常運(yùn)行了“259小時(shí)53分鐘”1 user:表示一個(gè)用戶
load average: 0.000.010.05:表示系統(tǒng)的負(fù)載,3個(gè)值分別表示“1分鐘的平均負(fù)載”,“5分鐘的平均負(fù)載”,“15分鐘的平均負(fù)載”

USER:表示登錄的用于
TTY:登錄的終端名稱為pts/0 
FROM:連接到服務(wù)器的ip地址
LOGIN@:登錄時(shí)間
IDLE:用戶有多久沒有活躍了
JCPU:該終端所有相關(guān)的進(jìn)程使用的 CPU 時(shí)間,每當(dāng)進(jìn)程結(jié)束就停止計(jì)時(shí),開始新的進(jìn)程則會(huì)重新計(jì)時(shí)
PCPU:表示 CPU 執(zhí)行當(dāng)前程序所消耗的時(shí)間,當(dāng)前進(jìn)程就是在 WHAT 列里顯示的程序
WHAT:表示當(dāng)下用戶正運(yùn)行的程序是什么,這里我運(yùn)行的是 w

ps

用于顯示當(dāng)前系統(tǒng)中的進(jìn)程, ps 命令顯示的進(jìn)程列表不會(huì)隨時(shí)間而更新,是靜態(tài)的,是運(yùn)行 ps 命令那個(gè)時(shí)刻的狀態(tài)或者說是一個(gè)進(jìn)程快照。

基礎(chǔ)語法

[root@lion ~]# ps
  PID TTY          TIME CMD 1793 pts/0    00:00:00 bash 4756 pts/0    00:00:00 ps

PID:進(jìn)程號(hào),每個(gè)進(jìn)程都有唯一的進(jìn)程號(hào)
TTY:進(jìn)程運(yùn)行所在的終端
TIME:進(jìn)程運(yùn)行時(shí)間
CMD:產(chǎn)生這個(gè)進(jìn)程的程序名,如果在進(jìn)程列表中看到有好幾行都是同樣的程序名,那么就是同樣的程序產(chǎn)生了不止一個(gè)進(jìn)程

常用參數(shù)

  • -ef 列出所有進(jìn)程;
  • -efH 以喬木狀列舉出所有進(jìn)程;
  • -u 列出此用戶運(yùn)行的進(jìn)程;
  • -aux 通過 CPU 和內(nèi)存使用來過濾進(jìn)程 ps -aux | less ;
  • -aux --sort -pcpuCPU 使用降序排列, -aux --sort -pmem 表示按內(nèi)存使用降序排列;
  • -axjf 以樹形結(jié)構(gòu)顯示進(jìn)程, ps -axjf 它和 pstree 效果類似。

top

獲取進(jìn)程的動(dòng)態(tài)列表。

top - 07:20:07 up 25 days, 10:41,  1 user,  load average: 0.300.100.07Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882072 total,   552148 free,   101048 used,  1228876 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1594080 avail Mem  

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                     
  956 root      10 -10  133964  15848  10240 S  0.7  0.8 263:13.01 AliYunDun                                                
    1 root      20   0   51644   3664   2400 S  0.0  0.2   3:23.63 systemd      
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.05 kthreadd    
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H   
  • top - 07:20:07 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07 相當(dāng) w 命令的第一行的信息。
  • 展示的這些進(jìn)程是按照使用處理器 %CPU 的使用率來排序的。

kill

結(jié)束一個(gè)進(jìn)程, kill + PID 。

kill 956 # 結(jié)束進(jìn)程號(hào)為956的進(jìn)程
kill 956 957 # 結(jié)束多個(gè)進(jìn)程
kill -9 7291 # 強(qiáng)制結(jié)束進(jìn)程

管理進(jìn)程

進(jìn)程狀態(tài)

主要是切換進(jìn)程的狀態(tài)。我們先了解下 Linux 下進(jìn)程的五種狀態(tài):

  1. 狀態(tài)碼 R :表示正在運(yùn)行的狀態(tài);
  2. 狀態(tài)碼 S :表示中斷(休眠中,受阻,當(dāng)某個(gè)條件形成后或接受到信號(hào)時(shí),則脫離該狀態(tài));
  3. 狀態(tài)碼 D :表示不可中斷(進(jìn)程不響應(yīng)系統(tǒng)異步信號(hào),即使用kill命令也不能使其中斷);
  4. 狀態(tài)碼 Z :表示僵死(進(jìn)程已終止,但進(jìn)程描述符依然存在,直到父進(jìn)程調(diào)用 wait4() 系統(tǒng)函數(shù)后將進(jìn)程釋放);
  5. 狀態(tài)碼 T :表示停止(進(jìn)程收到 SIGSTOP 、 SIGSTPSIGTIN 、 SIGTOU 等停止信號(hào)后停止運(yùn)行)。

前臺(tái)進(jìn)程 & 后臺(tái)進(jìn)程

默認(rèn)情況下,用戶創(chuàng)建的進(jìn)程都是前臺(tái)進(jìn)程,前臺(tái)進(jìn)程從鍵盤讀取數(shù)據(jù),并把處理結(jié)果輸出到顯示器。例如運(yùn)行 top 命令,這就是一個(gè)一直運(yùn)行的前臺(tái)進(jìn)程。

后臺(tái)進(jìn)程的優(yōu)點(diǎn)是不必等待程序運(yùn)行結(jié)束,就可以輸入其它命令。在需要執(zhí)行的命令后面添加 & 符號(hào),就表示啟動(dòng)一個(gè)后臺(tái)進(jìn)程。

&

啟動(dòng)后臺(tái)進(jìn)程,它的缺點(diǎn)是后臺(tái)進(jìn)程與終端相關(guān)聯(lián),一旦關(guān)閉終端,進(jìn)程就自動(dòng)結(jié)束了。

cp name.csv name-copy.csv &

nohup

使進(jìn)程不受掛斷(關(guān)閉終端等動(dòng)作)的影響。

nohup cp name.csv name-copy.csv

nohup 命令也可以和 & 結(jié)合使用。

nohup cp name.csv name-copy.csv &

bg

使一個(gè)“后臺(tái)暫停運(yùn)行”的進(jìn)程,狀態(tài)改為“后臺(tái)運(yùn)行”。

bg %1 # 不加任何參數(shù)的情況下,bg命令會(huì)默認(rèn)作用于最近的一個(gè)后臺(tái)進(jìn)程,如果添加參數(shù)則會(huì)作用于指定標(biāo)號(hào)的進(jìn)程

實(shí)際案例1:

1. 執(zhí)行 grep -r "log" / > grep_log 2>&1 命令啟動(dòng)一個(gè)前臺(tái)進(jìn)程,并且忘記添加 & 符號(hào)2. ctrl + z 使進(jìn)程狀態(tài)轉(zhuǎn)為后臺(tái)暫停3. 執(zhí)行 bg 將命令轉(zhuǎn)為后臺(tái)運(yùn)行

實(shí)際案例2:

前端開發(fā)時(shí)我們經(jīng)常會(huì)執(zhí)行 yarn start 啟動(dòng)項(xiàng)目
此時(shí)我們執(zhí)行 ctrl + z 先使其暫停
然后執(zhí)行 bg 使其轉(zhuǎn)為后臺(tái)運(yùn)行
這樣當(dāng)前終端就空閑出來可以干其它事情了,如果想要喚醒它就使用 fg 命令即可(后面會(huì)講)

jobs

顯示當(dāng)前終端后臺(tái)進(jìn)程狀態(tài)。

[root@lion ~]# jobs
[1]+  Stopped                 top
[2]-  Running                 grep --color=auto -r "log" / > grep_log 2>&1 &

fg

fg 使進(jìn)程轉(zhuǎn)為前臺(tái)運(yùn)行,用法和 bg 命令類似。

我們用一張圖來表示前后臺(tái)進(jìn)程切換:

我們可以使程序在后臺(tái)運(yùn)行,成為后臺(tái)進(jìn)程,這樣在當(dāng)前終端中我們就可以做其他事情了,而不必等待此進(jìn)程運(yùn)行結(jié)束。

守護(hù)進(jìn)程

一個(gè)運(yùn)行起來的程序被稱為進(jìn)程。在 Linux 中有些進(jìn)程是特殊的,它不與任何進(jìn)程關(guān)聯(lián),不論用戶的身份如何,都在后臺(tái)運(yùn)行,這些進(jìn)程的父進(jìn)程是 PID 為1的進(jìn)程, PID 為1的進(jìn)程只在系統(tǒng)關(guān)閉時(shí)才會(huì)被銷毀。它們會(huì)在后臺(tái)一直運(yùn)行等待分配工作。我們將這類進(jìn)程稱之為守護(hù)進(jìn)程 daemon 。

守護(hù)進(jìn)程的名字通常會(huì)在最后有一個(gè) d ,表示 daemon 守護(hù)的意思,例如 systemd 、httpd 。

systemd

systemd 是一個(gè) Linux 系統(tǒng)基礎(chǔ)組件的集合,提供了一個(gè)系統(tǒng)和服務(wù)管理器,運(yùn)行為 PID 1 并負(fù)責(zé)啟動(dòng)其它程序。

[root@lion ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  51648  3852 ?        Ss   Feb01   1:50 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

通過命令也可以看到 PID 為1的進(jìn)程就是 systemd 的系統(tǒng)進(jìn)程。

systemd 常用命令(它是一組命令的集合):

systemctl start nginx # 啟動(dòng)服務(wù)
systemctl stop nginx # 停止服務(wù)
systemctl restart nginx # 重啟服務(wù)
systemctl status nginx # 查看服務(wù)狀態(tài)
systemctl reload nginx # 重載配置文件(不停止服務(wù)的情況)
systemctl enable nginx # 開機(jī)自動(dòng)啟動(dòng)服務(wù)
systemctl disable nginx # 開機(jī)不自動(dòng)啟動(dòng)服務(wù)
systemctl is-enabled nginx # 查看服務(wù)是否開機(jī)自動(dòng)啟動(dòng)
systemctl list-unit-files --type=service # 查看各個(gè)級(jí)別下服務(wù)的啟動(dòng)和禁用情況

文件壓縮解壓

  • 打包:是將多個(gè)文件變成一個(gè)總的文件,它的學(xué)名叫存檔、歸檔。
  • 壓縮:是將一個(gè)大文件(通常指歸檔)壓縮變成一個(gè)小文件。

我們常常使用 tar 將多個(gè)文件歸檔為一個(gè)總的文件,稱為 archive 。然后用 gzipbzip2 命令將 archive 壓縮為更小的文件。

tar

創(chuàng)建一個(gè) tar 歸檔。

基礎(chǔ)用法

tar -cvf sort.tar sort/ # 將sort文件夾歸檔為sort.tar
tar -cvf archive.tar file1 file2 file3 # 將 file1 file2 file3 歸檔為archive.tar

常用參數(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 。

gzip archive.tar # 壓縮
gunzip archive.tar.gz # 解壓

tar 歸檔+壓縮

可以用 tar 命令同時(shí)完成歸檔和壓縮的操作,就是給 tar 命令多加一個(gè)選項(xiàng)參數(shù),使之完成歸檔操作后,還是調(diào)用 gzipbzip2 命令來完成壓縮操作。

tar -zcvf archive.tar.gz archive/ # 將archive文件夾歸檔并壓縮
tar -zxvf archive.tar.gz # 將archive.tar.gz歸檔壓縮文件解壓

zcat、zless、zmore

之前講過使用 cat less more 可以查看文件內(nèi)容,但是壓縮文件的內(nèi)容是不能使用這些命令進(jìn)行查看的,而要使用 zcat、zless、zmore 進(jìn)行查看。

zcat archive.tar.gz

zip/unzip

“壓縮/解壓” zip 文件( zip 壓縮文件一般來自 windows 操作系統(tǒng))。

命令安裝

# Red Hat 一族中的安裝方式
yum install zip 
yum install unzip 

基礎(chǔ)用法

unzip archive.zip # 解壓 .zip 文件
unzip -l archive.zip # 不解開 .zip 文件,只看其中內(nèi)容

zip -r sort.zip sort/ # 將sort文件夾壓縮為 sort.zip,其中-r表示遞歸

編譯安裝軟件

之前我們學(xué)會(huì)了使用 yum 命令進(jìn)行軟件安裝,如果碰到 yum 倉(cāng)庫(kù)中沒有的軟件,我們就需要會(huì)更高級(jí)的軟件安裝“源碼編譯安裝”。

編譯安裝

簡(jiǎn)單來說,編譯就是將程序的源代碼轉(zhuǎn)換成可執(zhí)行文件的過程。大多數(shù) Linux 的程序都是開放源碼的,可以編譯成適合我們的電腦和操縱系統(tǒng)屬性的可執(zhí)行文件。

基本步驟如下:

  1. 下載源代碼
  2. 解壓壓縮包
  3. 配置
  4. 編譯
  5. 安裝

實(shí)際案例

1、下載

我們來編譯安裝 htop 軟件,首先在它的官網(wǎng)下載源碼:bintray.com/htop/source…[1]

下載好的源碼在本機(jī)電腦上使用如下命令同步到服務(wù)器上:

scp 文件名 用戶名@服務(wù)器ip:目標(biāo)路徑

scp ~/Desktop/htop-3.0.0.tar.gz root@121.42.11.34:.

也可以使用 wegt 進(jìn)行下載:

wegt+下載地址

wegt https://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz
2、解壓文件
tar -zxvf htop-3.0.0.tar.gz # 解壓

cd htop-3.0.0 # 進(jìn)入目錄
3、配置

執(zhí)行 ./configure ,它會(huì)分析你的電腦去確認(rèn)編譯所需的工具是否都已經(jīng)安裝了。

4、編譯

執(zhí)行 make 命令

5、安裝

執(zhí)行 make install 命令,安裝完成后執(zhí)行 ls /usr/local/bin/ 查看是否有 htop 命令。如果有就可以執(zhí)行 htop 命令查看系統(tǒng)進(jìn)程了。

網(wǎng)絡(luò)

ifconfig

查看 ip 網(wǎng)絡(luò)相關(guān)信息,如果命令不存在的話, 執(zhí)行命令 yum install net-tools 安裝。

[root@lion ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500   
     inet 172.31.24.78  netmask 255.255.240.0  broadcast 172.31.31.255   
     ether 00:16:3e:04:9c:cd  txqueuelen 1000  (Ethernet)    
    RX packets 1592318  bytes 183722250 (175.2 MiB)    
    RX errors 0  dropped 0  overruns 0  frame 0     
   TX packets 1539361  bytes 154044090 (146.9 MiB)     
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536     
   inet 127.0.0.1  netmask 255.0.0.0    
    loop  txqueuelen 1000  (Local Loopback)   
     RX packets 0  bytes 0 (0.0 B)    
    RX errors 0  dropped 0  overruns 0  frame 0    
    TX packets 0  bytes 0 (0.0 B)     
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

參數(shù)解析:

  • eth0 對(duì)應(yīng)有線連接(對(duì)應(yīng)你的有線網(wǎng)卡),就是用網(wǎng)線來連接的上網(wǎng)。ethEthernet 的縮寫,表示“以太網(wǎng)”。有些電腦可能同時(shí)有好幾條網(wǎng)線連著,例如服務(wù)器,那么除了 eht0 ,你還會(huì)看到 eth1eth2 等。
  • lo 表示本地回環(huán)( Local Loopback 的縮寫,對(duì)應(yīng)一個(gè)虛擬網(wǎng)卡)可以看到它的 ip 地址是 127.0.0.1 。每臺(tái)電腦都應(yīng)該有這個(gè)接口,因?yàn)樗鼘?duì)應(yīng)著“連向自己的鏈接”。這也是被稱之為“本地回環(huán)”的原因。所有經(jīng)由這個(gè)接口發(fā)送的東西都會(huì)回到你自己的電腦??雌饋砗孟癫]有什么用,但有時(shí)為了某些緣故,我們需要連接自己。例如用來測(cè)試一個(gè)網(wǎng)絡(luò)程序,但又不想讓局域網(wǎng)或外網(wǎng)的用戶查看,只能在此臺(tái)主機(jī)上運(yùn)行和查看所有的網(wǎng)絡(luò)接口。例如在我們啟動(dòng)一個(gè)前端工程時(shí),在瀏覽器輸入 127.0.0.1:3000 啟動(dòng)項(xiàng)目就能查看到自己的 web 網(wǎng)站,并且它只有你能看到。
  • wlan0 表示無線局域網(wǎng)(上面案例并未展示)。

host

ip 地址和主機(jī)名的互相轉(zhuǎn)換。

軟件安裝

yum install bind-utils

基礎(chǔ)用法

[root@lion ~]# host github.com
baidu.com has address 13.229.188.59 

[root@lion ~]# host 13.229.188.59
59.188.229.13
.in-addr.arpa domain name pointer ec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com.

ssh 連接遠(yuǎn)程服務(wù)器

通過非對(duì)稱加密以及對(duì)稱加密的方式(同 HTTPS 安全連接原理相似)連接到遠(yuǎn)端服務(wù)器。

ssh 用戶@ip:port

1、ssh root@172.20.10.1:22 # 端口號(hào)可以省略不寫,默認(rèn)是22端口2、輸入連接密碼后就可以操作遠(yuǎn)端服務(wù)器了

配置 ssh

config 文件可以配置 ssh ,方便批量管理多個(gè) ssh 連接。

配置文件分為以下幾種:

  • 全局 ssh 服務(wù)端的配置:/etc/ssh/sshd_config ;
  • 全局 ssh 客戶端的配置:/etc/ssh/ssh_config(很少修改);
  • 當(dāng)前用戶 ssh 客戶端的配置:~/.ssh/config 。

【服務(wù)端 config 文件的常用配置參數(shù)】

服務(wù)端 config 參數(shù)作用
Portsshd 服務(wù)端口號(hào)(默認(rèn)是22)
PermitRootLogin是否允許以 root 用戶身份登錄(默認(rèn)是可以)
PasswordAuthentication是否允許密碼驗(yàn)證登錄(默認(rèn)是可以)
PubkeyAuthentication是否允許公鑰驗(yàn)證登錄(默認(rèn)是可以)
PermitEmptyPasswords是否允許空密碼登錄(不安全,默認(rèn)不可以)

[注意] 修改完服務(wù)端配置文件需要重啟服務(wù) systemctl restart sshd

【客戶端 config 文件的常用配置參數(shù)】

客戶端 config 參數(shù)作用
Host別名
HostName遠(yuǎn)程主機(jī)名(或 IP 地址)
Port連接到遠(yuǎn)程主機(jī)的端口
User用戶名

配置當(dāng)前用戶的 config

# 創(chuàng)建config
vim ~/.ssh/config

# 填寫一下內(nèi)容
Host lion # 別名 
HostName 172.x.x.x # ip 地址  
Port 22 # 端口 
 User root # 用戶

這樣配置完成后,下次登錄時(shí),可以這樣登錄 ssh lion 會(huì)自動(dòng)識(shí)別為 root 用戶。

[注意] 這段配置不是在服務(wù)器上,而是你自己的機(jī)器上,它僅僅是設(shè)置了一個(gè)別名。

免密登錄

ssh 登錄分兩種,一種是基于口令(賬號(hào)密碼),另外一種是基于密鑰的方式。

基于口令,就是每次登錄輸入賬號(hào)和密碼,顯然這樣做是比較麻煩的,今天主要學(xué)習(xí)如何基于密鑰實(shí)現(xiàn)免密登錄。

基于密鑰驗(yàn)證原理

客戶機(jī)生成密鑰對(duì)(公鑰和私鑰),把公鑰上傳到服務(wù)器,每次登錄會(huì)與服務(wù)器的公鑰進(jìn)行比較,這種驗(yàn)證登錄的方法更加安全,也被稱為“公鑰驗(yàn)證登錄”。

具體實(shí)現(xiàn)步驟

1、在客戶機(jī)中生成密鑰對(duì)(公鑰和私鑰) ssh-keygen(默認(rèn)使用 RSA 非對(duì)稱加密算法)

運(yùn)行完 ssh-keygen 會(huì)在 ~/.ssh/ 目錄下,生成兩個(gè)文件:

  • id_rsa.pub :公鑰
  • id_rsa :私鑰

2、把客戶機(jī)的公鑰傳送到服務(wù)

執(zhí)行 ssh-copy-id [email protected]ssh-copy-id 它會(huì)把客戶機(jī)的公鑰追加到服務(wù)器 ~/.ssh/authorized_keys 的文件中)。

執(zhí)行完成后,運(yùn)行 ssh [email protected] 就可以實(shí)現(xiàn)免密登錄服務(wù)器了。

配合上面設(shè)置好的別名,直接執(zhí)行 ssh lion 就可以登錄,是不是非常方便。

wget

可以使我們直接從終端控制臺(tái)下載文件,只需要給出文件的HTTP或FTP地址。

wget [參數(shù)][URL地址]

wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip

wget 非常穩(wěn)定,如果是由于網(wǎng)絡(luò)原因下載失敗, wget 會(huì)不斷嘗試,直到整個(gè)文件下載完畢。

常用參數(shù)

  • -c 繼續(xù)中斷的下載。

備份

scp

它是 Secure Copy 的縮寫,表示安全拷貝。scp 可以使我們通過網(wǎng)絡(luò),把文件從一臺(tái)電腦拷貝到另一臺(tái)電腦。

scp 是基于 ssh 的原理來運(yùn)作的, ssh 會(huì)在兩臺(tái)通過網(wǎng)絡(luò)連接的電腦之間創(chuàng)建一條安全通信的管道, scp 就利用這條管道安全地拷貝文件。

scp source_file destination_file # source_file 表示源文件,destination_file 表示目標(biāo)文件

其中 source_filedestination_file 都可以這樣表示:user@ip:file_name , user 是登錄名, ip 是域名或 ip 地址。file_name 是文件路徑。

scp file.txt root@192.168.1.5:/root # 表示把我的電腦中當(dāng)前文件夾下的 file.txt 文件拷貝到遠(yuǎn)程電腦
scp [email protected]:/
root/file.txt file.txt # 表示把遠(yuǎn)程電腦上的 file.txt 文件拷貝到本機(jī)

rsync

rsync 命令主要用于遠(yuǎn)程同步文件。它可以同步兩個(gè)目錄,不管它們是否處于同一臺(tái)電腦。它應(yīng)該是最常用于“增量備份”的命令了。它就是智能版的 scp 命令。

軟件安裝

yum install rsync

基礎(chǔ)用法

rsync -arv Images/ backups/ # 將Images 目錄下的所有文件備份到 backups 目錄下
rsync -arv Images/ root@192.x.x.x:backups/ # 同步到服務(wù)器的backups目錄下

常用參數(shù)

  • -a 保留文件的所有信息,包括權(quán)限,修改日期等;
  • -r 遞歸調(diào)用,表示子目錄的所有文件也都包括;
  • -v 冗余模式,輸出詳細(xì)操作信息。

默認(rèn)地, rsync 在同步時(shí)并不會(huì)刪除目標(biāo)目錄的文件,例如你在源目錄中刪除一個(gè)文件,但是用 rsync 同步時(shí),它并不會(huì)刪除同步目錄中的相同文件。如果向刪除也可以這么做:rsync -arv --delete Images/ backups/ 。

系統(tǒng)

halt

關(guān)閉系統(tǒng),需要 root 身份。

halt

reboot

重啟系統(tǒng),需要 root 身份。

reboot

poweroff

直接運(yùn)行即可關(guān)機(jī),不需要 root 身份。

Vim 編輯器

Vim 是什么?

Vim 是從 vi 發(fā)展出來的一個(gè)文本編輯器。其代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs 并列成為類 Unix 系統(tǒng)用戶最喜歡的編輯器。

Vim 常用模式

  • 交互模式
  • 插入模式
  • 命令模式
  • 可視模式

交互模式

也成為正常模式,這是 Vim 的默認(rèn)模式,每次運(yùn)行 Vim 程序的時(shí)候,就會(huì)進(jìn)入這個(gè)模式。

例如執(zhí)行 vim name.txt 則會(huì)進(jìn)入交互模式。

交互模式特征:

  • 在這個(gè)模式下,你不能輸入文本;
  • 它可以讓我們?cè)谖谋鹃g移動(dòng),刪除一行文本,復(fù)制黏貼文本,跳轉(zhuǎn)到指定行,撤銷操作,等等。

插入模式

這個(gè)模式是我們熟悉的文本編輯器的模式,就是可以輸入任何你想輸入的內(nèi)容。進(jìn)入這個(gè)模式有幾種方法,最常用的方法是按字母鍵 ii、I、a、A、o、O 都可以進(jìn)入插入模式,只是所處的位置不同),退出這種模式,只需要按下 Esc 鍵。

  • i, I 進(jìn)入輸入模式 Insert modei 為“從目前光標(biāo)所在處輸入”, I 為“在目前所在行的第一個(gè)非空格符處開始輸入”;
  • a, A 進(jìn)入輸入模式 Insert modea 為“從目前光標(biāo)所在的下一個(gè)字符處開始輸入”, A 為“從光標(biāo)所在行的最后一個(gè)字符處開始輸入”;
  • o, O 進(jìn)入輸入模式 Insert modeo 為“在目前光標(biāo)所在的下一行處輸入新的一行”;O 為在目前光標(biāo)所在處的上一行輸入新的一行。

命令模式

命令模式也稱為底線命令模式,這個(gè)模式下可以運(yùn)行一些命令例如“退出”,“保存”,等動(dòng)作。

也可以用這個(gè)模式來激活一些 Vim 配置,例如語法高亮,顯示行號(hào),等。甚至還可以發(fā)送一些命令給終端命令行,例如 ls、cp 。

為了進(jìn)入命令模式,首先要進(jìn)入交互模式,再按下冒號(hào)鍵。

用一張圖表示三種模式如何切換:

基本操作

打開 Vim

在終端命令行中輸入 vim 回車后 Vim 就會(huì)被運(yùn)行起來,也可以用 Vim 來打開一個(gè)文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么會(huì)被創(chuàng)建。

插入

進(jìn)入文件之后,此時(shí)處于交互模式,可以通過輸入 i 進(jìn)入插入模式。

移動(dòng)

Vim 的交互模式下,我們可以在文本中移動(dòng)光標(biāo)。

  • h 向左移動(dòng)一個(gè)字符
  • j 向下移動(dòng)一個(gè)字符
  • k 向上移動(dòng)一個(gè)字符
  • i 向右移動(dòng)一個(gè)字符

當(dāng)然也可以使用四個(gè)方向鍵進(jìn)行移動(dòng),效果是一樣的。

跳至行首和行末

  • 行首:在交互模式下,為了將光標(biāo)定位到一行的開始位置,只需要按下數(shù)字鍵 0 即可,鍵盤上的 Home 鍵也有相同效果。
  • 行末:在交互模式下,為了將光標(biāo)定位到一行的末尾,只需要按下美元符號(hào)鍵 $ 即可,鍵盤上的 End 鍵也有相同效果。

按單詞移動(dòng)

在交互模式下,按字母鍵 w 可以一個(gè)單詞一個(gè)單詞的移動(dòng)。

退出文件

在交互模式下,按下冒號(hào)鍵 : 進(jìn)入命令模式,再按下 q 鍵,就可以退出了。

如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 會(huì)顯示一個(gè)紅字標(biāo)明錯(cuò)誤信息。此時(shí)我們有兩個(gè)選擇:

  1. 保存并退出 :wq:x ;
  2. 不保存且退出 :q! 。

標(biāo)準(zhǔn)操作

刪除字符

在交互模式下,將光標(biāo)定位到一個(gè)你想要?jiǎng)h除的字符上,按下字母鍵 x 你會(huì)發(fā)現(xiàn)這個(gè)字符被刪除了。

也可以一次性刪除多個(gè)字符,只需要在按 x 鍵之前輸入數(shù)字即可。

刪除(剪切)單詞,行

  • 刪除一行:連按兩次 d 來刪除光標(biāo)所在的那一行。
  • 刪除多行:例如先輸入數(shù)字 2 ,再按下 dd ,就會(huì)刪除從光標(biāo)所在行開始的兩行。
  • 刪除一個(gè)單詞:將光標(biāo)置于一個(gè)單詞的首字母處,然后按下 dw
  • 刪除多個(gè)單詞:例如先按數(shù)字鍵 2 再按 dw 就可以刪除兩個(gè)單詞了。
  • 從光標(biāo)所在位置刪除至行首:d0
  • 從光標(biāo)所在位置刪除至行末:d$ 。

復(fù)制單詞,行

  • 復(fù)制行:按兩次 y 會(huì)把光標(biāo)所在行復(fù)制到內(nèi)存中,和 dd 類似, dd 用于“剪切”光標(biāo)所在行。
  • 復(fù)制單詞:yw 會(huì)復(fù)制一個(gè)單詞。
  • 復(fù)制到行末:y$ 是復(fù)制從光標(biāo)所在處到行末的所有字符。
  • 復(fù)制到行首:y0 是復(fù)制光標(biāo)所在處到行首的所有字符。

粘貼

如果之前用 dd 或者 yy 剪切復(fù)制過來的,可以使用 p 來粘貼。同樣也可以使用 數(shù)字+p 來表示復(fù)制多次。

替換一個(gè)字符

在交互模式下,將光標(biāo)置于想要替換的字符上。按下 r 鍵,接著輸入你要替換的字符即可。

撤銷操作

如果要撤銷最近的修改,只需要按下 u 鍵,如果想要撤銷最近四次修改,可以按下4,再按下 u 。

重做

取消撤銷,也就是重做之前的修改使用 ctrl + r 。

跳轉(zhuǎn)到指定行

Vim 編輯的文件中,每一行都有一個(gè)行號(hào),行號(hào)從1開始,逐一遞增。

行號(hào)默認(rèn)是不顯示,如果需要它顯示的話,可以進(jìn)入命令模式,然后輸入 set nu ,如果要隱藏行號(hào)的話,使用 set nonu 。

  • 跳轉(zhuǎn)到指定行:數(shù)字+gg ,例如 7gg ,表示跳轉(zhuǎn)到第7行。
  • 要跳轉(zhuǎn)到最后一行,按下 G 。
  • 要跳轉(zhuǎn)到第一行,按下 gg 。

高級(jí)操作

查找

處于交互模式下,按下 / 鍵,那么就進(jìn)入查找模式,輸入你要查找的字符串,然后按下回車。光標(biāo)就會(huì)跳轉(zhuǎn)到文件中下一個(gè)查找到的匹配處。如果字符串不存在,那么會(huì)顯示 "pattern not found" 。

  • n 跳轉(zhuǎn)到下一個(gè)匹配項(xiàng);
  • N 跳轉(zhuǎn)到上一個(gè)匹配項(xiàng)。

[注意] 用斜杠來進(jìn)行的查找是從當(dāng)前光標(biāo)處開始向文件尾搜索,如果你要從當(dāng)前光標(biāo)處開始,向文件頭搜索則使用 ? ,當(dāng)然也可以先按下 gg 跳轉(zhuǎn)到第一行在進(jìn)行全文搜索。

查找并替換

替換光標(biāo)所在行第一個(gè)匹配的字符串:

# 語法
:s/舊字符串/新字符串

# 實(shí)例
:s/one/two

替換光標(biāo)所在行所有舊字符串為新字符串:

# 語法
:s/舊字符串/新字符串/g

替換第幾行到第幾行中所有字符串:

# 語法
:n,m s/舊字符串/新字符串/g

# 實(shí)例
:2,4 s/one/two/g

最常用的就是全文替換了:

# 語法
:%s/舊字符串/新字符串/g

合并文件

可以用冒號(hào) +r ( :r ) 實(shí)現(xiàn)在光標(biāo)處插入一個(gè)文件的內(nèi)容。

:r filename # 可以用Tab鍵來自動(dòng)補(bǔ)全另外一個(gè)文件的路徑

分屏

Vim 有一個(gè)特別便捷的功能那就是分屏,可以同時(shí)打開好幾個(gè)文件,分屏之后,屏幕每一塊被稱為一個(gè) viewport ,表示“視口”。

  • 橫向分屏 :sp 文件名
  • 垂直分屏 :vsp 文件名

分屏模式下的快捷鍵

  • Ctrl + w 再加 Ctrl + w ,表示從一個(gè) viewport 移動(dòng)光標(biāo)到另外一個(gè) viewport ;
  • Ctrl + w 再加 “方向鍵”,就可以移動(dòng)到這個(gè)方向所處的下一個(gè)視口了;
  • Ctrl + w 再加 + 號(hào),表示擴(kuò)大當(dāng)前視口;
  • Ctrl + w 再加 - 號(hào),表示縮小當(dāng)前視口;
  • Ctrl + w 再加 = 號(hào),表示平均當(dāng)前視口;
  • Ctrl + w 再加 r 鍵,會(huì)反向調(diào)換視口位置;
  • Ctrl + w 再加 q 鍵,會(huì)關(guān)閉當(dāng)前視口;
  • Ctrl + w 再加 o 鍵,會(huì)關(guān)閉除當(dāng)前視口以外的所有視口;

運(yùn)行外部命令 :!

Vim 中可以運(yùn)行一些終端命令,只要先輸入 :! ,然后接命令名稱。

例如:

:!ls # 在Vim中打開的文件所在的目錄運(yùn)行l(wèi)s命令

可視模式

前面只講了 Vim 的三種模式,其實(shí)還有一種模式叫做可視模式。

進(jìn)入它的三種方式(都是從交互模式開始):

  • v 字符可視模式,進(jìn)入后配合方向鍵選中字符后,然后再按 d 鍵可以刪除選中。
  • V 行可視模式,進(jìn)入后光標(biāo)所在行默認(rèn)被選中,然后再按 d 鍵可以刪除所在行。
  • Ctrl + v 塊可視模式,它是可視模式最有用的功能了,配合 dI 鍵可以實(shí)現(xiàn)刪除選中的內(nèi)容和插入內(nèi)容。

同時(shí)選中多行,并在選中行頭部插入內(nèi)容的具體操作步驟:

1. ctrl + v 進(jìn)入塊可視模式
2. 使用方向鍵進(jìn)行選中(上下左右)假設(shè)選中5
3. 輸入 I 鍵進(jìn)行多行同時(shí)插入操作
4. 插入完成后連續(xù)按兩下 esc 鍵,實(shí)現(xiàn)多行同時(shí)插入相同字符

進(jìn)入可視模式之后的操作鍵:

  • d 鍵,表示刪除選中;
  • I 鍵,表示在選中之前插入;
  • u 鍵,表示選中變?yōu)樾懀?/section>
  • U 鍵,表示選中變?yōu)榇髮懀?/section>

Vim 配置

選項(xiàng)參數(shù)

Vim 被啟動(dòng)后,可以運(yùn)行一些指令來激活一些選項(xiàng)參數(shù),但是這些選項(xiàng)參數(shù)的配置在退出 Vim 時(shí)會(huì)被忘記,例如前面講解的激活行號(hào)。如果希望所在的配置是永久性的,那么需要在家目錄( cd ~ )創(chuàng)建一個(gè) Vim 的配置文件 .vimrc 。

.vimrc

set number " 顯示行號(hào)
syntax on " 激活語法高亮
set showcmd " 實(shí)時(shí)看到輸入的命令
set ignorecase " 搜索時(shí)不區(qū)分大小寫
set mouse=a " 激活鼠標(biāo),用鼠標(biāo)選中時(shí)相當(dāng)于進(jìn)入可視模式

Vim 配置非常豐富,我們可以通過個(gè)性化配置把 Vim 打造成屬于自己的 IDE 等等。在 github 上也可以搜索到一些強(qiáng)大的 Vim 配置文件。

總結(jié)

相信通過本文的學(xué)習(xí),你應(yīng)該會(huì)對(duì) Linux 有一個(gè)更加全面的認(rèn)識(shí)。

都看到這里了,就點(diǎn)個(gè)?? ?? ?? 吧。

參考資料

[1]

bintray.com/htop/source…: https://bintray.com/htop/source/htop#files




最近很多小伙伴找我要一些程序員必備資料,于是我翻出了壓箱底的寶藏,免費(fèi)分享給大家!


掃描海報(bào)二維碼免費(fèi)獲取。


瀏覽 55
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 天堂vs亚洲| 无码欧美成人AAAA三区在线| 免费AV网站在线| 久草黄色电影在线观看| 亚洲一区在线视频| 99久久国| 成年人免费电影| 超碰97在线精品国产| 91香蕉网站| 国产A级成人婬片1976| 日本黄色电影网站| 天天撸在线视频| 日韩操逼网站| 国产精品视频免费在线观看| 成年免费视频| 在线视频A| 91成人电影院| 日韩小电影在线观看| 秋霞一区二区三区无码| 午夜无码视频| 成人黄片免费看| 99在线视频精品| 国产精品视频网站| 黄色A片电影| 蜜桃亚洲AV无码一区二区三区| 超碰在线观看免费版| 91人兽| 久久国产黄色一级片| 久久精品熟妇丰满人妻99| 免费AV片| 欧美日韩无码| 一区二区三区电影| 日本中文字幕不卡| 在线操b| 成人精品一区日本无码网站suv | 大地中文资源5页的更新内容| 国产草逼网站| 中文字幕播放| 俺来了俺去了www色官网| 亚洲黄色av| 中国女人操逼视频| 五月天性爱视频| 九九成人电影| 俺来也俺去了| 成人毛片在线播放| 中文字幕成人视频| 自拍偷拍综合网| 操操av| 影音先锋久久久| 黄色福利视频在线观看| 久久久国产精品在线| 一本大道久久久久| 天天干少妇| 丁香五月天婷婷久久| 亚洲搞清视频日本| 正在播放李彩斐被洋老外| 不卡一区| 最近日韩中文字幕中文翻译歌词| 国产精品成人电影| 乱伦91| 高潮喷水在线观看| 大香蕉在线电影| 欧美大香蕉在线| 人人操人人干人人摸| 99久久精品国产精品有折扣吗| 日本欧美在线观看| 婷婷五月久久| 亚洲av免费看| 亚洲久久久久久| 美女肏| 最新国产视频| 91ThePorn国产在线观看| av在线免费观看网站| 国产无套内射视频| 激情无码一区二区| 91麻豆福利视频| 日本毛片在线观看| 成人亚洲在线| 超碰成人欧美| 精品玖玖| 日本親子亂子倫XXXX| 天天日天天爱| 香蕉伊人网| 成人乱妇无码AV在线| 中文字幕亚洲日韩| 日韩美女视频19| 日韩美女视频19| 成人黄色毛片| 国产精品秘久久久久久免费播放| 亚洲无码在线免费观看| 黄片免费网站| 精品人妻一区二区三区四区不卡在| 色婷婷视频| 亚洲任你操超碰在线| 国产亚洲午夜久久久成人电影| av在线天堂| 亚洲综合五月天婷婷丁香| 国产视频久久| 夜夜骑婷婷91| 18SAV| 午夜视频99| 三级国产网站| 大香蕉伊人操| 91AV天天在线观看| 欧美视频久久| 尤物视频在线观看视频| 国产美女一区| 51AV在线| 国产精品久久久久无码| 久久免费国产视频| 亚洲最大无码| 91国产爽黄在线| 黄色综合| 亚洲婷婷五月| 婷婷色色婷婷五月天| 三级AV在线免费观看| 亚洲国产女人| 久久午夜鲁丝| 欧美a片在线看| 草久伊人| 日韩操片| 麻豆黄色片| 欧美亚洲一区二区三区| 18岁毛片| 久热在线| 亚洲无码一二区| 操逼福利视频| 18禁激韩| 精品码一区二在线观看| 人人操大香蕉| 污视频免费在线观看| 国产做受91一片二片老头| 波多野结衣无码视频在线观看| 欧美日屄| 久草资源| 91精品婷婷国产| 亚洲第一香蕉视频| 777国产盗摄偷窥精品0000| 少妇熟女视频| www.91超碰在线| 亚洲精品久久久久久久蜜桃| 午夜视频网站| 国产成人无码区免费视频| 欧美激情四射老司机| 无码成人视频| 亚洲AV综合色区无码国产播放 | 免费成人黄视频| 日本少妇高清视频| 青青草婷婷| 国产人人爽| 国产欧美日韩综合在线视频| 国产美女网站| 射射AV| 久久久123| 婷婷欧美日韩| 18禁黄色免费网站| 亚洲视频天堂| 激情无码视频| 亚洲国产成人在线| www.操逼网| 亚洲无码婷婷| 国产v视频| 亚洲免费黄色| 高清无码免费在线观看| 蜜臀AV成人| 欧美AAA| 91逼站| 激情无码一区二区| 国产精视频| 99国产在线观看| 久久中文字幕免费| 亚洲精品日韩综合观看成人91| 91久久久青青青青草| 蜜桃av秘无码一区三| 中文字幕2018第一页| 亚洲一区在线视频| 亚欧av无码| 自慰一区| 日韩理论在线| 女人18片毛片60分钟黃菲菲| 精品国产99| 日韩综合色视频导航| 成年人免费黄色视频| 国产成人精品久久二区二区91| 国产三级麻豆| 国产一级aa| 日韩视频免费观看| 日韩AV无码网站| 欧美日韩黄色极品| 欧一美一伦一A片| 成人无码99| 亚洲天堂成人在线| 西西888WWW大胆视频| 免费看的操逼视频| 蜜桃av无码一区二区三区| 婷婷久久综合久色综| 乱码少妇| 影音先锋色色| 欧美亚洲日韩在线观看| 成人做爰100部免费网站| 女人的天堂AV| 一区无码免费| 亚洲天堂视频网站| 欧美午夜黄片| 爱爱一区| 日韩无码人妻一区二区三区 | 国产寡妇亲子伦一区二区三区四区| 日本一级特级毛片视频| 91在线视频免费观看| 特黄特黄免费看| 伊人视频网| 无码精品人妻| 日产毛片| www天天操| 色欲一区二区三区| 日产电影一区二区三区| 亚洲无码精品在线| 久久91久久久久麻豆精品| 91人妻人人澡人人爽人人精品一| 色老板最新地址| 婷婷色亚洲| 久草福利| 91白丝喷水自慰网站| A片网站在线观看| 婷婷五月天在线播放| 久操视频一区二区三区| 中文字幕在线播放第一页| 麻豆影音先锋| 黄色电影A片| 曰本精品综合网在线| 久久久久亚洲精品| 亚欧洲精品| 亚洲第一在线| 一本免费视频| 黄色免费一级片| 亚洲啪啪| 啪啪成人网| 亚洲在线一区二区| 一级片在线视频| 午夜无码视频| 操b视频免费| 亚洲黄色视频网站在线观看| 永久免费一区二区三区| 操b国产| 色小说在线| 五月激情啪啪| 91鸡巴| 91丝袜在线| 欧美亚洲中文| 国产一级a片| 91精品国产综合久久久久久久| 久久在线免费视频| 日日干日日操| 日本免费在线观看视频| 国产男女无套免费视频| 欧美色图88| 久久久久久久极品内射| 亚洲精品视频免费看| 国产av影院| 日韩在线大香蕉| 欧美三级网站在线观看| 黄色大片在线免费观看| www.无码视频| 国产免费一级片| 欧美精产国品一二三区| 波多野结衣AV网站| 国产操美女| 久草视频在线播放| 在线观看日韩精品| 激情五月天色| 狼人香蕉在线视频| 欧美日韩在线视频一区| 国产免费AV在线| 亚洲AV一二三| 一区二区有限公司| 国产在线激情视频| 天堂中文资源在线观看| 欧美三级毛片| 黄色电影免费网站| 99re国产视频| 波多野结衣AV在线播放| 黄色污污污网站| 一级a一级a爰片免费| 欧美精产国品一二三| 欧美一级片网站| 国产操比| 欧美色大香蕉| 尤物网站在线播放| 成人网站在线免费看| 永久免费黄色视频网站| 亚洲AV无一区二区三区久久| 国产精品999| 免费无码婬片aaaa| 日韩一级免费毛片| 精国产品一区二区三区A片| 黄色无遮挡| 亚洲免费婷婷| 99久久丫e6| 蜜臀99久久精品久久久久久软件 | 翔田千里高潮90分钟| 豆花视频在线看| www.干| 三级视频网址| 国产一级黄色录像| 99极品视频| 五月丁香婷婷色色| a在线视频| 成人理论片| 九九热免费视频| 亚洲性爱一区二区三区| 四色永久成人网站| 黄色视频在线观看亚洲一区二区三区免费| 中文字幕牛牛婷婷| 黄色成人网站在线免费观看| 四虎亚洲无码| 色xxxx| 做爱视频91| 影音先锋AV在线资源| 成人片天天看片欧美一级| 中文字幕精品一区| 影音先锋成人AV| 91久久超碰| 黄色视频视频| av在线小说| 精品国产一区二区三区久久久蜜月| 麻豆视频在线免费观看| 簧片在线免费观看| 五月天av在线观看| 免费日韩毛片| 免费一区二区三区| 亚洲成人免费在线| 爱爱打炮影院| 欧美国产综合在线| 久久久久久网站| 草逼123| 在线中文字幕av| 天堂中文资源在线观看| 91乱子伦国产乱子伦海的味道 | 91人妻人人澡| 99成人在线视频| 久久午夜福利| 操老骚逼视频| 日韩午夜精品| 青草视屏| 淫香淫色综合网| 动漫人物插画动漫人物的视频软件| 青草国产| а√天堂中文官网8| 大香蕉手机在线视频| 91成人在线影院| 亚洲AV无码成人精品区| 久久九九视频| 亚洲黄片免费| 怡春院首页| 国产在线拍揄自揄拍无码福利 | 中文字幕在线观看av| 欧美在线一级片| AV无码高清| 影音先锋男人网| 人成视频在线观看| 一区二区三区日本| 亚洲激情小说| 草榴在线视频| 美国一级A片草草视频| 可以在线观看的AV| 婷婷爱要操| 国产三级三级三级| 黄色大片中国一级片-免费看特一级片-亚洲黄色AV | 男女无套在线观看免费| 亚洲免费网站| 日韩免费视频观看| 91狠狠爱| 午夜电影福利| 黄色a在线| 国产精品色色| 老熟女搡BBBB搡BBBB视频 | 婷婷毛片| 2025四虎在线视频观看| 簧片在线免费观看| 精品一区二区三区av| 成人性爱免费视频| 久久精品无码一区二区无码性色| 日本少妇无码| 日韩中文字幕在线高清| 91精品久久人妻一区二区夜夜夜 | 99在线观看精品视频| 国产一二三四| 麻豆精品久久久久久久99蜜桃| 超碰成人欧美| 国产麻豆剧传媒精品国产AV| 日本成人高清视频| 一级黄片学生妹| 成人做爰100片免费观看视频 | 成人做爰A片一区二区app| 亚洲日韩一级| 亚洲小电影| 三上悠亚无码破解69XXX| 高清无码不卡AV| 人妻操逼| 97免费在线观看视频| 豆花视频| aaaaaa在线观看免费高清| 无码专区在线看v| AV高清| 亚洲国产成人精品女人久久| 亚洲AV第二区国产精品| 日本黄色视频在线免费观看| 白虎高清无码大尺度免费在线观看 | 久久AV秘一区二区三区水生| 高清无码视频在线| 伊人婷婷| 久久偷看各类wc女厕嘘嘘偷窃 | 天天射天天日天天干| 久草资源在线| 五月天久久| 日本无码视频在线观看毒| 国产一级a毛一级a做免费高清视频| 黄色一级电影| 无码秘蜜桃吴梦梦| 中文字幕日韩无码电影| 中文最新天堂8√| 91视频免费在线看| 亚洲一级内射| 免费版成人久久幺| 草久美女| 国产凹凸视频| 日韩无码三级视频| 国产成人AV在线| 日韩激情在线观看| 中文爱爱视频| 日韩av免费看| 成年人免费网站| 加勒比综合在线| 欧美操逼在线| 激情无码网站| 亚洲AV成人精品一区二区三区| 中文字幕在线播放第一页| 久久精品福利视频| 97国产资源| 国产操女人| 亚洲欧美日韩久久| 丁香六月激情婷婷| 国产又爽又黄A片免费观看| 永久免费无码中文字幕| 午夜老湿机| www.高清无码| 骚逼综合网| 亚洲高清无码免费在线观看| 日本乱伦中文字幕| 大香蕉亚洲在线| 天天干天天日天天操| 日韩精品人妻中文字幕第4区| 日本免费一二三区| 欧美日韩黄色| 18禁无码永久免费网站大全| 岛国av片| 亚洲无码在线播放| 秋霞久久| 大黑逼AV| 日韩综合一区| 免费成人黄色| 人妻体体内射精一区二区| 国产AV一级片| 少妇搡BBBB搡BBB搡造水多/ | 荫蒂添到高潮免费视频| 日本久久久久久久久视频在线观看 | 中文字幕在线播放视频| 日韩一级中文字幕| 影音先锋成人资源站| 嫩草91| 麻豆精品在线播放| 青青草无码成人天堂免费| 俄罗斯白嫩BBwBBwBBw91| 欧美性爱XXXX| 无码福利| 黄色片大全| 亚洲av二区| 四虎精品一区二区三区| 麻豆AV无码| 色噜噜狠狠一区二区三区300部| 看毛片网站| 第四色激情网| 在线免费观看成人视频| 无码av无码AV| 亚洲精品乱码久久久久久蜜桃91 | 91在线观看| 在线AⅤ| 日本中文无码视频| 四川少妇搡bbbb搡bbbb| 亚洲无码网| 欧美亚洲图区| 1024香蕉视频| 欧美视频在线观看| 久久久久性爱| av福利在线| A片在线免费播放| 久热无码| 大香蕉婷婷五月天| 波多野结衣AV网站| 国产又爽又黄免费视频免费观看| 99久在线精品99re8热| 亚洲黄色一级电影| 自拍无码视频| 亚洲中文字幕网| 久久超碰精品| 国产成人精品免高潮在线观看 | 欧美一级大香蕉| 色色三区| www黄片视频| 东京热高清无码| 黃色级A片一級片| 久久99精品国产.久久久久久| 国产一精品| 麻豆AV96熟妇人妻| 成人伊人综合| 成人毛片av| 欧美精品无码一区二区| 欧美日韩国产精品| 91视频专区| 影音先锋av成人电影| 日逼操| 日韩加勒比| 亚洲三级电影| 色色激情五月天| 久久露脸国语精品国产91| 丁香五月天激情| 激情五月天色| 狼人一区二区| 少妇高潮一区二区三区99| 女人的天堂AV在线观看| 九色PORNY自拍视频| 亚洲成人无码在线播放| 国产在线性爱视频| 色欲天天网| 中文字幕一区在线观看| 日日碰日日摸| 日韩欧美国产精品综合嫩V| 无码人妻精品一区二区蜜桃网站| 中文字幕你懂的在线三级| 黄色免费在线观看视频| 日韩成人AV在线| 中文字幕乱码无码人妻系列蜜桃 | 亚洲,制服,综合,中文| 国产亚洲91| 免费在线观看AV片| 亚州AV在线| av免费网站| 成人av免费在线观看| 五月天婷婷久久| 无码人妻蜜桃| 一本色道久久综合熟妇人妻| 无码视频播放| 五月天激情影院| 亚洲欧美日韩色图| jlzzzjlzzz国产免费观看| 大学生18一19GAY169| 久久午夜无码鲁片午夜精品男男 | 黄色高清无码| 另类老太婆性BBWBBw| 又色又爽| 免费高清无码视频在线观看| 亚洲va综合va国产va中文| 六月色| 人妻人人操人人爽| 91av免费在线观看| 91看片看婬黄大片Videos| 99久久精彩视频| 国产探花视频在线免费观看| 麻豆91视频| av黄色在线| 一道本无码在线视频| 亚洲秘无码一区二区三区电影| 影音先锋乱伦电影| 一级黄色蜜芽视频| 日韩成人视频在线观看| 一区二区色| 日韩成人小说| 在线99热| 一区二区三区在线视频观看| 婷婷五月天影院| 人人草在线视频| 欧美一区二区三区不卡| 亚洲中文字幕在线视频播放| 国产精品免费久久| 日本久久婷婷| 法国《少女日记》电影| www.麻豆网91成人久久久| 日韩无码视| 蜜桃网站在线观看| www.人人摸| 成人性爱视频免费观看| 97精品人人A片免费看| 青草大香蕉| 男人色天堂| 国产无遮挡又黄又爽免费网站| 久久e热| 天天做天天爽| 欧美精品福利| 91热爆TS人妖系列| 国产一级黄色大片| 欧美日韩加勒比| 91无码国产| 91水蜜桃| 无码第一页| 操逼视频在线播放| 91丨九色丨蝌蚪丨成人| 国产永久精品| 欧美AAA在线观看| 日无码视频| 国产精品美女久久久久久久久| 西西4444www大胆无吗| 国产做受精品网站在线观看| 伊人久久综合| 婷婷在线播放| 青青草91| 在线观看欧美日韩| 人妻少妇无码精品| 四虎成人网址| 人人色人人操人人干| 黄色三级av| 欧美性爱A| 在线久操| 午夜av电影| 狠狠色噜噜狠狠狠7777米奇网 | AV五月| 黄色视频网站观看| 黄色高清视频在线观看| 人人爱人人看| av不卡免费观看| 懂色午夜福利一区二区三区| 亚洲三级无码| 国产欧美日韩在线| 亚洲视频网| 国产美女自慰网站| 97精品综合久久| 亚洲黄片免费| 亚洲无码一本道| 日本在线精品视频| 成人短视频在线观看| 国产精品成人无码专区| 国产成人高清视频| 亚洲午夜精品成人毛片| a片视频免费| 国产乱╳╳AⅤ毛片| 黄色一级大片在线免费看国产| 丁香五月成人网| 日韩蜜桃视频| 啪啪成人视频| 熟女视频一区二区| 91AV免费看| 噜噜噜噜射| 亚洲一级婬片A片AAAA网址| 成人电影三区| 狠狠操一区| 男女怕怕网站| 免费av一区二区| 国产麻豆精品ThePorn| 国内一级A片| 91在线91| 国产精品久久久久久久久久二区三区 | 国产精品污www在线观看| 一区二区有限公司| 翔田千里在线播放| 99九九热| 国产做受91电影| 久久久久久久久久成人永久免费视频 | 成人视频网| 五月婷婷色| 国产成人电影| 成人做爰100片免费看| 天天射综合| 久久肥妞操| 中文字幕操逼网站| 91爱爱com| 久色无码| 亚洲精品国产精品乱码视99| 无码成人视频| 啪啪视频国产| 91人兽| 成人黄色导航| 亚洲成人动漫在线| 国产精品欧美激情| 在线成年人视频| 亚洲无码理论片| 久操网在线视频| 欧美操逼操| 国产一级婬乱A片| 国产无码高清在线观看| 香蕉成人网站| 99亚洲天堂| 成人黄色免费看| 永久免费黄色视频| 日本综合视频| 一级片在线视频| 国产精品无码成人AV在线播放| 播五月婷婷| 国产女人18毛片水真多18精品| 99无码视频| 91麻豆成人| 免费黄色| 漂亮人妻吃鸡啪啪哥哥真的好| 女人A片一级黄色| 成人做爰100部片视频| 人人干人| 亚洲激情欧美激情| 亚洲无码一级视频| 麻豆传媒在线| 91香蕉网| av天堂无码| 你懂得在线观看| 丝袜美腿亚洲综合| 91香蕉国产| 天天干视频| 91久久精品无码一区二区三区| 国产精品天天AVJ精麻传媒| 新狠狠干| 一级a一级a爱片兔兔软件| 国产又粗又长又硬又大毛苴茸图片| 无码秘蜜桃一区二区三区| 人人看人人插| 丁香五月激情在线| 91色秘乱码一区二区| 91老熟女视频| 三级片麻豆| 日韩成人无码视频| 久久福利导航| 国产91白浆四溢| 无码精品人妻一区二区欧美| 婷婷日韩在线| 大香蕉久久伊人| 北条麻妃波多波多野结衣| 亚洲熟妇视频| 99热超碰在线| 黄色成人在线视频| 少妇精品| 免费看AV大片| 一区二区三区三级片| 玩弄大荫蒂视频| 人妻在线免费视频| 小h片| 婷婷丁香五月综合| A片视频在线观看| 青春草在线观看| 日韩AV在线直播| 亚洲AV秘无码一区在线| 三级视频国产| 特级西西444WWW高清| 精品欧美乱码久久久久久| 91中文字幕+乱码| 豆花成人社区,视频| 久久精品网| 成人国产| 久久99高清| 草逼视频网站| 国产精品成人在线观看| 国产精品视频久久久| 在线观看91| 一本道不卡色色| 国产一级A片视频| 二区视频在线| 婷婷色五月激情| 草久网| 亚洲免费黄色| 色五月激情| 中国女人如毛片| 99久久人妻无码中文字幕系列 | 亚洲AV无码第一区二区三区蜜桃| 亚洲国产精品18久久久久久| 99热播在线| 成人欧美在线观看| A级片在线观看| 无码人妻一区二区| 亚洲中文无码第一页| 久久精品无码一区二区无码性色| 久久久激情| 国产无码二区| 亚洲一区在线播放| 国产精品一二三| 思思热99热| 一级a一级a免费观看免免黄‘/| 国产高潮白浆喷| 黄色片一级| 亚洲在线播放| 久久99久久视频| 97亚洲国产| 国产三级片AV| 欧美成人免费网站| 一级a片免费看| 国产精品乱草| 在线免费观看黄色网址| 日日操网| 天堂综合| 午夜福利成人| 国产A级黄色片| 日韩激情一区二区| 黄色在线免费观看网站| 国产一区二区视频在线观看| 麻豆一级片| 久久成人一区| 亚洲欧洲天堂| 国产视频福利在线| 猫咪成人网站| 欧美一区二区丁香五月天激情| 亚洲欧美在线成人| 亚洲一区二区三区在线视频| 92丨九色丨偷拍老熟女| 岛国AV在线| 激情A| 久草视频这里只有精品| 色网站在线观看| 国产午夜成人福利在线| 亚洲国产精品成人va在线观看| 老熟女搡BBBB搡BBBB视频| 免费国产A片| 果冻传媒一区二区三区| 日韩无码网站| 黄色草莓视频| 国产成人AV在线观看| 在线免费观看毛片| 日AV在线无| 成人国产无码| 国产区欧美去区在线| 91新视频| 色婷婷激情五月天| 91成人视频免费观看| 黄色电影a片| 青青草91| 99精品欲| 国产a精品| 日韩中文在线视频| 亚洲激情小说| h在线网站| 精品一区二区三区免费| 亚洲精品婷婷| 大色欧美综合| 天天日天天操天天爽| 国产在线网址| 成人久久电影| 五月天乱伦网| 在线看片av| 午夜理论片| 就操| A级毛片视频| 最新日韩无码| 无码内射视频| 91精品国产亚洲| 少妇高潮喷水视频| 自拍偷拍国产| 黄片91| 丁香花激情网| 亚洲AV毛片| 成人AV电影在线观看| 美女被操网站免费| 婷婷九月| 日本欧美久久久久免费播放网| 日韩无码乱码| 可以免费看AV的网站| 亚洲人妻中文字幕| 色婷婷电影网| 中文字幕在线不卡视频| 日本亚洲欧美| 成人蜜臀AV| 三级黄色视频在线观看| 操屄视频在线观看| 久久99久久视频| 亚洲视频www| 曰韩毛片| 中文字幕有码在线播放| 日本亲子乱婬一级A片| 残忍另类BBWBBWBBW| 男女操逼视频网站免费| 91九色蝌蚪91POR成人| 免费看黄片,在线观看| 免费无码视频一区二区| 国产日韩中文字幕| 中文在线字幕高清电视剧| 日韩无码人妻久久一区二区三区 | 亚洲成人免费在线观看| 亚洲一区欧美二区gay| 国产1级a毛a毛1级a毛1级| igao视频| 亚洲一级免费免费在线观看| 大鸡巴久久久久久| 骚逼综合| 夜夜嗨av无码一区二区三区 | 伊人成人视频在线观看| 无码免费在线观看视频| 中文字幕在线不卡| 无码国产传媒精品一区| 99re6热在线精品视频| 日韩高清不卡| 久久露脸国语精品国产91| 天天爱综合| 国产第1页| 亚洲熟妇在线观看| 国产熟妇毛多久久久久一区| 国产特級黃色大片| 久久视频免费在线观看| 亚洲激情综合网| 中文字幕一区二区三区人妻在线视频|