目錄
- 一、認識shell
- 二、shell指令的格式
-
- 2.1 指令提示符
- 2.2 指令格式
- 三、shell指令
-
- 3.1 使用者系統相關指令
-
- 3.1.1 使用者切換指令(su)
- 3.1.2 系統管理指令(ps、kill及pstree)
- 3.1.3 磁盤相關指令(fdisk)
- 3.1.4 磁盤挂載指令(mount)
- 3.2 檔案、目錄相關指令
-
- 3.2.1 cd
- 3.2.2 ls
- 3.2.3 mkdir和touch
- 3.2.4 cat、more、less、head和tail
- 3.2.5 cp、mv和rm
- 3.2.6 chown和chgrp
- 3.2.7 chmod
- 3.2.8 grep
- 3.2.9 find / whereis / which
- 3.2.10 ln
- 3.2.11 wc
- 3.3 壓縮打包相關指令
-
- 3.3.1 gzip
- 3.3.2 tar
- 3.4 檔案比較指令diff
- 3.5 腳本執行指令source/bash/sh/./
- 3.6 控制系統服務指令service
- 3.7 網絡拷貝指令scp
- 3.8 系統任務相關(&、jobs、fg、bg)
-
- 3.8.1 &
- 3.8.2 ctrl + z
- 3.8.3 jobs
- 3.8.4 fg
- 3.8.5 bg
- 四、參考資料
一、認識shell
英文單詞shell可直譯為“貝殼”,“貝殼”在動物中作為外在保護的一種工具。
Linux作業系統的體系結構:
- 核心是作業系統的核心,決定着系統的性能和穩定性。Linux核心由如下幾部分組成:記憶體管理、程序管理、裝置驅動程式、檔案系統和網絡管理等。
- shell是一個指令行解釋器,其實就是一個程式(bash、sh等)。将使用者指令解析為作業系統所能了解的指令,進而實作使用者與作業系統的互動。
-
shell是系統的使用者接口,使用者接口有兩種,分别為GUI接口(圖形使用者界面)和CLI接口(指令行界面)。
GUI接口:
windows選用的程式為:explore.exe程式。
linux(X-window)選用的程式有:Gnome、KDE(centos選用)、Xface。
(關閉這些程式使用者界面的看不到了。)
CLI接口:
windows選用的程式為:cmd程式。
linux選用的程式有:sh、csh、ksh、bash、zsh、tcsh。
- sh(Bourne Shell):由AT&T貝爾實驗室開發。
- csh(C Shell):由加利福尼亞大學伯克利分校開發。
- ksh(Korn Shell):解決了sh的使用者互動問題。
- bash(Bourne Again Shell):同樣由AT&T貝爾實驗室開發,是sh的增強版。它具有以下特點:能夠提供環境變量、配置使用者的shell環境、支援曆史記錄、内置算術功能、支援通配符表達式。
這些接口都對應一個應用程式,不管是windows還是linux,平常所用的圖形桌面實際上它屬于一個應用程式,而指令行也是一個應用程式,這兩個應用程式屬于一個類别,都叫使用者接口的應用程式。
一般一個使用者登入後會啟動一個使用者接口程式,如果沒有啟動是無法使用這台計算機。(多開一個終端就會多一個shell在運作,可用ps指令檢視:ps aux | grep bash)
二、shell指令的格式
2.1 指令提示符
[email protected]:direction$
username:使用者名,顯示目前登入使用者的賬戶名。
hostname:主機名。
direction:目錄名,顯示目前所處的路徑,當在根目錄下顯示為“/”,當在使用者主目錄下顯示為"~"。
2.2 指令格式
$ Command [-Options] Argument1 Argument2…
通常一條指令包含3個要素:指令名稱、選項、參數。指令名稱是必須的,選項和參數都坑能是可選項。
Command:指令名稱,Shell指令或程式,嚴格區分大小寫。指令分為内部指令和外部指令。
- 如何檢視是哪種指令:type指令,例如$ type cd,輸出為cd is a shell builtin,這表明屬于内部指令。
- 檢視内部指令的幫助文檔:help指令,例如$ help cd
- 檢視外部指令的幫助文檔:1、man指令,/xxx查找關鍵字,n上翻,N下翻,輸入q表示退出,例如$ man ls; 2、ls --help
指令在不斷更新,同樣可通過type指令進行檢視,例如$ type ls,輸出為ls is aliased to `ls --color=auto’,說明輸入ls等價于ls --color=auto,表示自動顯示(彩色),輸入ls -f,則為不同檔案類型同一顔色顯示。
Options:指令選項,用于改變指令所執行動作的類型。選項分為長選項和段選項。
- 長選型,由"–"來引導。
- 段選項,由"-"來引導。
Argument:指令參數,指出指令作用的對象和目标,有的指令允許帶多個參數。
注意:
- 一條指令的三要素之間用空格隔開;
- 若将多個指令在一行書寫,用分号(;) 将各指令隔開;
- 如果一行指令不能在一行寫完,在行位使用反斜杠(\) 标明該指令未結束。
三、shell指令
3.1 使用者系統相關指令
3.1.1 使用者切換指令(su)
(1)格式:su [選項] [使用者 ]
選項 | 參數含義 |
---|---|
-,-l,–login | 切換使用者時,同時切換成相應的環境變量和工作目錄 |
-m,-p | 執行su時不改變環境變量 |
-c,–command | 變更賬号為USER的使用者,并執行指令後再變回原來使用者身份,例如su -c ls |
(2)使用說明
- 将普通使用者變更為root使用者時,建議使用“-”選項,這樣可以将root的環境變量和工作目錄同時帶入,否則在以後的使用中可能會由于環境變量的原因而出錯。
- 在轉變為root權限後,提示符變為“#”。
su、sudo、su - root 的差別:請點選
3.1.2 系統管理指令(ps、kill及pstree)
指令 | 指令含義 | 格式 |
---|---|---|
ps | 顯示目前系統中由該使用者運作的程序清單 | ps [選項] |
top | 動态顯示系統中運作的程式 | ps |
kill | 輸出特定的信号給指定PID(程序号)的程序,當選項是預設時為輸出終止信号給該程序 | kill [選項] 程序号(PID) |
shutdow | 關閉或重新開機linux系統 | shutdow [選項] [時間] |
uptime | 顯示系統已經運作了多長時間 | uptime |
clear | 清除螢幕上的資訊 | clear |
ps指令常見參數清單:
選項 | 參數含義 |
---|---|
-ef | 檢視所有程序及其PID、系統時間、指令詳細目錄、執行者等 |
aux | 除可顯示-ef所有内容外,還可顯示CPU及記憶體占用率,程序狀态 |
-w | 加寬以顯示較多的資訊,通常最多寫3次,例如ps aux w w w |
kill指令常見參數清單:
選項 | 參數含義 |
---|---|
-s | 根據指定信号發送給程序,如kill -s SIGKILL 7357 |
-p | 列印出程序号,但不發出信号,man手冊中沒有-p選項 |
-l | 列出所有可用的信号名稱 |
-signal_name | 指定程序發送信号名稱 |
-signal_number | 指定程序發送信号數字 |
pstree指令檢視程序樹
Linux pstree指令
3.1.3 磁盤相關指令(fdisk)
指令 | 指令含義 | 格式 |
---|---|---|
free | 檢視目前系統記憶體的使用情況 | free [選項] |
df | 檢視檔案系統的磁盤空間占用情況,如df -h | df [選項] |
du | 統計目錄(或檔案)所占磁盤空間的大小 | du [選項] |
fdisk | 檢視硬碟分區情況對硬碟進行分區管理,fdisk也是一個非常好的硬碟分區工具 | fdisk [-l] |
fdisk使用說明:
- 使用fdisk必須是root權限,如果不是,會出現不報錯不列印資訊。
- IDE硬碟對用的裝置名稱分别為hda、hdb、hdc和hdd,SCSI硬碟對應的裝置名稱則為sda、sdb…此外,hda1代表hda的第一個硬碟分區,hda2代表hda第二個分區,以此類推。
- 通過檢視“/var/log/messages”檔案,可以找到Linux系統已辨認出來的裝置代号。(有個系統可能沒有)
3.1.4 磁盤挂載指令(mount)
(1)作用
- 挂載檔案系統的使用權限是超級使用者或/etc/fstab中允許的使用者。
- 挂載是指把分區和目錄對應的過程,而挂載點是指檔案數中的挂載目錄。通常,Linux下/mnt是專門用于挂載不同檔案系統的目錄,可以在該目錄下建立不同的子目錄來挂載不同的裝置檔案系統。
(2)格式
- mount [選項] [類型] 裝置檔案名 挂載點目錄
- 這裡的裝置檔案名是驅動程式中的裝置節點,一般是/dev/xxx
- umount 挂載點目錄 (解除安裝挂載點)
mount指令選項常見參數清單:
選項 | 參數含義 |
---|---|
-a | 依照/etc/fstab中的内容裝載所有相關的硬碟 |
-l | 列出目前已挂載的裝置、檔案系統名稱和挂載點 |
-t 類型 | 将後面的裝置以指定類型的檔案格式裝載到挂載點上。常見的類型有VFAT、ext3、ext2、ISO9660、NFS等 |
-f | 通常用于除錯。它會使mount不執行實際挂上的動作,而是模拟整個挂上的過程,通常和-v一起使用 |
3.2 檔案、目錄相關指令
3.2.1 cd
(1)作用:改變工作目錄。
(2)格式:cd [路徑],這裡的路徑可以是相對路徑也可以是絕對路徑。
(3)使用說明:
- 如果沒有指定路徑,則回到使用者的主目錄。
- 該指令可以使用通配符。
- 使用"cd ~",回到使用者的主目錄,同cd。
- 使用"cd -",回到前次工作目錄。
- "./"代表目前目錄,兩個點代表上級目錄。
3.2.2 ls
(1)作用:列出目錄的内容。
(2)格式:ls [選項] [檔案]
其中“檔案”選項為指定要檢視的相關内容,若未指定檔案,預設檢視目前目錄下的所有檔案。
ls指令常見參數清單:
選項 | 參數含義 |
---|---|
-l,–format=single-column | 一行輸出一個檔案(單列輸出),檔案大小以位元組為機關進行顯示 |
-h | 人性化閱讀,以KB、MB…為機關進行顯示 |
-a,-all | 列出目錄中所有檔案,包括以“.”開頭的檔案 |
-i | 列印檔案索引編号inode |
-d | 将目錄名和其他檔案一樣列出,而不是列出目錄的内容 |
-f | 不排序目錄内容,按它們在磁盤上存儲的順序列出 |
total 9184,這裡的9184表示大小為9184B
顯示格式說明如下:
檔案類型與權限 | 連結數(硬連結) | 檔案屬主 | 檔案屬組 | 檔案大小 | 修改時間 | 名字 |
---|
一個檔案有兩種資料:中繼資料和内容資料。
内容資料:檔案内容本身。
中繼資料:除了内容資料之外的,比如檔案大小、檔案通路時間等。
檔案有三種時間:
- 最後一次通路時間
- 最後一次修改時間:内容的改動叫修改
- 最後一次改變時間:檔案(内容和中繼資料)的改動叫改變
stat指令檢視檔案資訊:
3.2.3 mkdir和touch
mkdir:
(1)作用:建立一個目錄。
(2)格式:mkdir [選項] 路徑
mkdir指令常見參數清單:
選項 | 參數含義 |
---|---|
-m | 對建立目錄設定存取權限,也可以用chmod指令設定 |
-p | mkdir建立的目錄可以是一個路徑名稱。此時若此路徑中的某些目錄尚不存在,加上此選項後,系統将自動建立好那些尚不存在的目錄,即一次可以建立多個目錄 |
touch:
(1)作用:修改檔案或者目錄的時間屬性,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。
(2)格式:touch [選項] [檔案或目錄…]
(3)使用示例:
$ touch testfile #若檔案不存在,建立檔案;若檔案存在修改檔案時間屬性為目前系統時間。
touch詳情參考
3.2.4 cat、more、less、head和tail
cat:
(1)作用:連接配接并顯示指定的一個或多個檔案的有關資訊。
(2)格式:cat [選項] 檔案1 檔案2 …
選項 | 參數含義 |
---|---|
-n | 由第一行可是對所有輸出的行數編号 |
-b | 和“-n”相似,隻不過對于空白行不編号 |
more:
(1)作用:分頁顯示檔案内容
(2)格式:more 檔案
(3)使用說明
- 敲回車檢視下邊的内容,不支援回看。
- 中間停止:q
- 顯示内容百分比
less:
(1)作用:分頁顯示檔案内容。
(2)格式:less 檔案
(3)使用說明
- 可以通過上、下、左、右檢視檔案具體内容。
- 中間停止:q
- 沒有百分比顯示
head:
(1)作用:檢視檔案前n行内容。
(2)格式:head -n 檔案
head:
(1)作用:檢視檔案末尾n行内容。
(2)格式:tail -n 檔案
3.2.5 cp、mv和rm
(1)作用
- ① cp:将給出的檔案或目錄複制到另一個檔案或目錄中。
- ② mv:為檔案或目錄改名或将檔案由一個目錄移入另一個目錄中。
- ③ rm:删除一個目錄中的一個或多個檔案或目錄。
(2)格式
- ① cp:cp [選項] 源檔案或目錄 目标檔案或目錄
- ② mv:mv [選項] 源檔案或目錄 目标檔案或目錄
- ③ rm:rm [選項] 檔案或目錄
(3)常見參數
cp指令常見參數清單:
選項 | 參數含義 |
---|---|
-a | 保留連結、檔案屬性,并複制其子目錄,其作用等于dpr選項的組合 |
-d | 複制時保留連結 |
-f | 删除已經存在的目标檔案而不提示 |
-i | 在覆寫目标檔案之前将給出提示,要求使用者确認。回答y時目标檔案将被覆寫,而且是互動式複制 |
-p | 此時cp除複制源檔案的内容外,還将把其修改時間和通路權限也複制到新檔案中 |
-r | 若給出的源檔案是一目錄檔案,此時cp将遞歸複制該目錄下所有的子目錄和檔案。此時目标檔案必須為一個目錄名。 |
mv指令常見參數清單:
選項 | 參數含義 |
---|---|
-i | 若mv操作将導緻對已存在的目标檔案的覆寫,此時系統詢問是否重寫,并要求使用者回答y或n,這樣可以避免誤覆寫檔案。 |
-f | 禁止互動操作。在mv操作要覆寫某已有的目标檔案時不給任何訓示,在指定此選項後,i選項将不再起作用。 |
rm指令常見參數清單:
選項 | 參數含義 |
---|---|
-i | 進行互動式删除 |
-f | 忽略不存在的檔案,但從不給出提示。 |
-r | 訓示rm将參數中列出的全部目錄和子目錄均遞歸地删除 |
(4)使用說明
- mv指令根據第二個參數的類型(是目标檔案還是目标目錄)來判斷是重命名還是移動檔案。
- 在跨檔案系統移動檔案時,mv先複制,再将原有檔案删除,而鍊至該檔案的連結也将丢失。
- 使用rm指令删除檔案,是不能恢複的。
3.2.6 chown和chgrp
(1)作用
- ① chown:修改檔案所有者群組别。
- ② chgrp:改變檔案的組所有權。
(2)格式
- ① chown:chown [選項]… 檔案所有者[所有者組名] 檔案 ,其中的檔案所有者為修改後的檔案所有者。
- ② chgrp:chgrp [選項]… 檔案所有組 檔案 ,其中的檔案所有組為改變後的檔案組擁有者。
(3)常見參數
chown和chgrp的常見參數意義相同。
chown和chgrp指令常見參數清單:
選項 | 參數含義 |
---|---|
-c,-changes | 詳盡地描述每個file實際改變了哪些所有權 |
-f,–silent,–quiet | 顯示全部錯誤資訊 |
(4)使用說明
使用chown和chgrp指令必須擁有root權限。
(5) 示例
sudo chown linux 1.c #将1.c檔案的檔案屬主切換為linux
sudo chgrp linux 1.c #将1.c檔案的檔案屬組切換為linux
sudo chown linux:linux 1.c #将1.c檔案的檔案屬主和檔案屬組切換為linux
3.2.7 chmod
(1)作用:改變檔案的通路權限。
(2)格式:chmod可使用符号标記和八進制數指定兩種方式進行更改。
- ① 符号标記:chmod [選項] … 符号權限 [,符号權限]… 檔案,其中的符号權限可以指定多個,也就是說,可以指定多個使用者級别的權限,但它們中間要用逗号分開表示,若沒有顯示指出,則表示不作更改。
- ② 八進制數:chmod [選項] … 八進制權限 檔案…,其中的八進制權限是指要更改後的檔案權限。
(3)選項參數
chmod指令常見參數清單:
選項 | 參數含義 |
---|---|
-c | 若該檔案權限确實已經更改,才顯示其更改動作 |
-f | 若該檔案權限無法被更改也不要顯示錯誤資訊 |
-v | 顯示權限變更的詳細資料 |
(4)使用說明
檔案的通路權限可表示成:- rwx rwx rwx
這裡有3中不同的通路權限:讀(r)、寫(w)和運作(x)。
3個不同的使用者級别:檔案擁有者(u)、所屬的使用者組(g)和系統裡的其他使用者(o)。在此增加一個使用者級别a(all)來表示所有這3個不同的使用者級别。
- ① 對于第一種符号連接配接方式的chmod指令中,用加好“+”代表增權重限,用減号“-”删除權限,用等号“=”設定權限。
- ② 對于第二種八進制指定的方式。 使用chmod必須具有root權限。
3.2.8 grep
(1)作用:在指定檔案中搜尋特定的内容,并将含有這些内容的行标準輸出。
ls -l | grep test,這種方式可以查找目前目錄下test的檔案,這并不能說明grep能比對檔案名,grep隻是比對檔案裡的内容。之是以可以查找檔案名可以,是因為管道的關系,ls指令的輸出結果,相當于檔案的形式,作為grep指令的輸入。是以grep搜尋檔案的本質還是沒有變。
(2)格式:grep [選項] 格式 [檔案及路徑],其中的格式是指要搜尋的内容格式,若預設“檔案及路徑”,則預設表示在目前目錄下搜尋。
(3)常見參數
grep指令常見參數清單:
選項 | 參數含義 |
---|---|
-c | 隻輸出比對行的計數 |
-I(i的大寫) | 不區分大小寫(隻适用于單字元) |
-h | 查詢多檔案時不顯示檔案名 |
-l(L的小寫) | 查詢多檔案時隻輸出包含比對字元的檔案名 |
-n | 顯示比對行及行号 |
-s | 不顯示不存在或無比對文本的錯誤資訊 |
-v | 顯示不包含比對文本的所有行 |
“. -r”用于指定檔案,表示搜尋目前目錄下的所有檔案。
“grep -d skip”忽略子目錄。
當預料到有許多輸出,可以通過管道将其轉到less(分頁器)上閱讀,如grep “h” ./ -r | less
grep特殊用法:
grep pattern1 | pattern1 files:顯示比對pattern1或pattern2的行。
grep pattern1 files | grep pattern2:顯示既比對 pattern1,又比對pattern2的行。
3.2.9 find / whereis / which
find:
(1)作用:在指定目錄下搜尋檔案,它的使用權限是所有使用者。
(2)格式:find [路徑] [選項] [描述] ,
其中“路徑”為檔案搜尋路徑,系統開始沿着此目錄樹向下查找檔案。它是一個路徑清單,互相用空格分離。若預設路徑,那麼預設為目前目錄。
“描述”部分是比對表達式,即find指令接受的表達式。
(3)常見參數
find選項常見參數清單:
選項 | 參數含義 |
---|---|
-depth | 使用深度級别的查找過程方式,在某層指定目錄中優先查找檔案内容 |
-mount | 不在其他檔案系統的目錄和檔案中查找 |
find描述常見參數清單:
選項 | 參數含義 |
---|---|
-name | 支援通配符“*”和“?” |
-user | 使用者名:搜尋檔案屬主為使用者名(ID或名稱)的檔案 |
輸出搜尋結果,并列印 |
該例中使用-name選項以支援通配符。
find指令中雙引号的重要性!!!
(4)使用說明
在find指令中可以使用混合查找的方法,例如,想在“/etc”目錄中查找大于500000B,并且在24h内修改了的某個方法,則可以使用“-and”(與)把兩個查找參數連結起來組合成一個混合的查找方式,如find /etc -size +500000c -and -mtime +1
whereis:
Linux whereis指令 🚀
which:
(1)作用:which 指令用于查找檔案。which 指令會在環境變量
$PATH
設定的目錄裡查找符合條件的檔案。
(2)格式:which [檔案…],例如,which bash
參考:Linux which指令🚀
3.2.10 ln
ln指令用于在檔案之間建立連結,連結檔案類似于Windows的快捷方式,隻保留目标檔案的位址,而不占用存儲空間。使用連結檔案與使用目标檔案的效果是一樣的。可為連結檔案指定不同的通路權限,以控制對檔案的共享和安全性問題。
Linux中有兩種類型的連結:硬連結和軟連結。
硬連結是利用Linux中為每個檔案配置設定的實體編号——inode,建立連結。是以,硬連結不能跨越檔案系統。(i節點是檔案和目錄的唯一辨別,每個檔案和目錄必有i節點)
硬連結等于cp -p 加 同步更新。
軟連結(符号連結)是利用檔案的路徑名建立連結。通常建立軟連結使用絕對路徑而不是相對路徑,以最大限度增加可移植性。
(軟連結和硬連結到底有啥作用和差別)
(1)格式
ln [選項] 源檔案或目錄 要生成的連結檔案或目錄名
(2)常見參數
“-s”,建立符号連結(這也是通常唯一使用的參數)
(3)使用示例
- 從紅色框中可知,軟連結檔案為連結檔案,硬連結檔案為普通檔案
- 從黃色框中可知,軟連結不是複制源檔案,它隻會在使用者標明的位置(目前目錄)上生成一個檔案鏡像,不會重複占用磁盤空間。硬連結會在使用者標明的位置(目前目錄)上生成一個檔案大小相同的檔案。對應上文說的硬連結是cp -p加同步更新。
- 從藍色框中可知,軟連結生成檔案的操作要早,但是硬連結生成檔案時間要早且與源檔案時間相同,相當于執行了cp -p的指令。
- 無論是軟連結還是硬連結,檔案都保持同步變化。
- 硬連結的inode與源檔案的inode相同,即一個i節點可以對應多個檔案名。
注意:
- 如果修改硬連結的源檔案名,連結依然有效;如果修改軟連結的源檔案,則連結将斷開。
- 對一個已存在的連結檔案執行移動或删除操作,有可能導緻連結的斷開。
- 假如删除目标檔案後,重新建立一個同名檔案,軟連結将恢複,硬連結不再有效,因為檔案的inode已經改變。
3.2.11 wc
(1)作用:利用計算檔案的Byte數、字數、或是列數。
(2)格式:wc [-clw] [–help] [–version] [檔案…]
“檔案…”表示多個檔案。
(3)主要參數
參數 | 參數含義 |
---|---|
-c或–bytes或–chars | 隻顯示Bytes數 |
-l或–lines | 隻顯示行數 |
-w或–words | 隻顯示字數 |
- -help | 線上幫助 |
- -version | 顯示版本資訊 |
在預設的情況下,wc将計算指定檔案的行數、字數,以及位元組數。
(3)使用示例
其中,3 個數字分别表示test.c檔案的行數、單詞數,以及該檔案的位元組數。
統計多個檔案時,最後一行還有這些檔案總的行數、單詞數以及位元組數。
3.3 壓縮打包相關指令
指令 | 指令含義 | 格式 |
---|---|---|
bzip2 | 檔案的壓縮和解壓程式,壓縮後檔案字尾為.bz2 | bzip2 [選項] [-壓縮等級] 壓縮(或解壓)檔案名 |
bunzip2 | .bz2檔案的解壓縮程式 | bunzip2 [選項] .bz2壓縮檔案 |
bzip2recover | 用來修複損壞的.bz2檔案 | bzip2recover .bz2壓縮檔案 |
gzip | 檔案的壓縮和解壓程式,壓縮後檔案字尾為.gz | gzip [選項] 壓縮(或解壓)的檔案名 |
gunzip | 解壓被gzip壓縮過的檔案 | gunzip [選項] .gz檔案名 |
unzip | 解壓被WinZip壓縮過的.zip檔案 | unzip [選項] .zip壓縮檔案 |
compress | 早期的壓縮和解壓程式(壓縮後檔案名為.Z) | compress [選項] 檔案 |
tar | 對檔案目錄進行打包和解壓 | tar [選項] [打包後檔案名] 檔案目錄清單 |
3.3.1 gzip
(1)作用:對檔案進行壓縮和解壓縮,而且gzip根據檔案類型可自動識别壓縮或解壓。
(2)格式
gzip [選項] 壓縮(解壓縮)的檔案名
(3)常見參數
選項 | 參數含義 |
---|---|
-c | 将輸出資訊寫到标準輸出上,并保留原有檔案 |
-d | 将壓縮檔案解壓 |
-l(小寫的L) | 對每個壓縮檔案,顯示下列字段:壓縮檔案大小、未壓縮檔案的大小、壓縮比、未壓縮檔案的名字 |
-r | 查找指定目錄并壓縮或解壓縮其中的所有檔案 |
-t | 測試,檢查壓縮檔案是否完整 |
-v | 對每一個壓縮或解壓的檔案,顯示檔案名和壓縮比 |
(4)使用執行個體
(5)使用說明
- 使用gzip指令 隻能壓縮單個檔案,而不能壓縮目錄。其選項“-d”可以多個檔案進行解壓。
- 選項“-r”對目錄進行壓縮,隻是将該目錄下的所有檔案逐個進行,而不是将這個目錄進行壓縮成一個檔案。
- gzip壓縮存在連結檔案時,會報錯,軟連結和硬連結的報錯不同。
3.3.2 tar
(1)作用:對檔案目錄進行打包或解包
打包是指将一些檔案或目錄變成一個總的檔案,而壓縮則是将一個大的檔案通過一些壓縮算法變成一個小檔案。
Linux中的很多壓縮程式(如gzip)隻能針對一個檔案進行壓縮,這樣當想要壓縮較多檔案時,就要借助它的工具将這些堆檔案先打包成一個包,然後再用原來的壓縮程式進行壓縮。
(2)格式
tar [選項] [打包後檔案名] 檔案目錄清單
tar可自動根據檔案名識别或解包動作,其中,“打包後檔案名”為使用者自定義的檔案名稱;“檔案目錄清單”可以是要進行打包備份的檔案目錄清單,也可以是進行解包的檔案目錄清單。
注意:“選項”、“打包後檔案名”和“檔案目錄清單”的順序不能亂。
(3)主要參數
選項 | 參數含義 |
---|---|
-c | 建立新的打封包件 |
-r | 向打封包件末尾追加檔案 |
-x | 從打封包件中解出檔案 |
-o | 将檔案解開到标準輸出 |
-v | 處理過程中輸出相關資訊 |
-f | 對普通檔案操作 |
-c | 調用gzip來壓縮打封包件,與“-x”聯用時調用gzip完成解壓縮 |
-j | 調用bzip2來壓縮打封包件,與“-x”聯用時調用bzip2完成解壓縮 |
-Z | 調用compress來壓縮打封包件,與“-x”聯用時調用compress完成解壓縮 |
(4)使用示例
打包:
tar壓縮:tar -zcvf
舉例,将目前目錄下的dir檔案夾壓縮成dir.tar.gz,放在目前目錄下: tar -zcvf ./dir.tar.gz ./dir
tar解壓: tar -zxvf
舉例,将目前目錄下的dir.tar.gz檔案解壓縮: tar -zxvf ./dir.tar.gz
3.4 檔案比較指令diff
(1)作用:比較兩個不同的檔案或不同目錄下的兩個同名檔案功能,并生成更新檔檔案。
(2)格式
diff [選項] 檔案1 檔案2
diff比較檔案1和檔案2的不同之處,并按照選項所指定的格式加以輸出。
diff的格式分為指令格式和上下文格式。
指令格式分為标準指令格式、簡單指令格式及混合指令格式。
上下文格式分為舊版上下文格式和新版上下文格式。
當選項預設時,diff預設使用混合指令格式。
(3)主要參數
選項 | 參數含義 |
---|---|
-r | 對目錄進行遞歸處理 |
-r | 隻報告檔案是否有不同,不輸出結果 |
-e,-ed | 指令格式 |
-f | RCS(修訂控制系統)指令簡單格式 |
-c,–context | 舊版上下文格式 |
-u,–unified | 新版上下文格式 |
-Z | 調用compress來壓縮歸檔檔案,與“-x”聯用時調用compress完成解壓縮 |
(4)使用示例
以下有兩個檔案test.c和test1.c
舊版上下文格式:
用舊版上下文格式進行輸出,在顯示每個有差别行的同時還顯示該行的上下3行。差別的地方用“!”加以标出。
新版上下文格式:
新版上下文格式輸出時,僅把兩個檔案的不同之處分别列出,而相同之處沒有重複列出。
指令格式:
指令格式輸出時僅輸出了不同的行,其中指令符“7c”中的數字表示行數。
字母的含義為:a—添加,b—删除,c—更改。
使用選項“-f”和選項“-e”顯示的内容基本相同,就是數字和字母順序的交換,以下是輸出結果。
diff選項預設情況下,輸出結果如下:
3.5 腳本執行指令source/bash/sh/./
source指令也稱為“點指令”,也就是一個點符号(.)。
source指令通常用于重新執行剛修改的初始化檔案,使之立即生效,而不必登出并重新登入。這裡的初始化檔案一般為腳本檔案。
用法:source filename或 . filename
source、bash\sh、./ (目前目錄的意思,不加也可以,怕環境變量沒有腳本所在路徑,找不到腳本檔案)均能執行是腳本指令,且用法都是相同的。配置環境變量後,為什麼使環境變量立即生效用source指令?
權限 | 執行環境 | |
---|---|---|
source | 不需要腳本具有執行權限 | 目前shell(稱為父shell)執行 |
bash/sh | 不需要腳本具有執行權限 | 子shell環境執行 |
./ | 需要腳本具有執行權限 | 子shell環境執行 |
這些在子shell環境中執行完後,子shell環境随即關閉,然後回到父shell中,也就不能對目前的環境變量進行配置,這也是為什麼用source指令的原因。
Linux中執行shell腳本的4種方法總結
3.6 控制系統服務指令service
linux service指令解析(重要)
service的絕對路徑為/sbin/service ,打開這個檔案cat /sbin/service,會發現其實它是一個很普通的shell腳本。
3.7 網絡拷貝指令scp
Linux scp指令
連結中的remote_ip遠端ip即可以用IP位址(點分形式)表示,也可以用域名來表示。
3.8 系統任務相關(&、jobs、fg、bg)
3.8.1 &
(1)作用:這個用在一個指令的最後,可以把這個指令放到背景執行。
(2)示例:
./a.out &
3.8.2 ctrl + z
(1)作用:可以将一個正在前台執行的指令放到背景,并且暫停。
3.8.3 jobs
(1)作用:檢視目前有多少在背景運作的指令(注意:隻能在一個終端下有效)。
(2)示例:
jobs
3.8.4 fg
(1)作用:将背景中的指令調至前台繼續運作。
(2)示例:
fg 1
,将1号背景程式調用至前台。
3.8.5 bg
(1)作用:将一個在背景暫停的指令,變成在背景繼續執行。
(2)示例:bg 1,将1号背景程式在背景繼續運作。
參考:Linux 中 &、jobs、fg、bg 等指令 🚀
四、參考資料
[1]: Linux作業系統學習筆記
[2]: Linux中執行shell腳本的4種方法總結