天天看點

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

目錄

  • 一、認識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作業系統的體系結構:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料
  • 核心是作業系統的核心,決定着系統的性能和穩定性。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。

  1. sh(Bourne Shell):由AT&T貝爾實驗室開發。
  2. csh(C Shell):由加利福尼亞大學伯克利分校開發。
  3. ksh(Korn Shell):解決了sh的使用者互動問題。
  4. 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:指令參數,指出指令作用的對象和目标,有的指令允許帶多個參數。

注意:

  1. 一條指令的三要素之間用空格隔開;
  2. 若将多個指令在一行書寫,用分号(;) 将各指令隔開;
  3. 如果一行指令不能在一行寫完,在行位使用反斜杠(\) 标明該指令未結束。

三、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 不排序目錄内容,按它們在磁盤上存儲的順序列出
shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

total 9184,這裡的9184表示大小為9184B

顯示格式說明如下:

檔案類型與權限 連結數(硬連結) 檔案屬主 檔案屬組 檔案大小 修改時間 名字

一個檔案有兩種資料:中繼資料和内容資料。

内容資料:檔案内容本身。

中繼資料:除了内容資料之外的,比如檔案大小、檔案通路時間等。

檔案有三種時間:

  • 最後一次通路時間
  • 最後一次修改時間:内容的改動叫修改
  • 最後一次改變時間:檔案(内容和中繼資料)的改動叫改變

stat指令檢視檔案資訊:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

3.2.3 mkdir和touch

mkdir:

(1)作用:建立一個目錄。

(2)格式:mkdir [選項] 路徑

mkdir指令常見參數清單:

選項 參數含義
-m 對建立目錄設定存取權限,也可以用chmod指令設定
-p mkdir建立的目錄可以是一個路徑名稱。此時若此路徑中的某些目錄尚不存在,加上此選項後,系統将自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

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指令中,用加好“+”代表增權重限,用減号“-”删除權限,用等号“=”設定權限。
    shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料
  • ② 對于第二種八進制指定的方式。
    shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料
    使用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 顯示不包含比對文本的所有行
shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

“. -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或名稱)的檔案
-print 輸出搜尋結果,并列印
shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

該例中使用-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)使用示例

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料
  • 從紅色框中可知,軟連結檔案為連結檔案,硬連結檔案為普通檔案
  • 從黃色框中可知,軟連結不是複制源檔案,它隻會在使用者標明的位置(目前目錄)上生成一個檔案鏡像,不會重複占用磁盤空間。硬連結會在使用者標明的位置(目前目錄)上生成一個檔案大小相同的檔案。對應上文說的硬連結是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)使用示例

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

其中,3 個數字分别表示test.c檔案的行數、單詞數,以及該檔案的位元組數。

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

統計多個檔案時,最後一行還有這些檔案總的行數、單詞數以及位元組數。

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)使用執行個體

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

(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)使用示例

打包:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

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

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

舊版上下文格式:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

用舊版上下文格式進行輸出,在顯示每個有差别行的同時還顯示該行的上下3行。差別的地方用“!”加以标出。

新版上下文格式:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

新版上下文格式輸出時,僅把兩個檔案的不同之處分别列出,而相同之處沒有重複列出。

指令格式:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

指令格式輸出時僅輸出了不同的行,其中指令符“7c”中的數字表示行數。

字母的含義為:a—添加,b—删除,c—更改。

使用選項“-f”和選項“-e”顯示的内容基本相同,就是數字和字母順序的交換,以下是輸出結果。

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

diff選項預設情況下,輸出結果如下:

shell指令(持續)一、認識shell二、shell指令的格式三、shell指令四、參考資料

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種方法總結

繼續閱讀