.\" Copyright (c) 1990-2002 Info-ZIP. All rights reserved. .\" .\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html .\" .\" zipinfo.1 by Greg Roelofs and others. .\" .\" ========================================================================= .\" define .X macro (for long-line ZipInfo output examples; small Courier): .de X .nf .ft CW .ie n .ti -5 .el \{ .ti +2m .ps -1 \} \&\\$1 .ie n .ti +5 .el \{ .ti -2m .ps +1 \} .ft .fi .. .\" define .EX/.EE (for multiline user-command examples; normal Courier font) .de EX .in +4n .nf .ft CW .. .de EE .ft .fi .in -4n .. .\" ========================================================================= .TH ZIPINFO 1 "17 February 2002 (v2.4)" "Info-ZIP" .SH NAME zipinfo \- 列出關於某個ZIP壓縮包的詳細信息 .PD .SH "總覽 SYNOPSIS" \fBzipinfo\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] .PP \fBunzip\fP \fB\-Z\fP [\fB\-12smlvhMtTz\fP] \fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] .PD .\" ========================================================================= .SH "描述 DESCRIPTION" \fIzipinfo\fP 列出某個ZIP檔案中的所包含文件的技術信息, 它們絕大多數和MS-DOS系統中的相同.信息包括文件權限設置,加密狀態,壓縮類型, 以及壓縮程序的版本和所在的操作系統或者文件系統等.缺省時將爲檔案中的每一個 文件列出一行,並在首行和末行給出整個檔案的概括信息.其輸出的格式介於Unix中 ``\fCls \-l\fR''和 ``\fCunzip \-v\fR''的輸出結果.參看下面的 .B "詳細描述 DEATILED DESCRIPTION" . 請注意 \fIzipinfo\fP與\fIunzip\fP 是同一個程序 (在Unix中,是一個對它的連接); 然而在有些系統上, \fIzipinfo\fP 的支持在\fIunzip\fP 集成後已被忽略. .PD .\" ========================================================================= .SH "參數 ARGUMENTS" .TP .IR file [ .zip ] ZIP 壓縮包的路徑.如果指定的文件是一個通配符,那麼將按照某種操作系統或者 文件系統所決定的順序處理每一個匹配的文件.只有文件名可以是通配符.路徑本 身不可以.通配符表達式和 Unix 中的 \fIegrep\fP(1) 正則表達式相似,可能包括: .RS .IP * 匹配一個0或者任意多個字符組成的序列 .IP ? 精確匹配一個字符 .IP [.\|.\|.] 匹配中括號中的任何單個字符;也可以通過首字符,連字符和末字符指定一個匹配範圍.如果一個驚歎號或者插入符(`!'或者`^')緊跟左括號;那麼將對括號中的內容取補集(也就是說, 任何不屬於括號中的字符將被匹配). .RE .IP (如果有任何字符會被操作系統所改變,請使用引號,特別是在 Unix 或者 VMS 中)如果沒有匹配項出現,那麼指定的內容將被認爲是原始的文件名;如果這樣做也失敗,那麼將嘗試追加 \fC.zip\fR 後綴.注意自解壓的ZIP文件是支持的;只要明確指定 \fC.exe\fR 後綴即可. .IP [\fIfile(s)\fP] 指定一個可選的待處理的檔案列表.正則表達式(通配符)可以用來匹配多個成員;如上所述.再次提醒如果表達式會被操作系統所擴展或者修改要使用引號. .IP [\fB\-x\fP\ \fIxfile(s)\fP] 指定一個可選的將被忽略的檔案列表. .\" ========================================================================= .SH "選項 OPTIONS" .TP .B \-1 只列出文件名,一行一個.這個選項具有完全的排它性;首末行信息以及壓縮文件的描述信息將不會被輸出.它可以在Unix的Shell腳本中使用. .TP .B \-2 只列出文件名,一行一個,但是允許輸出首行信息 (\fB\-h\fP), 末行信息(\fB\-t\fP) 和壓縮文件描述信息 (\fB\-z\fP). 這個選項在文件名特別長的情況下或許有用. .TP .B \-s 以Unix的 ``\fCls \-l\fR'' 的短格式列出壓縮文件的信息.這是缺省的,詳情見下. .TP .B \-m 以 Unix的 ``\fCls \-l\fR'' 的中長格式列出壓縮文件的信息.和\fB\-s\fP 的輸出結果相同,但是它會列出以百分數表示的壓縮比率. .TP .B \-l 以 Unix的 ``\fCls \-l\fR'' 的長格式列出壓縮文件的信息.和 \fB\-m\fP 輸出結果相同,除了壓縮比率被壓縮後的文件大小(以字節爲單位)所取代外. .TP .B \-v 詳細地以多頁方式列出壓縮文件的信息. .TP .B \-h 列出首行信息.並輸出檔案名字,實際大小(以字節爲單位)以及文件數目. .TP .B \-M 將所有的輸出以和 Unix 中 \fImore\fP(1) 命令相似的內部頁的方式輸出.在屏幕輸出的末尾,\fIzipinfo\fP 將會暫停,並給出``\-\-More\-\-'' 提示;可以按Enter(Return)或者空格鍵查看下一屏內容.按``q'' 鍵(在某些系統上可能是Enter/Return鍵)可以結束\fIzipinfo\fP .與Unix中的more命令所不同,\fIzipinfo\fP 沒有向前搜索和編輯功能.同時,\fIzipinfo\fP 對於屏幕末的長行,不能有效地將它按兩行或者多行顯示出來,導致\fIzipinfo\fP 屏幕上方的一些文本在被瀏覽之前就捲過.在有些系統上屏幕上的可顯示行的數目是不能被取得的,在這種情況下,\fIzipinfo\fP 假定爲24行. .TP .B \-t 列出所有或者要求被列出文件的總體信息.輸出文件的數目,壓縮前後的總大小,以及總的壓縮係數;或者如果只有總體信息被打印出,則給出整個檔案的信息.請注意總的壓縮數據的大小總是不同於實際的壓縮文件的大小,這是因爲後者包括了作爲壓縮數據附屬物的所有的壓縮文件內部的頭信息. .TP .B \-T 以按點分十進制的格式(yymmdd.hhmmss)排序輸出文件的日期和時間.默認的日期格式是一個更加標準的,用戶易讀的,使用月份名縮寫(參看下文)的版本. .TP .B \-z 包含檔案中的描述信息(如果有的話). .PD .\" ========================================================================= .SH "詳細描述 DETAILED DESCRIPTION" .I zipinfo 有很多種工作方式,如果不太熟悉 Unix 中的 \fIls\fP(1) (或者即使熟悉)的話,要掌握好它的使用也是比較困難的.默認的方式是以如下的格式列出文件: .PP .X "-rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660" .PP 最後的三個字段分別是文件的修改日期和時間,還有文件名.文件名的大小寫是區分的,這樣來自MS-DOS PKZIP的壓縮文件總是被大寫.如果被壓縮的文件存儲了路徑名,也將被看作是文件名的一部分而被顯示. .PP 第二,三個字段表示了文件是在 Unix 下以 1.9 版的 \fIzip\fP 壓縮的.由於它來自 Unix ,行開頭的文件的存取權限以Unix 格式輸出.壓縮前的文件大小(本例中爲2802)在第四個字段中給出. .PP 第五個字段包含了兩個字符,它們中的每個都能取若干個值.第一個字符可能是`t'或者`b',相應地表示文件是文本的或者是二進制的;但是如果文件被加密,\fIzipinfo\fP 通過大寫字符(`T'或者`B')來表示.第二個字符可以取四個值,它依賴於是否存在一個本地的頭信息並且/或者一個和那個文件相關的 "額外" 字段(詳細解釋參看 PKWare's APPNOTE.TXT,它基本上類似於ANSI C中的pragmas,它們提供了一種包含非標準信息的標準方法).如果兩者都不存在,該字段爲連字符(`\-');如果有一個擴展的本地頭信息但是沒有額外字段,則爲`l';反之爲`x';如果都存在,則爲`X'.這樣上面示例中的文件(很可能)是一個未被加密的文本文件,並且沒有額外字段和本地頭信息與之相關聯.下面的例子則是一個有額外信息的二進制文件. .PP .X "RWD,R,R 0.9 vms 168 Bx shrk 9-Aug-91 19:15 perms.0644" .PP 額外的字段的使用是爲了滿足不同的需要(參看下面選項 \fB\-v\fP 的討論)包括這裏討論所假設的情況:VMS 文件的存儲特性. 一些其他的可能是爲了處理操作系統(這是一個誤解,實際應該是文件系統更恰當些)包括 OS/2 或者使用高性能文件系統 (HPFS) 的 NT ,MS_DOS, OS/2 或者使用文件獲取表 (FAT) 作爲文件系統的 NT, Macintosh.它們被如下所標示: .PP .X "-rw-a-- 1.0 hpf 5358 Tl i4:3 4-Dec-91 11:33 longfilename.hpfs" .X "-r--ahs 1.1 fat 4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF" .X "--w------- 1.0 mac 17357 bx i8:2 4-May-92 04:02 unzip.macr" .PP 前兩個例子的文件的屬性以類Unix的格式表示,其中七個子域分別表示該文件是否(1)是一個目錄,(2)是可讀的(總是)(3)是可寫的,(4)是可執行的(猜測建立在假定它們的擴展名爲\fI.exe\fP, \fI.com\fP, \fI.bat\fP, \fI.cmd\fP和\fI.btm\fP 的基礎上)(5)有它的歸檔位設置,(6)是隱藏的和(7)是一個系統文件.由於一些 Macintosh 歸檔工具不存儲任何檔案信息, Macintosh 文件的解釋是不可信的. .PP 最後,第六個字段表示了壓縮使用的方法和子方法. 現在已知有六種方法:存儲法(storing)(無壓縮),縮減法(reducing),收縮法(shrinking), 內爆法(impoding),標誌法(tokenizing)(從來沒有公開發布)和緊縮法(deflating). 更進一步,縮減法有4種級別(從1到4);內爆法有4種類型(4K或者8K的滑動字典,和2或者3個Shannon-Fano樹);緊縮法也有4個層次(超快,快,正常,最大壓縮).\fIzipinfo\fP 用如下的方式代表了這些方法和子方法: \fIstor\fP;\fIre:1\fP, \fIre:2\fP, etc.; \fIshrk\fP; \fIi4:2\fP, \fIi8:3\fP, etc.; \fItokn\fP; and \fIdefS\fP, \fIdefF\fP, \fIdefN\fP, and \fIdefX\fP. .PP 中長和長列表格式顯示幾乎和短列表相同,除去它們附加了文件壓縮方面的信息.中長格式以百分數列出了文件壓縮率,它代表了被節省的空間: .PP .X "-rw-rws--- 1.5 unx 2802 t- 81% defX 11-Aug-91 13:48 perms.2660" .PP 在這個例子中,文件以超過5倍的比例被壓縮;壓縮後的數據大小僅爲原是大小的19%.長格式則以以字節大小爲單位的壓縮後文件大小表示該信息: .PP .X "-rw-rws--- 1.5 unx 2802 t- 538 defX 11-Aug-91 13:48 perms.2660" .PP 增加 \fB\-T\fP 選項則將文件的日期和時間以點分格式輸出: .PP .X "-rw-rws--- 1.5 unx 2802 t- 538 defX 910811.134804 perms.2660" .PP 注意到因爲 MS-DOS 格式中用來存儲文件時間的限制,第二個域總是取值爲最近的偶數秒.對於 Unix 文件 \fIzip\fP(1L) 和 \fIunzip\fP 很可能在它們的下一個版本中改變. .PP 作爲單獨文件信息的補充,默認的輸出還包括頭和末信息行: .PP .X "Archive: OS2.zip 5453 bytes 5 files" .X ",,rw, 1.0 hpf 730 b- i4:3 26-Jun-92 23:40 Contents" .X ",,rw, 1.0 hpf 3710 b- i4:3 26-Jun-92 23:33 makefile.os2" .X ",,rw, 1.0 hpf 8753 b- i8:3 26-Jun-92 15:29 os2unzip.c" .X ",,rw, 1.0 hpf 98 b- stor 21-Aug-91 15:34 unzip.def" .X ",,rw, 1.0 hpf 95 b- stor 21-Aug-91 17:51 zipinfo.def" .X "5 files, 13386 bytes uncompressed, 4951 bytes compressed: 63.0%" .PP 頭行給出了檔案的名字,它的總大小,總的文件數;末行給出了所列出的文件數,它們總的解壓後的大小和它們總的解壓前的大小(不包含任何的 \fIzip\fP 內部的部分).但是,如果指定一個或者若干的文件,則頭信息和末信息將不會列出.這種行爲與Unix中的 ``\fCls \-l\fR'' 類似;可以通過明確指定 \fB\-h\fP h或者 \fB\-t\fP 選項強制顯示. .PP 在這種情況下,由於 \fB\-h\fP 或 \fB\-t\fP (或同時)而沒有其他選項意味着只有頭信息或者末信息(或同時)被列出,列表的格式同樣需要明確地指定.對此可參看下面\fB "示例 EXAMPLES" \fP 部分獲得這個無意義的半智能化的轉化. .PP 冗餘的列表顯示內容大多數都是自解釋的.它還列出了文件和檔案文件的描述,如果有的話,還列出所有存儲在額外域中的類型和字節數.當前已知的額外域的類型包括 PKWARE 的認證(``AV'')信息;OS/2 擴展屬性;VMS 文件系統信息,PLWARE 和 Info-ZIP 的版本; Macintosh 的resource forks;Acorn/Archimedes SparkFS 信息等等.(對於OS/2的擴展屬性(壓縮文件額外域中最常用的部分) \fIzipinfo\fP 報告的 EAs 的存儲大小可能與 OS/2 使用 \fIdir\fP 命令給出得結果不一致:OS/2 總是以16位格式輸出字節數,而 \fIzipinfo\fP 總是以32位存儲輸出.) .PD .\" ========================================================================= .SH "環境選項 ENVIRONMENT OPTIONS" 通過設置在環境變量中的選項可以改變 \fIzipinfo\fP 的默認的工作方式,但是解釋起來稍微有點複雜, 這是因爲 \fIzipinfo\fP 試圖以一種直觀,類 Unix 的方式進行默認工作.(不要笑)然而這裏有一些內在的邏輯.簡言之,選項有三個優先等級:默認選項;環境選項,它是優先於默認選項的,並作爲其的補充;用戶傳遞的明確的選項,它是優先於上述兩類並作爲其補充的. .PP 默認的輸出列表格式,正如上述描述的,粗略地對應於 "\fCzipinfo \-hst\fR" 命令(除非指定一個單獨的壓縮文件). 一個偏愛長輸出格式 (\fB\-l\fP) 的用戶能夠使用\fIzipinfo\fP的環境變量來改變默認的運作: .TP Unix Bourne shell: \f(CW\&ZIPINFO=\-l; export ZIPINFO\fP .TP Unix C shell: \f(CW\&setenv ZIPINFO \-l\fP .TP OS/2 or MS-DOS: \f(CW\&set ZIPINFO=\-l\fP .TP VMS (quotes for \fIlowercase\fP): \f(CW\&define ZIPINFO_OPTS "\-l"\fP .EE .PP 另外,如果用戶不喜歡末行信息,\fIzipinfo\fP 的"反選項"的概念可以用來覆蓋默認的總結行信息.這可以通過在不想使用的選項前加上減號實現:例如,,在這個例子中可以使用``\fC\-l\-t\fR'' 或者 ``\fC\-\-tl\fR'' .第一個連字符是規則開關符,而`t'之前的那個是減號.連續使用兩個連字符看起來有些笨拙.但是從直覺出發並非無意義:只用忽略第一個連字符並從此開始.它同樣和Unix命令中的 \fInice\fP(1) 相一致. .PP 正如上面所提到的,對於VMS默認的環境變量是ZIPINFO_OPTS(否則將作爲一個安裝 \fIzipinfo\fP 的外來命令和環境變量相混淆),而對於其它的操作系統則是ZIPINFO.爲了與\fIzip\fP(1L) 兼容,ZIPINFOOPT也被接受(不要問爲什麼).如果ZIPINFO和ZIPINFOOPT均被定義,則ZIPINFO優先. \fIunzip\fP 的診斷選項(\fB\-v\fP 且沒有壓縮文件名)能夠用來檢查所有的四個可能的 \fIunzip\fP 和 \fIzipinfo\fP 環境變量. .PD .\" ========================================================================= .SH "示例 EXAMPLES" 要獲得一個壓縮檔案 \fIstorage.zip\fP 的基本的,短格式輸出的完整的內容,幷包含頭末行信息,使用檔案名作爲zipinfo 的參數即可: .PP .EX zipinfo storage .EE .PP 要獲得一個基本的,長格式(非冗餘)的,包含頭末行信息的列表,用 \fB\-l\fP: .PP .EX zipinfo \-l storage .EE .PP 要獲得一個檔案的完整內容,並且不包含頭末行信息,可以使用 \fB\-h\fP 和 \fB\-t\fP 的反選項,也可以明確指定顯示內容: .PP .EX zipinfo \-\-h\-t storage zipinfo storage \e* .EE .PP (這裏的反斜槓 (backslash `\') 只是在 shell 會將 `*' 通配符擴展時才必要,正如在 Unix 中雙引號擴起來的星號將會全局有效).如果要默認關閉所有的行顯示,可以使用環境變量(這裏假設是C shell): .PP .EX setenv ZIPINFO \-\-t zipinfo storage .EE .PP 要獲得第一個例子的完整的,短格式的列表輸出,如果環境變量已經象前面的那樣設置好了,就需要明確指定\fB\-s\fP 選項,因爲 \fB\-t\fP 選項本身只表示輸出末行信息: .PP .EX setenv ZIPINFO \-\-t zipinfo \-t storage \fR[only totals line]\fP zipinfo \-st storage \fR[full listing]\fP .EE .PP \fB\-s\fP 選項和 \fB\-m\fP 和 \fB\-l\fP, 選項一樣,默認情況下包含了頭末行信息,除非另外指定,因爲規定不顯示末行信息的環境變量較之於默認的 \fB\-s\fP 選項的優先權更高,因此爲了得到完整的列表輸出,就需要明確指定 \fB\-t\fP 選項.沒有什麼(環境變量)與頭信息相關連,因此 \fB\-s\fP 選項就足夠了.請注意當使用 \fB\-h\fP 和 \fB\-t\fP 選項的時候,將不顯示任何默認的文件列表;只顯示頭和/或末信息.在使用一個通配符作爲 \fIzipinfo\fP 的參數的時候,這種模式是有用的;所有文件的內容只用一個命令就歸納出了. .PP 要以中長格式列出檔案中的一個單獨文件的信息,只用明確指定文件名就可以了: .PP .EX zipinfo \-m storage unshrink.c .EE .PP 指定任何一個檔案成員的文件名,就象在本例一樣,將不再顯示默認的頭末信息;只有顯示特定文件信息的那行將被輸出.當要獲得某個單獨的文件的信息的時候這種模式符合直覺.對於多個文件的情形,知道總共的壓縮前後的文件的大小常是有用的;在這種情況下 \fB\-t\fP 選項常需要明確指定: .PP .EX zipinfo \-mt storage "*.[ch]" Mak\e* .EE .PP 爲了獲得一個ZIP檔案的完全信息,可使用冗餘選項.如果操作系統允許的話把輸出重定向至一個過濾器例如Unix中的\fImore\fP(1) 通常是明智之舉: .PP .EX zipinfo \-v storage | more .EE .PP 最後,爲了查看檔案中最近修改的文件,可使用 \fB\-T\fP 選項配合外部的排序程序比如 Unix 中的 \fIsort\fP(1) (還有這個例子中的 \fItail\fP(1) ): .PP .EX zipinfo \-T storage | sort -n +6 | tail -15 .EE .PP \fB\-n\fP 選項告訴 \fIsort\fP(1) 以數字大小排序而不是 ASCII 順序, \fB\+6\fP 選項意爲以第一個後面的第六個字段排序(也就是說是第七個字段).這裏假定是默認的短格式輸出;如果使用了 \fB\-m\fP 或者 \fB\-l\fP 選項,則正確的 \fIsort\fP(1) 選項將是 \fB\+7\fP.\fItail\fP(1) 命令除去最後15行以外的所有內容.以後的版本的 \fIzipinfo\fP 可能會集成日期/時間和文件名的排序於內建的選項. .PD .\" ========================================================================= .SH "技巧 TIPS" 作者發現如果在可以使用別名的系統(或者允許在系統上拷貝/重命名可執行程序,建立鏈接或者可以以\fIii\fP 爲名建立一個命令文件)上定義 \fIzipinfo\fP 的別名爲 \fIii\fP 將會帶來很大的方便. \fIii\fP 的用法和通常的作爲Unix中長格式輸出的別名的 \fIll\fP 相平行,而且兩個命令的輸出的相似性是有意義的. .PD .\" ========================================================================= .SH BUGS 相對於 \fIunzip\fP,\fIzipinfo\fP 的 \fB\-M\fP (``more'') 選項總體上來說在處理屏幕輸出時是過於簡單了;正如上面指出的,它不能正確地發現過長的行,因此很可能引起屏幕上端的行在被讀取之前就被滾動略過.如果附加一個額外的行,\fIzipinfo\fP 應該能發現並且處理這種情況.這需要獲得屏幕的寬和高.並且,\fIzipinfo\fP 還要獲得所有系統中的屏幕的真實尺寸. .PP \fIzipinfo\fP的按列輸出的模式是沒有必要那麼複雜的,應進行簡化(這裏並不是說將會的到簡化). .PP .\" ========================================================================= .SH "參見 SEE ALSO" \fIls\fP(1), \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) .PD .\" ========================================================================= .SH URL The Info-ZIP home page is currently at .EX \fChttp://www.info-zip.org/pub/infozip/\fR .EE 或 .EX \fCftp://ftp.info-zip.org/pub/infozip/\fR . .EE .PD .\" ========================================================================= .SH "作者 AUTHOR" Greg ``Cave Newt'' Roelofs. ZipInfo 包含了Mark Adler的模式匹配的代碼以及其他很多人的修正/改進.請參考UnZip源程序發佈中的CONTRIBS文件獲得更加完整的列表. .SH "[中文版維護人]" .B 嚴亞勤 .SH "[中文版最新更新]" .B 2003.11.22 .SH "《中國linux論壇man手冊翻譯計劃》:" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR