一、Linux的命令行
1.Linux介紹:剛出世的時候,沒有什么節目,所有的操作都是靠命令行來執行,后來Linux發展迅速,也出現了圖形界面,但是由于命令行的執行速度比圖形界面塊,所以也得到了廣泛的應用,可以說不會命令行就不會Linux。
2.Linux的命令格式
command [-options] [param1] [,param2]...
command:Linux命令的名稱,一般就是相應功能的單詞或單詞的縮寫
[-options]:選項,它和命令之間有一個空格,可以用于對命令進行控制,[]表示可以省略
[param1] [,param2]...:傳遞給命令的參數,可以有零個或多個
3.查看幫助文件:command --help
例如:
4.man(manual,手冊,有問題找男人)命令
Linux的man命令提供了一個手冊,包含了絕大部分的命令、函數的使用說明,分了幾個章節(section):
1. Standard commands:標準命令
2. System calls:系統調用
3. Library function:庫函數
4. Special devices:設備文件說明
5. File formats:文件格式
6. Games and toys:游戲和娛樂
7. Miscellaneous:雜項
8. Administrative Commands:管理員命令,例如ifconfig
man的使用:man [section] 命令名
運行man命令后可以執行的操作:
b:回滾一屏
f:前滾一屏
q:退出man命令
h:列出所有功能鍵
/字符串:查找字符串
同時可以使用上下鍵來移動內容
?
5.命令的自動補全
在敲命令的時候,可以只敲前面幾個字母,然后按”Tab”鍵進行命令的自動補全
例如:敲一個m,然后按”Tab”鍵:
6.歷史命令
當系統執行了一些命令之后,可以按上下鍵翻看以前執行過的命令。
在家目錄中(~),存在一個隱藏文件(.bash_history),里面記錄了之前執行過的bash命令:
7.文件管理相關命令
(1)查看文件信息:ls,list的簡稱,類似于Windows的dir命令
語法:
ls [選項] [文件名]
說明:[]內容可以省略,如果省略文件名,表示查看當前目錄下的所有文件
選項:
-a:顯示當前目錄下的所有文件和子目錄,包含隱藏文件(Linux中的隱藏文件都是以”.”開頭的,例如”.bash_history”)
-l:以列表的形式顯示文件的詳細信息
-h:搭配”-l”使用,以更人性化的方式顯示文件大小
示例:
其中”ls -l”可以簡寫成”ll”:
“ls -l”顯示文件大小的時候,是以字節為單位,不方便查看,可以結合”-h”選項以更人性化的方式顯示文件大小:
(2)輸出重定向:>
默認情況下命令的執行結果是輸出到控制臺的,輸出重定向允許將命令的執行結果輸出到一個文件中。注意:輸出重定向到相同文件時,后面的內容會覆蓋之前的內容,如果不想覆蓋,只是想追加,可以使用追加重定向:>>
示例:
追加:
(3)分屏顯示:more
如果信息太多,一屏顯示不完,可以通過more命令分屏顯示
說明:
空格:顯示下一頁
q:退出
還可以使用上下鍵來移動內容,就像使用vi編輯器一樣。
(4)less:分屏顯示文件內容
less用于分屏查看文件內容,功能和more命令類似,但是比more命令更強大,支持各種顯示終端。less命令在顯示文件內容時,并不是一次將整個文件加載后顯示,而是根據顯示需要加載內容,對于顯示大型文件具有較高的效率。
1)語法:
less 要查看的文件
2)操作說明:
?
(5)head:顯示文件頭部內容
head用于顯示文件開頭部分的內容,默認情況下顯示文件的前10行內容。
1)語法:
head 文件(查看文件頭10行內容)
head -n 5 文件(查看文件頭5行內容,數字5可以任意)
2)選項
(6)tail:輸出文件尾部的內容
tail用于輸出文件尾部的內容,默認情況下顯示文件后10行內容。
1)語法:
tail 文件(查看文件尾10行內容)
tail -n 5 文件(查看文件尾5行內容,5可以是任意數字)
tail -f 文件(實時追蹤該文檔的所有更新)
2)選項
(7)管道:|
類似于管子,一頭塞進去,另一頭取出來。
一個命令的輸出可以通過管道作為另一個命令的輸入
(8)清屏:clear
(9)切換工作目錄:cd,change directory的簡稱
cd命令后面既可以跟絕對路徑也可以跟相對路徑,例如:
cd ~:進入家目錄
cd .:進入當前目錄
cd ..:進入上一級目錄
cd -:進入上一個可以進入的目錄
注意:Linux中的文件和目錄嚴格區分大小寫的,即使兩個文件名相同,但是大小不一致,也是兩個不同的文件(Windows是不區分大小寫)
示例:
?
(10)顯示當前路徑:pwd
(11)創建目錄:mkdir,make directory的簡稱
mkdir可以創建一個新的目錄,通過-p選項可以遞歸的創建目錄及其子目錄,注意:目錄的創建者必須具有對當前目錄的寫權限(w)
示例:
(12)刪除目錄:rmdir,remove directory的簡稱
注意:使用rmdir刪除目錄的時候,要求目錄必須是空的目錄,否則不能刪除
(13)刪除文件:rm,remove的簡稱
使用rm刪除文件或目錄的時候,需要注意,rm刪除的文件不能夠恢復,可以使用”-i”選項逐個確認之后再刪除。
選項:
-i:interface的簡稱,以交互式的方式刪除(詢問),默認的情況。
-f:force的簡稱,強制刪除,不提示。
-r:遞歸刪除目錄及其子目錄。
示例:
?
練習:在家目錄中創建一個demo目錄,然后將其刪除,然后創建test1/test2/test3目錄,在test3目錄中創建1.txt文件,然后刪除整個test1目錄。
?
(14)鏈接文件
Linux中的鏈接文件就類似于Windows中的快捷方式
分為軟鏈接和硬鏈接:
軟鏈接文件:不占用磁盤空間,源文件刪除則鏈接文件就無用了
硬鏈接文件:占用磁盤空間,只能鏈接普通文件,不能鏈接目錄
語法:ln,link的簡稱
軟鏈接:ln -s 源文件 鏈接文件
硬鏈接:ln 源文件 鏈接文件
示例:
(15)查看或合并文件內容:cat
?
還可以使用cat來重定向:
?
合并:
?
合并之后輸出到一個文件:
?
(16)正則表達式
1)什么是正則表達式:正則表達式使用某種模式(pattern)去匹配(match)一類受支持的公式
2)通常使用正則表達式進行查找替換等操作。
3)適當的使用正則表達式可以提高工作效率。
4)支持正則表達式的文本處理工具有:
a.grep:按模式匹配文本
b.sed:一個流編輯器
c.vi:一個屏幕編輯器
5)正則表達式的構成
a.正則表達式由一些普通字符和元字符(Meta Characters)組成
a)普通字符:包含大小寫的字母和數字(非元字符)
b)元字符:具有特殊含義的字符
常用的元字符的表格:
非基本正則:
(17)文本搜索:grep
grep命令是Linux系統中一種強大的文本搜索工具,grep允許對文本進行模式查找,如果找到了匹配模式(正則表達式),grep打印包含模式的所有行。
語法:
grep [選項] ‘搜索的字符串’ 文件名
說明:其中’搜索的字符串’可以包含正則表達式
選項:
-v:不包含匹配行,即取反
-n:顯示匹配行的行號
-i:忽略大小寫
-r:遞歸搜索,對指定目錄及其子目錄中的文件進行遍歷搜索
示例1:
注意:grep命令只支持基本的正則表達式。
示例2:查找當前目錄及其子目錄中所有文件中包含IP地址的行,其中”-E”選項表示使用擴展的正則
(18)查找文件:find
該命令功能強大,通常用于在特定的目錄下搜索文件,語法:
find 搜索路徑 [選項] 搜索內容
1)按照文件名搜索
常用選項:
-name:按照文件名搜索
-iname:按照文件名搜索,不區分文件名大小寫
-inum:按照 inode 號搜索
2)按照文件大小搜索
常用選項:
-size [+|-]大小:按照指定大小搜索文件
“+”的意思是搜索比指定大小還要大的文件
“-”的意思是搜索比指定大小還要小的文件
find 命令的單位:
'b':默認以塊為單位,一塊=512字節
'c' :字節
'w' :雙字節(中文)
'k':KB單位
'M':MB單位
'G':GB單位
?
3)按照修改時間搜索
常用選項:
-atime [+|-]時間:按照文件訪問時間搜索
-mtime [+|-]時間:按照文件數據修改時間搜索
-ctime [+|-]時間:按照文件狀態修改時間搜索
?
4)按照權限搜索
常用選項:
-perm 權限模式:查找文件權限剛好等于“權限模式”的文件
-perm -權限模式:查找文件權限全部包含“權限模式”的文件
-perm +權限模式:查找文件權限包含“權限模式”的任意一個權限的文件
?
5)按照所有者和所屬組搜索
常用選項:
-uid 用戶ID:按照用戶ID 查找所有者是指定 ID 的文件
-gid 組ID:按照用戶組 ID 查找所屬組是指定 ID 的文件
-user 用戶名:按照用戶名查找所有者是指定用戶的文件
-group 組名:按照組名查找所屬組是指定用戶組的文件
-nouser:查找沒有所有者的文件
?
6)按照文件類型搜索
常用選項:
-type d:查找目錄
-type f:查找普通文件
-type l:查找軟鏈接文件
?
7)邏輯運算符
常用選項:
-a:and 邏輯與
-o:or 邏輯或
-not:not 邏輯非
?
8)其他選項
① -exec 選項
find 搜索路徑 [選項] 搜索內容 -exec 命令2 {} \;
這個選項的作用其實是把 find 命令的結果交給由“-exec”調用的“命令2“ 來處理。“{}”就代表 find 命令的查找結果。
② -ok 選項
“-ok”選項和“-exec”選項的作用基本一致,區別在于:“-exec”的命令2 會直接處理,而不詢問;“-ok”的命令2 在處理前會先詢問用戶是否這樣處理,在得到確認命令后,才會執行。
(19)拷貝文件:cp,copy的簡稱
將指定的文件或目錄復制到另一個文件或目錄中
語法:
cp [選項] 源文件 目標文件
選項:
-a:保持源文件原有的屬性
-f:刪除已經存在的目標文件不提示(覆蓋)
-i:交互式復制,有提示
-r:遞歸復制文件夾及其子文件夾
-v:顯示拷貝的進度
示例:
(20)移動文件:mv,move的簡稱
mv命令可用于移動文件或目錄,還可以重命名
語法:
mv [選項] 源文件 目的地
選項:
-f:禁用交互式提示(不提示)
-i:使用交互式提示(有提示)
-v:顯示進度
示例:
?
(21)創建新文件:touch
語法:
touch 文件1 [文件2]...
?
(22)歸檔管理:tar
Linux系統數據經常需要備份,tar命令是最常用的備份工具,可以把一系列的文檔歸檔到一個大的文件中(打包),也可以解開一個歸檔文件以恢復數據(解包)。
語法:
打包:
tar [選項] 打包后的文件名 源文件
解包:
tar [選項] 打包后的文件名 解包的目錄
選項:
-c:create的簡稱,生成歸檔文件,打包
-v:顯示歸檔的進度
-f:file的簡稱,指定歸檔文件的名稱(是.tar文件),注意,這個選項只能作為最后一個選項,用于表示后面的文件的類型是.tar歸檔文件類型
-t:列出歸檔文件包含的文件
-x:relax的簡稱,解開歸檔文件,解包
示例:
?
(23)文件壓縮和解壓縮:gzip
1)tar和gzip結合可以打包并壓縮以及解壓縮文件
2)tar只負責打包,不負責壓縮,gzip負責壓縮打包后的文件,打包并壓縮后的文件名如:xxx.tar.gz
語法:
gzip [選項] 被壓縮的文件 生成的壓縮文件
選項:
-d:解壓
-r:遞歸壓縮所有子目錄
示例:
?
一般情況下,我們會將tar和gzip命令搭配使用來打包壓縮和解壓縮,語法如下:
壓縮:tar -cvzf 壓縮文件名.tar.gz 文件1 [文件2]...
注意:這里的f選項只能是最后一個選項,選項z表示壓縮,即使用gzip壓縮
解壓:tar -zxvf 壓縮文件名.tar.gz [-C 解壓的目錄]
其中-C表示解壓到哪一個目錄,如果省略就解壓到當前目錄
(24)文件壓縮和解壓縮:zip和unzip,對應于Windows中的.zip和.rar類型的壓縮文件,注意,CentOS7默認沒有安裝zip和unzip,需要使用yum安裝:
語法:
壓縮:
zip [-r] 目標文件.zip 源文件
選項-r表示遞歸壓縮目錄及其子目錄中的內容
示例:
解壓:
unzip -d 解壓后的目錄 壓縮文件
選項-d用于指定解壓的目錄
?
?
(25)查看命令的位置:which
?
(26)處理,編輯文本文件,流處理器:sed
sed命令可以依照腳本的指令來處理,編輯文本,可以對文本文件進行增刪改查的操作,支持按行,按字段,按正則表達式的方式來匹配文檔內容,使用方便,適合腳本編程。
語法:
sed [選項] ‘命令和字符串’ 文件
選項:
-c:默認選項,對文本進行編輯
-f:指定sed命令后保存的文件名
-n:取消默認輸出,只打印處理過的行
-i:直接修改要處理的文件
命令:
-a:append,向匹配行追加
-d:delete,對匹配行刪除
-c:更改匹配的內容
-s:將匹配行的內容替換
-i:insert,在匹配行前插入內容
-p:print,打印匹配行的內容,一般和-n選項搭配使用
示例:
?
?
?
示例2:
刪除最后一行:sed -i ‘$d’ demo.txt
刪除第一行:send -i ‘1d’ demo.txt
刪除1~2行之外的行:
?
示例3:替換文本:
?
示例4:全局替換
(27)xargs
xargs是Linux中一個非常強大的命令,用于從標準輸入構建并執行命令行。它通常和其他命令(如find、grep等)結合使用,以處理大量數據或文件。xargs的核心功能是將輸入數據轉換為命令行參數。
1)語法:
xargs [選項] [命令]
輸入:xargs從標準輸入(stdin)讀取數據
輸出:將輸入數據作為參數傳遞給指定的命令并執行
2)常用選項
示例1:基本用法
將輸入作為參數傳遞給echo(回顯)命令:
?
示例2:結合find使用
查找當前目錄下的所有.txt文件并刪除
?
示例3:限制每次執行的參數個數(-n)
每次只傳遞2個參數給echo
?
示例4:使用占位符(-I)
將輸入項替換為占位符{}
示例5:交互式模式(-p)
在執行命令前提示用戶確認
示例6:打印執行的命令(-t)
在執行命令前打印命令:
示例7:忽略空輸入(-r)
如果輸入為空,則不執行命令
?
示例8:指定輸入分隔符(-d)
使用逗號作為分隔符:
示例9:從文件讀取輸入(-a)
從文件note.txt中讀取輸入:
示例10:批量重命名文件
將當前目錄下的.txt文件重命名為.bk:
示例11:并行壓縮文件
使用xargs和gzip并行壓縮文件(提高執行效率):
示例12:并行壓縮并顯示執行的命令