?? bzip2.txt
字號:
Bzip2 Howto 作者:David Fetter, [1]dfetter@best.com譯者:謝昆中 HSIEH KUN-CHUNG, 臺灣 中華民國 Taiwan, Republic of China (NOT People'sRepublic of China) (電子郵件 [2]linuxer.bbs@cis.nctu.edu.tw 或[3]linux4tw@geocities.com 網頁 "Linux for Taiwan 臺灣人的 Linux"[4]http://members.xoom.com/linux4tw/ 版本 v1.92,1998年 8月18日 _________________________________________________________________ 這份文件在教你如何使用新的 bzip2 壓縮程式。目前的 sgml 版本被放在 EURO [5]這□,還有 "作者用的" sgml 檔放在 [6]這兒。 _________________________________________________________________ 1. 簡介 * 1.1 沿革歷史 2. 取得 bzip2 * 2.1 Bzip2-HOWTO 各種語言版本 * 2.2 取得 bzip2 未編譯的二進位檔 * 2.3 取得 bzip2 原始程式 * 2.4 編譯 bzip2 給你的機器使用 3. 使用 bzip24. 配合 tar來使用 bzip2 * 4.1 容易設立: * 4.2 容易設立,容易使用,不需要 root 的特權: * 4.3 同樣是容易使用,但需要 root 來存取。 5. 使用 bzip2 來配合 less6. 使用 bzip2 來結合 emacs * 6.1 為每個人改變 emacs: * 6.2 為某人改變 emacs: 7. 用 bzip2 來配合 wu-ftpd8. 使用 bzip2 來配合 grep9. bzip2 配合 X 下的 Netscape 來使用。10. 使用 bzip2 來再壓縮其他的壓縮格式11. 中譯本 _________________________________________________________________ 1. 簡介 Bzip2 是個很棒的壓縮資料用之新型演算法。大致上能夠達到以它的對手 gzip 所產出的檔案之 60-70% 左右的壓縮率。 這份文件將教你幾個 bzip2 的應用軟體。 本文件的未來版將會討論即將出現的 bzip2 程式庫,該程式庫 原bzip2 的作者 [7]Julian Seward 描述如下: 現在正致力於 bzip2 的下一個版本,它也將采用相同的 .bz2 檔案格式;主要增加的功能是一個像 zlib 的程式庫。讓我們可以從程式□頭來讀取和書寫資料到這種格式的檔案□。 本文件的未來版本也會包含是否應該 (以及如何)讓 Linux kernel 使用 bzip2之 議題的結論。 1.1 沿革歷史 v1.92更新 [8]取得 bzip2 二進位程式碼 章節,加入 S.u.S.E.的。 v1.91 在 [9]使用 bzip2 配合 tar 那章□修正一個□例以及 弄清楚一些 shell 句子 。感謝 Alessandro Rubini。 更新 buzzit 工具不會去 stomp 原來的 bzip2 壓縮檔。 新增 bgrep, 像 zgrep-的工具。 v1.9 澄清 gcc 2.7.* 的問題。感謝 Ulrik Dickow 的熱心指出。 加入 Leonard Jean-Marc 很棒的配合 tar 加上 Linus 攀erlund 的瑞典文版本。 依照 Arnaud Launay 的建議修正了 wu-ftpd 章節 把譯文放到它們自己的位章節上。 v1.8 把 buzzit 和 tar.diff 放到 sgml 文件□它們應該被放置的地方。 修正拼字與 格式。感謝 Arnaud Launay 的協助我修正這份文件。:-) 殺掉 xv 計畫,因此大家不感興趣。 加上 teasers 為本文件的未來版本。 v1.7 加入 buzzit 公用程式。修正對 gnu tar 的修補。 v1.6 加入 TenThumbs 的 Netscape 致能者。 以及依據它的建議更改 lesspipe.sh 。它現在可以工作的更好了。 v1.5 加入 Arnaud Launay 的法文譯本,以及他的 wu-ftpd 檔。 v1.4 加入 Tetsu Isaji 的日文譯本。 v1.3 加入 Ulrik Dickow 給 19.30 或更高版本用的 .emacs 檔□ (還有修正給 emacs用的 jka-compr.el 修補檔。糟了! Bzip2 還沒有(?) "append" 的旗標選項。) v1.2 加入對 emacs 的修補,讓它可以自動地辦識出 .bz2 檔。 v1.1 加入對 emacs v1.0 第一回合。 2. 取得 bzip2 Bzip2 的主網頁在 [10]英國的主網站。 美國的映射站在 [11]這□。你也可以在 Red Hat 的ftp 站□ [12]找到。 2.1 Bzip2-HOWTO 各種語言版本 說法語的人可以看看 Arnaud Launay 的法文文件。 網頁版本在 [13]這□,你可 以用 ftp [14]來取得 你可以用 [15]電子郵件來連絡Arnaud 說日語的人可以看看 Tetsu Isaji的 [16]日文譯本。 你可以用上Isaji的 [17] 網站,或是用 [18]電子郵件的方式。 說瑞典語的朋友可以參閱 Linus 攀erlund 的瑞典文譯本 [19]按這。你可以用 [20]電子郵件 與 Linus 連絡。 2.2 取得 bzip2 未編譯的二進位檔 查一下主網站。 Debian 的Intel 二進位程式碼在 [21]這□。 Red Hat的 alpha 二進位程式碼在 [22]這□。 Red Hat的 Intel 二進位程式碼在 [23]這□。 Red Hat的 SPARC 二進位程式碼在 [24]這□。 Slackware的 Intel 二進位程式碼在 [25]這□。 S.u.S.E.的 Intel 二進位程式碼在 [26]這□。 你也可以從許多相類似的映射站得取得檔案。 2.3 取得 bzip2 原始程式 你可以從官方的網站 (看 [27]Getting Bzip2 ,或是 Red Hat 也有 [28]它)。 2.4 編譯 bzip2 給你的機器使用 如果你有 gcc 2.7.*,將下面這行 CFLAGS = -O3 -fomit-frame-pointer -funroll-loops 改成 CFLAGS = -O2 -fomit-frame-pointer 也就是,把 -O2 改成 -O3 并把 -funroll-loops刪掉。你也可以加入任何你在編 譯 kernel 時的 -m* 旗標 (例如像 -m486)。 避免使用 -funroll-loops 是最重要的了,因為它會造成許多的 gcc 2.7產生錯 誤的程式碼,以及全部的 gcc 2.7 產生速度慢又較胖的程式碼。 對其他的編譯 器 (lcc, egcs, gcc 2.8.x) 使用內定的 CFLAGS 就沒問題。 之後,只需 make 它,然後依照 README 來安裝它。 3. 使用 bzip2 請參閱很棒的手冊 :) 4. 配合 tar來使用 bzip2 下面有三種配合 tar 使用 bzip2 的方法,也就是 4.1 容易設立: 這個方法跟本就不必做設定。執行解開bzip2'd 的 tar包裹, 在現行目錄底下有 個 foo.tar.bz2,執行 /path/to/bzip2 -cd foo.tar.bz2 | tar xf - 成功了,但可能有常需輸入的小缺點。 4.2 容易設立,容易使用,不需要 root 的特權: 感謝 [29]Leonard Jean-Marc 貢獻這個小技巧。也謝謝 [30]Alessandro Rubini 從 csh□分類 出 bash 的。 在你的 .bashrc□,你可以加入像下面這行: alias btar='tar --use-compress-program /usr/local/bin/bzip2 ' 在你的 .tcshrc 或 .cshrc□,可用下面這行相同的: alias btar 'tar --use-compress-program /usr/local/bin/bzip2'4.3 同樣是容易使用,但需要 root 來存取。 用下面來方法來修補 gnu tar 1.12: cd tar-1.12/src; patch < /path/to/tar.diff 編譯、安裝它,你已準備就緒了。用"which tar" 和 "which bzip2"來確認這兩 個 tar 和 bzip2 有在你的 $PATH □。要使用新的 tar,只需 tar xyf foo.tar.bz2 來壓縮檔案。 要制作新的壓縮檔,同樣地: tar cyf foo.tar.bz2 檔名1 檔名2 檔名3...目錄1 目錄2... 下面是修補的地方:*** tar.c Thu Jun 11 00:09:23 1998--- tar.c.new Thu Jun 11 00:14:24 1998****************** 196,201 ****--- 196,203 ---- {"block-number", no_argument, NULL, 'R'}, {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR}, {"blocking-factor", required_argument, NULL, 'b'},+ {"bzip2", required_argument, NULL, 'y'},+ {"bunzip2", required_argument, NULL, 'y'}, {"catenate", no_argument, NULL, 'A'}, {"checkpoint", no_argument, &checkpoint_option, 1}, {"compare", no_argument, NULL, 'd'},****************** 372,377 ****--- 374,380 ---- PATTERN at list/extract time, a globbing PATTERN\n\ -o, --old-archive, --portability write a V7 format archive\n\ --posix write a POSIX conformant archive\n\+ -y, --bzip2, --bunzip2 filter the archive through bzip2\n\ -z, --gzip, --ungzip filter the archive through gzip\n\ -Z, --compress, --uncompress filter the archive through compress\n\ --use-compress-program=PROG filter through PROG (must accept -d)\n"),****************** 448,454 **** Y per-block gzip compression */ #define OPTION_STRING \! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz" static void set_subcommand_option (enum subcommand subcommand)--- 451,457 ---- Y per-block gzip compression */ #define OPTION_STRING \! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz" static void set_subcommand_option (enum subcommand subcommand)****************** 805,810 ****--- 808,817 ---- case 'X': exclude_option = 1; add_exclude_file (optarg);+ break;++ case 'y':+ set_use_compress_program_option ("bzip2"); break; case 'z':5. 使用 bzip2 來配合 less 馬上解壓縮 bzip2 檔,例如,在不必先 bunzip2 檔案的前提下即可用 "less" 到它們身上,你可以做個 lesspipe.sh (man less),像下面:#!/bin/sh# This is a preprocessor for 'less'. It is used when this environment# variable is set: LESSOPEN="|lesspipe.sh %s" case "$1" in *.tar) tar tvvf $1 2>/dev/null ;; # View contents of various tar'd files *.tgz) tar tzvvf $1 2>/dev/null ;;# This one work for the unmodified version of tar: *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;#This one works with the patched version of tar:# *.tar.bz2) tyvvf $1 2>/dev/null ;; *.tar.gz) tar tzvvf $1 2>/dev/null ;; *.tar.Z) tar tzvvf $1 2>/dev/null ;; *.tar.z) tar tzvvf $1 2>/dev/null ;; *.bz2) bzip2 -dc $1 2>/dev/null ;; # View compressed files correctly *.Z) gzip -dc $1 2>/dev/null ;; *.z) gzip -dc $1 2>/dev/null ;;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -