Bzip2 Howto( 五 )


感谢 Arnaud Launay 这则节省频宽的秘诀 。下面的内容应该是放到 /etc/ftpconversions □面来达成以 bzip2 来做即时压缩及解压缩 。请确认路径 (像 /bin/compress) 要正确 。


 :.Z:::/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
 : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
 :.gz: ::/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
 : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
 :.bz2: ::/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2
 : : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2
 : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
 : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR COMPRESS
 : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR GZIP
 : : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR BZIP2



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

8. 使用 bzip2 来配合 grep
下面的公用程式,我管它叫 bgrep,事实上是把伴随在 Linux 的 zgrep 做个小更改而已 。你可以使用它来 grep,而不需先 bunzip2 档案 。


#!/bin/sh

# bgrep -- a wrapper around a grep program that decompresses files as needed
PATH="/usr/bin:$PATH"; export PATH

prog=`echo $0 | sed "s|.*/||"`
case "$prog" in
*egrep) grep=${EGREP-egrep} 
*fgrep) grep=${FGREP-fgrep} 
*)grep=${GREP-grep} 
esac
pat=""
while test $# -ne 0; do
case "$1" in
-e | -f) opt="$opt $1"; shift; pat="$1"
 if test "$grep" = grep; then# grep is buggy with -e on SVR4
 grep=egrep
 fi
-*)opt="$opt $1"
 *)if test -z "$pat"; then
 pat="$1"
 else
 break;
 fi
esac
shift
done

if test -z "$pat"; then
echo "grep through bzip2 files"
echo "usage: $prog [grep_options] pattern [files]"
exit 1
fi

list=0
silent=0
op=`echo "$opt" | sed -e "s/ //g" -e "s///g"`
case "$op" in
*l*) list=1
esac
case "$op" in
*h*) silent=1
esac

if test $# -eq 0; then
bzip2 -cd | $grep $opt "$pat"
exit $?
fi

res=0
for i do
if test $list -eq 1; then
bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
r=$?
elif test $# -eq 1 -o $silent -eq 1; then
bzip2 -cd "$i" | $grep $opt "$pat"
r=$?
else
bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
r=$?
fi
test "$r" -ne 0 && res="$r"
done
exit $res



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

9. bzip2 配合 X 下的 Netscape 来使用 。
tenthumbs@cybernex.net 说:


我找到一个可以让 Linux Netscape 来使用 bzip2 做为 Content-Encoding 就如同它使用 gzip 一样 。把下面的东东加到 $HOME/.Xdefaults 或是 $HOME/.Xresources
我使用 -s 选项,是因为选择放弃解压缩的速度来换得 RAM 的占用 。你可以把它设成你自己要的 。


Netscape*encodingFilters:
x-compress :: .Z : uncompress -cn
compress :: .Z : uncompress -cn
x-gzip :: .z,.gz : gzip -cdqn
gzip :: .z,.gz : gzip -cdqn
x-bzip2:: .bz2 : bzip2 -ds n



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

推荐阅读