溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux基礎(chǔ)命令unzip的用法

發(fā)布時(shí)間:2021-08-31 20:37:38 來源:億速云 閱讀:282 作者:chen 欄目:建站服務(wù)器

這篇文章主要講解了“Linux基礎(chǔ)命令unzip的用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Linux基礎(chǔ)命令unzip的用法”吧!

unzip

解壓zip指令壓縮過的文件。unzip將列出、測試或從ZIP存檔中提取文件,這些文件通常在MS-DOS系統(tǒng)中找到。默認(rèn)行為(沒有選項(xiàng))是將指定ZIP存檔中的所有文件提取到當(dāng)前目錄(及其下面的子目錄)中。一個(gè)配套程序zip(1L)創(chuàng)建ZIP檔案;這兩個(gè)程序都與PKWare的PKZIP和PKUNZIP為MS-DOS創(chuàng)建的檔案兼容,但在許多情況下,程序選項(xiàng)或默認(rèn)行為有所不同。

此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法

unzip  [-Z]  [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]]  file[.zip] [file(s) ...]  [-x xfile(s) ...]  [-d exdir]

 

2、選項(xiàng)參數(shù)列表

參數(shù)

說明

file[.zip]

ZIP存檔的路徑。如果文件規(guī)范是通配符,則按操作系統(tǒng)(或文件系統(tǒng))確定的順序處理每個(gè)匹配的文件。只有文件名可以是通配符;路徑本身不能。通配符表達(dá)式類似于常用Unix shell(sh、ksh、csh)中支持的表達(dá)式,可能包含:

*,匹配0或多個(gè)字符的序列。

?,匹配一個(gè)字符。

[…],匹配括號(hào)內(nèi)的任何單個(gè)字符;范圍由開始字符、連字符和結(jié)束字符指定。如果是感嘆號(hào)或插入符號(hào)(‘!‘或者‘^’)在左括號(hào)后面,則括號(hào)中的字符范圍被補(bǔ)充(也就是說,除了括號(hào)中的字符外,任何字符都被認(rèn)為是匹配的)。若要指定逐字左括號(hào),必須使用三個(gè)字符序列‘‘[[]’’。

(確保引用任何可能被操作系統(tǒng)解釋或修改的字符,特別是在Unix和VMS下。)如果沒有找到匹配項(xiàng),則假定規(guī)范為文字文件名;如果也失敗,則追加后綴.zip。請(qǐng)注意,與任何其他ZIP存檔一樣,支持自解壓ZIP文件;只需顯式地指定.exe后綴(如果有的話)。

[file(s)]

要處理的歸檔成員的可選列表,用空格分隔。(用VMSCLI定義的VMS版本必須用逗號(hào)分隔文件。見下文備選案文中的-v)。正則表達(dá)式(通配符)可用于匹配多個(gè)成員;參見上文。同樣,請(qǐng)務(wù)必引用否則將由操作系統(tǒng)展開或修改的表達(dá)式

[-x xfile(s)]

要排除在處理之外的歸檔成員的可選列表。由于通配符通常匹配(‘/’)目錄分隔符(異常請(qǐng)參見選項(xiàng)-W),此選項(xiàng)可用于排除子目錄中的任何文件。例如,“unzip  foo  *.[Ch]  -x  */*”將提取主目錄中的所有C源文件,但在任何子目錄中都不提取。如果沒有-x選項(xiàng),則將提取zip文件中所有目錄中的所有C源文件。

[-d exdir]

提取文件的可選目錄。默認(rèn)情況下,所有文件和子目錄都在當(dāng)前目錄中重新創(chuàng)建;-d選項(xiàng)允許在任意目錄中提取(總是假定一個(gè)目錄具有寫入該目錄的權(quán)限)。這個(gè)選項(xiàng)不需要出現(xiàn)在命令行的末尾;它也可以在zipfile規(guī)范之前(帶常規(guī)選項(xiàng))、在zip文件規(guī)范之后,或者在文件和-x選項(xiàng)之間被接受。選項(xiàng)和目錄可以連接在一起,沒有任何空白,但請(qǐng)注意,這可能會(huì)導(dǎo)致正常的shell行為被抑制。特別是,‘-d~’被Unix C shell擴(kuò)展為用戶主目錄的名稱,但是‘-d~’被視為當(dāng)前目錄的一個(gè)文字子目錄‘~’。

請(qǐng)注意,為了支持過時(shí)的硬件,Unzip的使用屏幕僅限于22或23行,因此只應(yīng)被視為基本解壓縮語法的提醒,而不是所有可能的標(biāo)志的詳盡列表。詳盡的清單如下:

選項(xiàng)

說明

--help

幫助信息

--version

顯示命令版本信息

-c

將解壓結(jié)果送到標(biāo)準(zhǔn)輸出

-f

解壓時(shí)更新現(xiàn)有的文件,即僅解壓磁盤上已經(jīng)存在且比磁盤副本更新的文件。默認(rèn)情況下,在覆蓋之前解壓縮查詢,但是-o選項(xiàng)可以用于抑制查詢

-l

顯示壓縮包內(nèi)文件的詳細(xì)信息。將打印指定文件的名稱、未壓縮文件大小、修改日期和時(shí)間,以及所有指定文件的總計(jì)。

-p

將解壓結(jié)果送到標(biāo)準(zhǔn)輸出,不對(duì)字符轉(zhuǎn)換。只有文件數(shù)據(jù)被發(fā)送到stdout,文件總是以二進(jìn)制格式提取

-t

檢查壓縮文件的正確性。該選項(xiàng)提取內(nèi)存中的每個(gè)指定文件,并將擴(kuò)展文件的CRC(循環(huán)冗余校驗(yàn),增強(qiáng)校驗(yàn)和)與原始文件的存儲(chǔ)CRC值進(jìn)行比較。

-T

將存檔上的時(shí)間戳設(shè)置為每個(gè)歸檔中最新文件的時(shí)間戳。這對(duì)應(yīng)于zip的-go選項(xiàng),但它可以用于通配符zip文件(例如,“unzip –T \*.zip”),而且速度要快得多

-u

更新現(xiàn)有文件,并在需要時(shí)創(chuàng)建新文件。該選項(xiàng)執(zhí)行與-f選項(xiàng)相同的功能

-v

列出存檔文件(詳細(xì)格式)或顯示診斷版本信息。

-z

僅顯示壓縮文件的備注信息

修飾符

說明

--help

幫助信息

--version

顯示命令版本信息

-a

解壓時(shí),對(duì)文本文件做字符轉(zhuǎn)換

-b

不對(duì)文本文件字符轉(zhuǎn)換,把所有文件當(dāng)做二進(jìn)制文件。

-B

保存每個(gè)覆蓋文件的備份副本,‘foo’的舊拷貝改名為‘foo~’。

-C

解壓時(shí),設(shè)置文件名大小寫敏感

-D

跳過提取項(xiàng)的時(shí)間戳恢復(fù)。

-E

[僅限MacOS]在恢復(fù)操作期間顯示MacOS額外字段的內(nèi)容。

-F

[僅限Acorn]禁止從存儲(chǔ)的文件名中刪除NFS文件類型擴(kuò)展。

-i

[僅限MacOS]忽略存儲(chǔ)在MacOS額外字段中的文件名。相反,使用存儲(chǔ)在條目標(biāo)題的泛型部分中的最兼容的文件名。

-j

垃圾路。存檔的目錄結(jié)構(gòu)不被重新創(chuàng)建;所有文件都存放在提取目錄中(默認(rèn)情況下是當(dāng)前的)。

-J

[僅限BeOS]垃圾文件屬性。文件的BeOS文件屬性沒有恢復(fù),只是文件的數(shù)據(jù)。

-K

保留SUID/SGID/duy文件屬性。如果沒有此標(biāo)志,則出于安全原因,將清除這些屬性位。

-L

解壓時(shí),將文件名改為小寫字母

-M

把解壓結(jié)果送給more分屏顯示

-n

解壓時(shí),不覆蓋原有的文件

-N

將文件注釋解壓縮為Amiga文件。

-o

不提示用戶,覆蓋原有文件

-P

解壓時(shí),輸入密碼

-q

靜默模式

-s

[OS/2,  NT,  MS-DOS]將文件名中的空格轉(zhuǎn)換為下劃線

-S

[VMS]將文本文件(-a,-aa)轉(zhuǎn)換為Stream_LF記錄格式,而不是文本文件默認(rèn)的可變長度記錄格式。

-U

[UNICODE_SUPPORT only]修改或禁用UTF-8處理。當(dāng)Unicode_Support可用時(shí),選項(xiàng)-U強(qiáng)制解壓將UTF-8編碼文件名中的所有非ASCII字符轉(zhuǎn)義為“#Uxxxx”

-V

保留(VMS)文件版本號(hào)。VMS文件可以用版本號(hào)存儲(chǔ),格式為file.ext;#。默認(rèn)情況下,‘;#’版本號(hào)將被刪除,但此選項(xiàng)允許保留它們。

-W

[僅當(dāng)WILD_STOP_AT_DIRR編譯時(shí)選項(xiàng)啟用] 修改模式匹配例程,以便 “?”和“*”與目錄分隔符“/”不匹配。

-X

[VMS,  Unix,  OS/2,  NT, Tandem] 在Unix下恢復(fù)用戶和組信息(UID/GID)

-Y

[VMS] 將存檔的文件名結(jié)尾“.nn”(其中‘nnn’是一個(gè)十進(jìn)制數(shù))視為VMS版本號(hào)(‘;nnn’)。(默認(rèn)的做法是將它們視為文件類型。)

-$

[MS-DOS, OS/2, NT]如果提取介質(zhì)是可移動(dòng)的(例如磁盤),則恢復(fù)卷標(biāo)簽。加倍的選項(xiàng)($-$)允許固定媒體(硬盤)也被標(biāo)記。默認(rèn)情況下,卷標(biāo)簽將被忽略。

-/ extensions

[Acorn] 重寫Unzip$Ext環(huán)境變量提供的擴(kuò)展列表。在提取過程中,與此擴(kuò)展列表中的項(xiàng)匹配的文件名擴(kuò)展名將在提取文件的基名前面交換。

-:

允許將存檔成員解壓縮到當(dāng)前“提取根文件夾”之外的位置。

-^

[Unix only] 允許提取的ZIP存檔條目的名稱中包含控制字符。

-2

[vms]強(qiáng)制無條件地將文件名轉(zhuǎn)換為ODS 2-兼容名稱

 

3、環(huán)境選項(xiàng)

unzip的默認(rèn)行為可以通過放置在環(huán)境變量中的選項(xiàng)來修改。這可以用任何選項(xiàng)來完成,但是它可能對(duì)-a,-L,-C,-q,-o或-n修飾符最有用:默認(rèn)情況下使unzip自動(dòng)轉(zhuǎn)換文本文件,使文件名從大寫系統(tǒng)轉(zhuǎn)換為小寫,使其不敏感地匹配名稱,使其更安靜,或者讓它在解壓文件時(shí)始終覆蓋或不覆蓋它們。例如,要使解壓縮盡可能安靜,只報(bào)告錯(cuò)誤,可以使用以下命令之一:

Unix Bourne shell:      UNZIP=-qq; export UNZIP

Unix C shell:setenv      UNZIP -qq

OS/2 or MS-DOS:set       UNZIP=-qq

VMS (quotes for lowercase):      define UNZIP_OPTS "-qq"

實(shí)際上,環(huán)境選項(xiàng)被認(rèn)為與任何其他命令行選項(xiàng)一樣,只是它們實(shí)際上是命令行中的第一個(gè)選項(xiàng)。要覆蓋環(huán)境選項(xiàng),可以使用“減號(hào)運(yùn)算符”來刪除它。例如,若要覆蓋上面示例中的一個(gè)靜音標(biāo)志,請(qǐng)使用以下命令

unzip --q[other options] zipfile

第一個(gè)連字符是正常的開關(guān)字符,第二個(gè)是負(fù)號(hào),作用于Q選項(xiàng)。因此,這里的效果是取消一個(gè)安靜的量子。若要取消這兩個(gè)安靜的標(biāo)志,可以使用兩個(gè)(或更多)最小值:

unzip -t--q zipfile

unzip ---qt zipfile              這兩個(gè)是等價(jià)的

正如上面的例子所建議的,默認(rèn)變量名是UNZIP_OPTS,用于VMS,以及所有其他操作系統(tǒng)的解壓縮。為了與zip(1L)兼容,UNZIP_OPTS也被接受(不要問)。但是,如果同時(shí)定義了UNZIP和UNZIP_OPTS,那么UNZIP優(yōu)先。Unzip的診斷選項(xiàng)(沒有zip文件名的-v)可以用于檢查所有四個(gè)可能的解壓縮和zipinfo環(huán)境變量的值

4、說明

unzip的某些編譯版本可能不支持解密。若要檢查加密支持版本,可以嘗試測試或提取加密存檔,或者檢查unzip的診斷屏幕(請(qǐng)參閱上面的-v選項(xiàng))以“[解密]”作為特殊的編譯選項(xiàng)之一。

如上所述,可以使用-P選項(xiàng)在命令行上提供密碼,但代價(jià)是安全性。首選的解密方法是正常提??;如果zip文件成員被加密,解壓縮將提示輸入密碼,而不回顯所鍵入的內(nèi)容。解壓縮繼續(xù)使用相同的密碼,只要它看起來是有效的,通過在每個(gè)文件上測試一個(gè)12字節(jié)的頭。正確的密碼將始終簽出與標(biāo)題,但有1/256的機(jī)會(huì),一個(gè)不正確的密碼也會(huì)。(這是PKWare zipfile格式的一個(gè)安全特性;它有助于防止暴力攻擊,否則只通過測試報(bào)頭就可以獲得很大的速度優(yōu)勢。)如果給出了錯(cuò)誤的密碼,但它還是通過了頭測試,則將為提取的數(shù)據(jù)生成不正確的CRC,或者在提取過程中解壓縮失敗,因?yàn)椤饷堋止?jié)并不構(gòu)成有效的壓縮數(shù)據(jù)流。

如果第一個(gè)密碼沒有通過頭檢查某個(gè)文件,解壓縮將提示輸入另一個(gè)密碼,以此類推,直到提取所有文件。如果不知道密碼,則輸入空密碼(即只返回一個(gè)回車或‘Enter’)作為跳過所有進(jìn)一步提示的信號(hào)。隨后將只提取存檔中未加密的文件。(事實(shí)上,這并不完全正確;早期版本的zip(1L)和zipcloak(1L)允許空密碼,因此解壓縮檢查每個(gè)加密文件以查看空密碼是否有效。這可能會(huì)導(dǎo)致“假陽性”和提取錯(cuò)誤,如上所述。)

用8位密碼加密的檔案(例如,帶有重音的歐洲字符的密碼)可能無法跨系統(tǒng)和/或其他存檔器移植。這個(gè)問題源于對(duì)這些字符使用多種編碼方法,包括拉丁文1(ISO 8859-1)和OEM代碼頁850。DoS PKZIP 2.04g使用OEM代碼頁;Windows PKZIP 2.50使用拉丁文-1(因此與DOS PKZIP不兼容);Info-ZIP使用DOS、OS/2和Win3.x端口上的OEM代碼頁,但使用ISO編碼(拉丁文-1等)。在其他地方,NicoMak的WinZip6.x根本不允許8位密碼。解壓縮5.3(或更新)嘗試首先使用默認(rèn)字符集(例如拉丁語-1),然后使用備用字符集(例如OEM代碼頁)測試密碼。

5、例子代碼

unzip  letters

letters.zip解壓到當(dāng)前的目錄以及其子目錄下

unzip  -j  letters

letters.zip解壓到當(dāng)前目錄下

unzip  -tq  letters

測試letters.zip,打印出測試信息,確定壓縮包是否完整

unzip  -tq  \*.zip

測試當(dāng)前目錄下的所有zip文件,打印總和信息

unzip  -ca  letters  \*.tex  |  more

要將名稱以.tex結(jié)尾的letters.zip的所有成員提取為標(biāo)準(zhǔn)輸出,自動(dòng)轉(zhuǎn)換為本地行尾約定,并將輸出傳遞給more程序

unzip  -p  articles  paper1.dvi  |  dvips

將二進(jìn)制文件解壓到標(biāo)準(zhǔn)輸出,并且通過管道送到另一個(gè)打印程序

unzip  source.zip  "*.[fch]"  Makefile  -d  /tmp

將所有的c語言和FORTRAN語言的源文件,以及Makefile解壓到/tmp目錄

unzip  -C  source.zip  "*.[fch]"  makefile  –d  /tmp

將所有的c語言和FORTRAN語言的源文件,以及Makefile解壓到/tmp目錄(忽略所有的大小寫)

unzip  -aaCL  source.zip  "*.[fch]"  makefile  –d  /tmp

提取任何此類文件,但將ms-dosvms中任何大寫名稱轉(zhuǎn)換為小寫,并將所有文件的行尾轉(zhuǎn)換為本地標(biāo)準(zhǔn)。

unzip  -fo  sources

僅提取當(dāng)前目錄中已經(jīng)存在的較新版本的文件,而不進(jìn)行查詢

unzip  -uo  sources

提取當(dāng)前目錄中已存在的較新版本的文件,并創(chuàng)建尚未存在的任何文件。

unzip  –v

要顯示診斷屏幕,顯示哪些解壓縮和zipinfo選項(xiàng)存儲(chǔ)在環(huán)境變量中,是否在環(huán)境變量中編譯解密支持,以及編譯解壓縮的編譯器等等

unzip  -l  file.zip

只是列出內(nèi)容

unzip  -ql  file.zip

雙倍安靜的列表

unzip  --ql  file.zip

unzip  -l-q  file.zip

unzip  -l--q  file.zip

標(biāo)準(zhǔn)的列表

 

6、診斷信息

退出碼

說明


正常,沒有錯(cuò)誤信息

1

遇到一個(gè)或多個(gè)警告錯(cuò)誤,但仍然成功地完成了處理。這包括由于不支持的壓縮方法或密碼未知的加密而跳過一個(gè)或多個(gè)文件的zip文件。

2

檢測到zip文件格式中的通用錯(cuò)誤。無論如何,處理可能已經(jīng)成功完成;一些由其他歸檔程序創(chuàng)建的損壞的zip文件具有簡單的工作環(huán)境。

3

檢測到zip文件格式出現(xiàn)嚴(yán)重錯(cuò)誤。處理可能立即失敗

4

在程序初始化期間,unzip無法為一個(gè)或多個(gè)緩沖區(qū)分配內(nèi)存。

5

unzip無法分配內(nèi)存,也無法獲取TTY來讀取解密密碼。

6

unzip過程中無法將內(nèi)存分配給磁盤。

7

unzip無法在內(nèi)存解壓縮期間分配內(nèi)存.

8

當(dāng)前還沒有用到這個(gè)退出碼

9

指定的壓縮文件沒有找到

10

非法的選項(xiàng)

11

找不到匹配的文件

50

磁盤已經(jīng)滿了

51

ZIP存檔的結(jié)尾是過早地遇到的。

80

用戶使用ctrl+c終止了解壓過程

81

由于不支持的壓縮方法或不支持的解密,一個(gè)或多個(gè)文件的測試或提取失敗

82

由于解密密碼錯(cuò)誤,沒有找到任何文件。(但是,即使成功處理了一個(gè)文件,退出狀態(tài)也是1。)

 

7、實(shí)例

1)顯示備注信息

[root@localhost weijie]# zip 1.zip 1.c            //壓縮

  adding: 1.c (deflated 9%)

[root@localhost weijie]# unzip -z 1.zip           //顯示備注

Archive:  1.zip

2)顯示壓縮包內(nèi)的文件信息

[root@localhost weijie]# unzip -l 1.zip

Archive:  1.zip

  Length      Date    Time    Name

---------  ---------- -----   ----

       53  09-19-2018 16:08   1.c

---------                     -------

       53                     1 file

3)解壓

[root@localhost weijie]#unzip -n -v 1.zip                //顯示解壓過程

Archive:  1.zip

 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name

--------  ------  ------- ---- ---------- ----- -------- ----

      53  Defl:N       48   9% 09-19-2018 16:08 1c3e46be  1.c

--------          -------  ---                            -------

      53               48   9%                            1 file

 

感謝各位的閱讀,以上就是“Linux基礎(chǔ)命令unzip的用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Linux基礎(chǔ)命令unzip的用法這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI