欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

入門Linux的基礎(chǔ)內(nèi)容

玩轉(zhuǎn)嵌入式 ? 來(lái)源:玩轉(zhuǎn)嵌入式 ? 作者:玩轉(zhuǎn)嵌入式 ? 2022-10-17 10:29 ? 次閱讀

對(duì)于嵌入式而言,大部分人的進(jìn)階路線:單片機(jī) -> RTOS -> Linux。

下面,針對(duì)有單片機(jī)、RTOS基礎(chǔ)的同學(xué),分享一份入門 Linux 的基礎(chǔ)內(nèi)容。

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ù)程序。

8a3d7406-4ce1-11ed-a3b6-dac502259ad0.jpg

什么是 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)是我們常說(shuō)的Linux操作系統(tǒng),也即是由Linux內(nèi)核與各種常用軟件的集合產(chǎn)品。

總結(jié):真正的Linux指的是系統(tǒng)內(nèi)核,而我們常說(shuō)的Linux指的是 “發(fā)行版完整的包含一些基礎(chǔ)軟件的操作系統(tǒng)。

Linux 對(duì)比 Windows

穩(wěn)定且有效率;

免費(fèi)(或少許費(fèi)用);

漏洞少且快速修補(bǔ);

多任務(wù)多用戶;

更加安全的用戶與文件權(quán)限策略;

適合小內(nèi)核程序的嵌入系統(tǒng);

相對(duì)不耗資源。

Linux 系統(tǒng)種類

紅帽企業(yè)版Linux:RHEL是全世界內(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:通過(guò)把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)的兼容能力。Ubuntu與Fedora都是極其出色的Linux桌面系統(tǒng),而且Ubuntu也可用于服務(wù)器領(lǐng)域。

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

8a509266-4ce1-11ed-a3b6-dac502259ad0.jpg

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

這個(gè)黑色的面板就是終端也就是Shell(命令行環(huán)境)。

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)操作等語(yǔ)法,所以用戶可以用Shell命令寫出各種小程序,又稱為Shell腳本。這些腳本都通過(guò)Shell的解釋執(zhí)行,而不通過(guò)編譯。

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。

通過(guò)執(zhí)行echo $SHELL命令可以查看到當(dāng)前正在使用的Shell。還可以通過(guò)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)限。

命令格式

commandparameters(命令參數(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使用生涯。

通過(guò)上下方向鍵 ↑ ↓ 來(lái)調(diào)取過(guò)往執(zhí)行過(guò)的Linux命令;

命令或參數(shù)僅需輸入前幾位就可以用Tab鍵補(bǔ)全;

Ctrl + R:用于查找使用過(guò)的命令(history命令用于列出之前使用過(guò)的所有命令,然后輸入!命令加上編號(hào) (!2) 就可以直接執(zhí)行該歷史命令);

Ctrl + L:清除屏幕并將當(dāng)前行移到頁(yè)面頂部;

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ì)話;

文件和目錄

文件的組織

8ab4fa3a-4ce1-11ed-a3b6-dac502259ad0.jpg

查看路徑

pwd

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

8abfd838-4ce1-11ed-a3b6-dac502259ad0.jpg

which

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

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

8ac691b4-4ce1-11ed-a3b6-dac502259ad0.jpg

瀏覽和切換目錄

ls

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

【常用參數(shù)】

-a顯示所有文件和目錄包括隱藏的

-l顯示詳細(xì)列表

-h適合人類閱讀的

-t按文件最近一次修改時(shí)間排序

-i顯示文件的inode(inode是文件內(nèi)容的標(biāo)識(shí))

8acf606e-4ce1-11ed-a3b6-dac502259ad0.jpg

cd

cd是英語(yǔ)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)容,更適合查看小的文件。

catcloud-init.log

【常用參數(shù)】

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

less

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

lesscloud-init.log

【快捷操作】

空格鍵:前進(jìn)一頁(yè)(一個(gè)屏幕);

b鍵:后退一頁(yè);

回車鍵:前進(jìn)一行;

y鍵:后退一行;

上下鍵:回退或前進(jìn)一行;

d鍵:前進(jìn)半頁(yè);

u鍵:后退半頁(yè);

q鍵:停止讀取文件,中止less命令;

=鍵:顯示當(dāng)前頁(yè)面的內(nèi)容是文件中的第幾行到第幾行以及一些其它關(guān)于本頁(yè)內(nèi)容的詳細(xì)信息;

h鍵:顯示幫助文檔;

/鍵:進(jìn)入搜索模式后,按n鍵跳到一個(gè)符合項(xiàng)目,按N鍵跳到上一個(gè)符合項(xiàng)目,同時(shí)也可以輸入正則表達(dá)式匹配。

head

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

headcloud-init.log

【參數(shù)】

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

tail

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

tailcloud-init.log

【參數(shù)】

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

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

touch

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

touchnew_file

mkdir

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

mkdirnew_folder

【常用參數(shù)】

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

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

cp

拷貝文件和目錄

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

【常用參數(shù)】

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

mv

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

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

文件的刪除和鏈接

rm

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

rmnew_file-->刪除new_file文件
rmf1f2f3-->同時(shí)刪除f1f2f33個(gè)文件

【常用參數(shù)】

-i向用戶確認(rèn)是否刪除;

-f文件強(qiáng)制刪除;

-r遞歸刪除文件夾,著名的刪除操作rm -rf。

ln

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

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

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

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

硬鏈接

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

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

8ad70210-4ce1-11ed-a3b6-dac502259ad0.jpg

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

軟鏈接

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

ln-sfile1file2

8adcb2be-4ce1-11ed-a3b6-dac502259ad0.jpg

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

total0
-rw-r--r--1rootroot0Jan1406:29file1
lrwxrwxrwx1rootroot5Jan1406:42file2->file1#表示file2指向file1

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

用戶與權(quán)限

用戶

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

8ae2e6ac-4ce1-11ed-a3b6-dac502259ad0.jpg

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

sudo

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

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

useradd + passwd

useradd添加新用戶

passwd修改用戶密碼

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

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

userdel

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

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

su

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

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

群組的管理

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

groupadd

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

groupaddfriends

groupdel

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

groupdelfoo-->刪除foo群組

groups

查看用戶所在群組

groupslion-->查看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

用于修改文件的群組。

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

chown

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

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

【常用參數(shù)】

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

文件權(quán)限管理

chmod

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

chmod740file.txt

【常用參數(shù)】

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

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

[root@lion~]#ls-l
drwxr-xr-x5rootroot4096Apr132020climb
lrwxrwxrwx1rootroot7Jan1406:41hello2.c->hello.c
-rw-r--r--1rootroot149Jan1306:14hello.c

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

d:表示目錄,就是說(shuō)這是一個(gè)目錄,普通文件是-,鏈接是l。

r:read表示文件可讀。

w:write表示文件可寫,一般有寫的權(quán)限,就有刪除的權(quán)限。

x:execute表示文件可執(zhí)行。

-:表示沒有相應(yīng)權(quán)限。

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

8aec1ee8-4ce1-11ed-a3b6-dac502259ad0.jpg

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

它是一個(gè)文件夾;

它的所有者具有:讀、寫、執(zhí)行權(quán)限;

它的群組用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限;

它的其它用戶具有:讀、執(zhí)行的權(quán)限,沒有寫的權(quán)限。

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

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

權(quán)限 數(shù)字
r 4
w 2
x 1

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

chmod640hello.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-----

用字母來(lái)分配權(quán)限

u:user的縮寫,用戶的意思,表示所有者。

g:group的縮寫,群組的意思,表示群組用戶。

o:other的縮寫,其它的意思,表示其它用戶。

a:all的縮寫,所有的意思,表示所有用戶。

+:加號(hào),表示添加權(quán)限。

-:減號(hào),表示去除權(quán)限。

=:等于號(hào),表示分配權(quán)限。

chmodu+rxfile-->文件file的所有者增加讀和運(yùn)行的權(quán)限
chmodg+rfile-->文件file的群組用戶增加讀的權(quán)限
chmodo-rfile-->文件file的其它用戶移除讀的權(quán)限
chmodg+ro-rfile-->文件file的群組用戶增加讀的權(quán)限,其它用戶移除讀的權(quán)限
chmodgo-rfile-->文件file的群組和其他用戶移除讀的權(quán)限
chmod+xfile-->文件file的所有用戶增加運(yùn)行的權(quán)限
chmodu=rwx,g=r,o=-file-->文件file的所有者分配讀寫和執(zhí)行的權(quán)限,群組其它用戶分配讀的權(quán)限,其他用戶沒有任何權(quán)限

查找文件

locate

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

安裝 locate

yum-yinstallmlocate-->安裝包
updatedb-->更新數(shù)據(jù)庫(kù)

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

find

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

find<何處><何物><做什么>

何處:指定在哪個(gè)目錄查找,此目錄的所有子目錄也會(huì)被查找。

何物:查找什么,可以根據(jù)文件的名字來(lái)查找,也可以根據(jù)其大小來(lái)查找,還可以根據(jù)其最近訪問(wèn)時(shí)間來(lái)查找。

做什么:找到文件后,可以進(jìn)行后續(xù)處理,如果不指定這個(gè)參數(shù),find命令只會(huì)顯示找到的文件。

根據(jù)文件名查找

find-name"file.txt"-->當(dāng)前目錄以及子目錄下通過(guò)名稱查找文件
find.-name"syslog"-->當(dāng)前目錄以及子目錄下通過(guò)名稱查找文件
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目錄下查找文件大小超過(guò)10M的文件
find/var-size-50k-->/var目錄下查找文件大小小于50k的文件
find/var-size+1G-->/var目錄下查找文件大小查過(guò)1G的文件
find/var-size1M-->/var目錄下查找文件大小等于1M的文件

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

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

僅查找目錄或文件

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

操作查找結(jié)果

find-name"*.txt"-printf"%p-%u
"-->找出所有后綴為txt的文件,并按照%p-%u
格式打印,其中%p=文件名,%u=文件所有者
find-name"*.jpg"-delete-->刪除當(dāng)前目錄以及子目錄下所有.jpg為后綴的文件,不會(huì)有刪除提示,因此要慎用
find-name"*.c"-execchmod600{};-->對(duì)每個(gè).c結(jié)尾的文件,都進(jìn)行-exec參數(shù)指定的操作,{}會(huì)被查找到的文件替代,;是必須的結(jié)尾
find-name"*.c"-okchmod600{};-->和上面的功能一直,會(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來(lái)管理軟件包,yum是CentOS中默認(rèn)的包管理工具,適用于Red Hat一族??梢岳斫獬?a href="http://www.delux-kingway.cn/tags/node.js/" target="_blank">Node.js的npm。

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.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

3、生成緩存

yummakecache

閱讀手冊(cè)

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

man

安裝更新 man

sudoyuminstall-yman-pages-->安裝sudomandb-->更新

man 手冊(cè)種類

可執(zhí)行程序或Shell命令;

系統(tǒng)調(diào)用(Linux內(nèi)核提供的函數(shù));

庫(kù)調(diào)用(程序庫(kù)中的函數(shù));

文件(例如/etc/passwd);

特殊文件(通常在/dev下);

游戲;

雜項(xiàng)(man(7),groff(7));

系統(tǒng)管理命令(通常只能被root用戶使用);

內(nèi)核子程序。

man + 數(shù)字 + 命令

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

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

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

NAME#命令名稱和簡(jiǎn)單描述pwd--returnworkingdirectoryname

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

DESCRIPTION#包括所有參數(shù)以及用法Thepwdutilitywritestheabsolutepathnameofthecurrentworkingdirectorytothestandardoutput.
Someshellsmayprovideabuiltinpwdcommandwhichissimilaroridenticaltothisutility.Consultthebuiltin(1)manualpage.
Theoptionsareasfollows:
-LDisplaythelogicalcurrentworkingdirectory.
-PDisplaythephysicalcurrentworkingdirectory(allsymboliclinksresolved).
Ifnooptionsarespecified,the-Loptionisassumed.

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

help

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

Linux 進(jìn)階

文本操作

grep

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

基礎(chǔ)語(yǔ)法

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

#實(shí)例
[root@lion~]#greppath/etc/profile
pathmunge(){pathmunge/usr/sbinpathmunge/usr/local/sbinpathmunge/usr/local/sbinafterpathmunge/usr/sbinafter
unset-fpathmunge

常用參數(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-Epath/etc/profile-->完全匹配path
grep-E^path/etc/profile-->匹配path開頭的字符串
grep-E[Pp]ath/etc/profile-->匹配path或Path

sort

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

基礎(chǔ)語(yǔ)法

sortname.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ǔ)語(yǔ)法

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

實(shí)例用法

[root@lion~]#wcname.txt131391name.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ǔ)語(yǔ)法

uniqname.txt#去除name.txt重復(fù)的行數(shù),并打印到屏幕上
uniqname.txtuniq_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ǔ)語(yǔ)法

cut-c2-4name.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 src="https://file1.elecfans.com//web2/M00/97/0E/wKgaomTnJO6AMoMeAAAqssQ57BE087.jpg" alt="8af3ff00-4ce1-11ed-a3b6-dac502259ad0.jpg" />命令一般都是通過(guò)鍵盤輸入,然后輸出到終端、文件等地方,它的標(biāo)準(zhǔn)用語(yǔ)是?stdin?、?stdout?以及?stderr?。

標(biāo)準(zhǔn)輸入stdin,終端接收鍵盤輸入的命令,會(huì)產(chǎn)生兩種輸出;

標(biāo)準(zhǔn)輸出stdout,終端輸出的信息(不包含錯(cuò)誤信息);

標(biāo)準(zhǔn)錯(cuò)誤輸出stderr,終端輸出的錯(cuò)誤信息。

8b58b544-4ce1-11ed-a3b6-dac502259ad0.jpg

重定向

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

輸出重定向>

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

我們來(lái)看一個(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)容:

Mark1Mark2Mark3Mark4Mark5Mark6

【注意】使用>要注意,如果輸出的文件不存在它會(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ò)誤輸出

catnot_exist_file.csv>res.txt2>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è)地方

catnot_exist_file.csv>res.txt2>&1#覆蓋輸出
catnot_exist_file.csv>>res.txt2>&1#追加輸出

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

8b5fa818-4ce1-11ed-a3b6-dac502259ad0.jpg未命名文件 (2).png

輸入重定向<

cat

雖然它的運(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<

管道|

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

8b84f60e-4ce1-11ed-a3b6-dac502259ad0.jpg未命名文件 (1).png

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

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

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

greplog-Ir/var/log|cut-d:-f1|sort|uniq
#greplog-Ir/var/log表示在log文件夾下搜索/var/log文本,-r表示遞歸,-I用于排除二進(jìn)制文件
#cut-d:-f1表示通過(guò)冒號(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ǔ)言中也有廣泛的應(yīng)用。Angular中的模板語(yǔ)法中可以使用管道。Node.js中也有stream流的概念。

查看進(jìn)程

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

w

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

[root@lion~]#w
0653up25days,9:53,1user,loadaverage:0.00,0.01,0.05
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
rootpts/0118.31.243.5305:561.00s0.02s0.00sw

0653:表示當(dāng)前時(shí)間
up 25 days, 9:53:表示系統(tǒng)已經(jīng)正常運(yùn)行了“25天9小時(shí)53分鐘”
1 user:表示一個(gè)用戶
load average:0.00, 0.01, 0.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)或者說(shuō)是一個(gè)進(jìn)程快照。

基礎(chǔ)語(yǔ)法

[root@lion~]#ps
PIDTTYTIMECMD
1793pts/00000bash
4756pts/00000ps

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通過(guò)CPU和內(nèi)存使用來(lái)過(guò)濾進(jìn)程ps -aux | less;

-aux --sort -pcpu按CPU使用降序排列,-aux --sort -pmem表示按內(nèi)存使用降序排列;

-axjf以樹形結(jié)構(gòu)顯示進(jìn)程,ps -axjf它和pstree效果類似。

top

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

top-0707up25days,10:41,1user,loadaverage:0.30,0.10,0.07
Tasks:67total,1running,66sleeping,0stopped,0zombie
%Cpu(s):0.7us,0.3sy,0.0ni,99.0id,0.0wa,0.0hi,0.0si,0.0st
KiBMem:1882072total,552148free,101048used,1228876buff/cache
KiBSwap:0total,0free,0used.1594080availMem

PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
956root10-101339641584810240S0.70.8263:13.01AliYunDun1root2005164436642400S0.00.23:23.63systemd2root200000S0.00.00:00.05kthreadd4root0-20000S0.00.00:00.00kworker/0:0H

top - 0707 up 25 days, 10:41, 1 user, load average: 0.30, 0.10, 0.07相當(dāng)w命令的第一行的信息。

展示的這些進(jìn)程是按照使用處理器%CPU的使用率來(lái)排序的。

kill

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

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

管理進(jìn)程

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

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

狀態(tài)碼R:表示正在運(yùn)行的狀態(tài);

狀態(tài)碼S:表示中斷(休眠中,受阻,當(dāng)某個(gè)條件形成后或接受到信號(hào)時(shí),則脫離該狀態(tài));

狀態(tài)碼D:表示不可中斷(進(jìn)程不響應(yīng)系統(tǒng)異步信號(hào),即使用 kill 命令也不能使其中斷);

狀態(tài)碼Z:表示僵死(進(jìn)程已終止,但進(jìn)程描述符依然存在,直到父進(jìn)程調(diào)用wait4()系統(tǒng)函數(shù)后將進(jìn)程釋放);

狀態(tài)碼T:表示停止(進(jìn)程收到SIGSTOP、SIGSTP、SIGTIN、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é)束了。

cpname.csvname-copy.csv&

nohup

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

nohupcpname.csvname-copy.csv

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

nohupcpname.csvname-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í)行g(shù)rep-r"log"/>grep_log2>&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í)行yarnstart啟動(dòng)項(xiàng)目
此時(shí)我們執(zhí)行ctrl+z先使其暫停
然后執(zhí)行bg使其轉(zhuǎn)為后臺(tái)運(yùn)行
這樣當(dāng)前終端就空閑出來(lái)可以干其它事情了,如果想要喚醒它就使用fg命令即可(后面會(huì)講)

jobs

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

[root@lion~]#jobs
[1]+Stoppedtop
[2]-Runninggrep--color=auto-r"log"/>grep_log2>&1&

fg

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

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

8b91da7c-4ce1-11ed-a3b6-dac502259ad0.jpg

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

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

一個(gè)運(yùn)行起來(lái)的程序被稱為進(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-auxUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot10.00.2516483852?SsFeb011:50/usr/lib/systemd/systemd--switched-root--system--deserialize22

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

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

systemctlstartnginx#啟動(dòng)服務(wù)
systemctlstopnginx#停止服務(wù)
systemctlrestartnginx#重啟服務(wù)
systemctlstatusnginx#查看服務(wù)狀態(tài)
systemctlreloadnginx#重載配置文件(不停止服務(wù)的情況)
systemctlenablenginx#開機(jī)自動(dòng)啟動(dòng)服務(wù)
systemctldisablenginx#開機(jī)不自動(dòng)啟動(dòng)服務(wù)
systemctlis-enablednginx#查看服務(wù)是否開機(jī)自動(dòng)啟動(dòng)
systemctllist-unit-files--type=service#查看各個(gè)級(jí)別下服務(wù)的啟動(dòng)和禁用情況

文件壓縮解壓

打包:是將多個(gè)文件變成一個(gè)總的文件,它的學(xué)名叫存檔、歸檔。

壓縮:是將一個(gè)大文件(通常指歸檔)壓縮變成一個(gè)小文件。

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

8b99e140-4ce1-11ed-a3b6-dac502259ad0.jpg未命名文件. png

tar

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

基礎(chǔ)用法

tar-cvfsort.tarsort/#將sort文件夾歸檔為sort.tar
tar-cvfarchive.tarfile1file2file3#將file1file2file3歸檔為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。

gziparchive.tar#壓縮gunziparchive.tar.gz#解壓

tar 歸檔 + 壓縮

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

tar-zcvfarchive.tar.gzarchive/#將archive文件夾歸檔并壓縮
tar-zxvfarchive.tar.gz#將archive.tar.gz歸檔壓縮文件解壓

zcat、zless、zmore

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

zcatarchive.tar.gz

zip/unzip

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

命令安裝

#RedHat一族中的安裝方式
yuminstallzip
yuminstallunzip

基礎(chǔ)用法

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

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

編譯安裝軟件

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

編譯安裝

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

基本步驟如下:

下載源代碼

解壓壓縮包

配置

編譯

安裝

實(shí)際案例

1、下載

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

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

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

scp~/Desktop/[email protected]:.

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

wegt+下載地址

wegthttps://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz

2、解壓文件

tar-zxvfhtop-3.0.0.tar.gz#解壓cdhtop-3.0.0#進(jìn)入目錄

3、配置

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

4、編譯

執(zhí)行make命令

5、安裝

執(zhí)行make install命令,安裝完成后執(zhí)行l(wèi)s /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=4163mtu1500inet172.31.24.78netmask255.255.240.0broadcast172.31.31.255ether003e9c:cdtxqueuelen1000(Ethernet)RXpackets1592318bytes183722250(175.2MiB)RXerrors0dropped0overruns0frame0TXpackets1539361bytes154044090(146.9MiB)TXerrors0dropped0overruns0carrier0collisions0

lo:flags=73mtu65536inet127.0.0.1netmask255.0.0.0looptxqueuelen1000(LocalLoopback)RXpackets0bytes0(0.0B)RXerrors0dropped0overruns0frame0TXpackets0bytes0(0.0B)TXerrors0dropped0overruns0carrier0collisions0

參數(shù)解析:

eth0對(duì)應(yīng)有線連接(對(duì)應(yīng)你的有線網(wǎng)卡),就是用網(wǎng)線來(lái)連接的上網(wǎng)。eth是Ethernet的縮寫,表示 “以太網(wǎng)”。有些電腦可能同時(shí)有好幾條網(wǎng)線連著,例如服務(wù)器,那么除了eht0,你還會(huì)看到eth1、eth2等。

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ì)回到你自己的電腦??雌饋?lái)好像并沒有什么用,但有時(shí)為了某些緣故,我們需要連接自己。例如用來(lái)測(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ú)線局域網(wǎng)(上面案例并未展示)。

host

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

軟件安裝

yuminstallbind-utils

基礎(chǔ)用法

[root@lion~]#hostgithub.com
baidu.comhasaddress13.229.188.59

[root@lion~]#host13.229.188.59
59.188.229.13.in-addr.arpadomainnamepointerec2-13-229-188-59.ap-southeast-1.compute.amazonaws.com.

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

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

ssh用戶@ip:port

1、[email protected]: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ù) 作用
Port sshd 服務(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)容
Hostlion#別名
HostName172.x.x.x#ip地址
Port22#端口
Userroot#用戶

這樣配置完成后,下次登錄時(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地址]wgethttp://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可以使我們通過(guò)網(wǎng)絡(luò),把文件從一臺(tái)電腦拷貝到另一臺(tái)電腦。

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

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

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

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

rsync

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

軟件安裝

yuminstallrsync

基礎(chǔ)用法

rsync-arvImages/backups/#將Images目錄下的所有文件備份到backups目錄下
rsync-arvImages/[email protected]: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ā)展出來(lái)的一個(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è)模式有幾種方法,最常用的方法是按字母鍵i(i、I、a、A、o、O都可以進(jìn)入插入模式,只是所處的位置不同),退出這種模式,只需要按下Esc鍵。

i, I進(jìn)入輸入模式Insert mode:i為 “從目前光標(biāo)所在處輸入”,I為 “在目前所在行的第一個(gè)非空格符處開始輸入”;

a, A進(jìn)入輸入模式Insert mode:a為 “從目前光標(biāo)所在的下一個(gè)字符處開始輸入”,A為 “從光標(biāo)所在行的最后一個(gè)字符處開始輸入”;

o, O進(jìn)入輸入模式Insert mode:o為 “在目前光標(biāo)所在的下一行處輸入新的一行”;O為在目前光標(biāo)所在處的上一行輸入新的一行。

命令模式

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

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

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

用一張圖表示三種模式如何切換:8ba12c98-4ce1-11ed-a3b6-dac502259ad0.jpg

基本操作

打開 Vim

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

插入

進(jìn)入文件之后,此時(shí)處于交互模式,可以通過(guò)輸入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è)選擇:

保存并退出:wq或:x;

不保存且退出:q!。

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

刪除字符

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

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

刪除(剪切)單詞,行

刪除一行:連按兩次d來(lái)刪除光標(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ù)制過(guò)來(lái)的,可以使用p來(lái)粘貼。同樣也可以使用數(shù)字+p來(lái)表示復(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)。

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

查找并替換

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

#語(yǔ)法:s/舊字符串/新字符串#實(shí)例:s/one/two

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

#語(yǔ)法:s/舊字符串/新字符串/g

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

#語(yǔ)法:n,ms/舊字符串/新字符串/g#實(shí)例:2,4s/one/two/g

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

#語(yǔ)法:%s/舊字符串/新字符串/g

合并文件

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

:rfilename#可以用Tab鍵來(lái)自動(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塊可視模式,它是可視模式最有用的功能了,配合d和I鍵可以實(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)樾懀?/p>

U鍵,表示選中變?yōu)榇髮懀?/p>

Vim 配置

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

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

.vimrc

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

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5096

    文章

    19192

    瀏覽量

    308082
  • VIM
    VIM
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    15367
  • 管理系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    2595

    瀏覽量

    36141

原文標(biāo)題:?jiǎn)纹瑱C(jī) ->RTOS ->Linux->放棄

文章出處:【微信號(hào):玩轉(zhuǎn)嵌入式,微信公眾號(hào):玩轉(zhuǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解

    Linux Shell腳本入門到實(shí)戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?672次閱讀

    嵌入式linux入門學(xué)習(xí)內(nèi)容指南

    嵌入式linux入門學(xué)習(xí)內(nèi)容指南
    發(fā)表于 08-20 15:25

    Linux操作系統(tǒng)-C語(yǔ)言編程入門-pdf

    Linux操作系統(tǒng)-C語(yǔ)言編程入門介紹在LINUX 下進(jìn)行C 語(yǔ)言編程所需要的基礎(chǔ)知識(shí).在這篇文章當(dāng)中,我們將會(huì)學(xué)到以下內(nèi)容:􀂄 源程序編譯􀂄 Ma
    發(fā)表于 12-08 09:55 ?193次下載
    <b class='flag-5'>Linux</b>操作系統(tǒng)-C語(yǔ)言編程<b class='flag-5'>入門</b>-pdf

    linux經(jīng)典入門

    一本經(jīng)典的linux入門linux入門者必看的書!
    發(fā)表于 10-28 17:23 ?0次下載

    linux操作系統(tǒng)入門

    關(guān)于Linux入門的一些資料,希望對(duì)想學(xué)習(xí)Linux的人有幫助。
    發(fā)表于 11-09 17:40 ?7次下載

    Linux那些事兒linux入門介紹

    電子發(fā)燒友網(wǎng)站提供《Linux那些事兒linux入門介紹.pdf》資料免費(fèi)下載
    發(fā)表于 05-02 08:00 ?4次下載

    Linux下Qt編程入門教程

    Linux下Qt編程入門教程
    發(fā)表于 09-11 08:35 ?11次下載
    <b class='flag-5'>Linux</b>下Qt編程<b class='flag-5'>入門</b>教程

    linux初學(xué)者入門

    linux初學(xué)者入門
    發(fā)表于 10-27 14:34 ?14次下載
    <b class='flag-5'>linux</b>初學(xué)者<b class='flag-5'>入門</b>

    linux入門與基本命令相關(guān)資料下載

    linux入門與基本命令
    發(fā)表于 03-28 16:52 ?11次下載

    linux教程入門教程之linux學(xué)習(xí)視頻

    本文檔的主要內(nèi)容linux教程入門教程的linux學(xué)習(xí)視頻快速上手Linux 玩轉(zhuǎn)典型應(yīng)用 Linu
    發(fā)表于 08-28 14:40 ?14次下載

    Linux入門教程之LINUX入門與安裝配置

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux入門教程之LINUX入門與安裝配置主要內(nèi)容包括了:1、
    發(fā)表于 11-07 16:41 ?4次下載

    Linux入門教程之Linux的基本操作詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux入門教程之Linux的基本操作詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1,登錄2,口令文件3,簡(jiǎn)單命令4,man
    發(fā)表于 12-07 17:21 ?14次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>入門</b>教程之<b class='flag-5'>Linux</b>的基本操作詳細(xì)資料說(shuō)明

    基于Linux的C語(yǔ)言編程入門教程

    基于Linux的C語(yǔ)言編程入門教程
    發(fā)表于 06-15 10:56 ?19次下載

    Linux編程入門

    Linux編程入門
    發(fā)表于 02-16 14:55 ?0次下載

    Linux系統(tǒng)移植技術(shù)入門

    對(duì)Linux系統(tǒng)進(jìn)行移植裁剪的入門技術(shù)
    發(fā)表于 12-27 11:37 ?0次下載