LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11604|回复: 17

自动解压器

[复制链接]
发表于 2004-9-9 16:52:31 | 显示全部楼层 |阅读模式
在lfs的世界里,由于接触到的都是源码。而各种源码都是各种不同的打包方式。所以把它们抓下来之后,解压是个挺麻烦的事,所以本人做了一个自动解压器,比较简单,各位如果觉得可以改进的地方,可以任意修改并加以该进。给大家享用。


  1. [color=red]做了一些修正,这个更完善些[/color]
  2. #!/bin/sh

  3. #能够自动识别各种压缩文件,并解开之

  4. BASENAME=$(basename $1)

  5. case "${1##*.}" in
  6.   gz)
  7.   if [ "${1:$((-6)):6}" == "tar.gz" ]
  8.   then
  9.     tar xvfz $1
  10.   else
  11.     gunzip $1
  12.   fi
  13.     ;;
  14.   bz2)
  15.     if [ "${1:$((-7)):7}" == "tar.bz2" ]
  16.     then
  17.       tar xvfj $1
  18.     else
  19.       bzcat $1 > ${BASENAME%.*}
  20.     fi
  21.     ;;
  22.   tgz)
  23.     tar xvfz $1
  24.     ;;
  25.   tbz)
  26.     tar xvfj $1
  27.     ;;
  28.   zip)   
  29.     mkdir ${BASENAME%.*}
  30.     unzip $1 -d ${BASENAME%.*}
  31.     ;;
  32.   rar)
  33.     mkdir ${BASENAME%.*}
  34.     unrar x $1 ${BASENAME%.*}
  35.     ;;
  36. esac
复制代码
发表于 2004-9-9 16:59:38 | 显示全部楼层
嗯,这个还不错。
给你加个精.
发表于 2004-9-12 22:25:59 | 显示全部楼层
像rar那种,unrar这软件不是每种发布版都有的吧?建议楼主搜集一套各种压缩软件的源码,做一个连发布版带这个sh在内的安装包,嘿嘿,像我等懒人就有福了。
发表于 2004-9-12 22:52:56 | 显示全部楼层
懒的,,真,有,,水平。。:):)。。。呵呵。。
发表于 2004-9-14 09:14:24 | 显示全部楼层
不错不错,在文件开始处再加入下面的一个判断:
if [ $# -ne 1 ] ;then
    echo "Usage: `basename $0` <filename >"
    exit 1
fi
这样就更完美了。
 楼主| 发表于 2004-9-14 19:00:41 | 显示全部楼层
不错不错,在文件开始处再加入下面的一个判断:
if [ $# -ne 1 ] ;then
echo "Usage: `basename $0` <filename >"
exit 1
fi
这样就更完美了。

感谢你的建议!
我以做了一些修正,主要是我实际碰到的一些问题。能够识别目录以及文件名有空格的情况,以及一些小的完善。

  1. #!/bin/sh
  2. #
  3. #AAE - Automated Archive Extractor - v$1.0
  4. #Date: 09-09-2004
  5. #
  6. #
  7. #This program can automated extracted all kinds of archive.

  8. if [ $# -ne 1 ] ;then
  9.   echo ""
  10.   echo "Usage: $0 <filename>"
  11.   exit 1
  12. fi

  13. BASENAME=$(basename "$1")

  14. case ${1##*.} in
  15.   tar)
  16.     tar xvf "$1"
  17.     ;;
  18.   gz|z|Z)
  19.     if [[ "${1:$((-6)):6}" == "tar.gz" || "${1:$((-5)):5}" == "tar.Z" ]]
  20.     then
  21.       tar xvfz "$1"
  22.     else
  23.       zcat "$1" > "${BASENAME%.*}"
  24.     fi
  25.     ;;
  26.   bz2|bz)
  27.     if [[ "${1:$((-7)):7}" == "tar.bz2" || "${1:$((-6)):6}" == "tar.bz" ]]
  28.     then
  29.       tar xvfj "$1"
  30.     else
  31.       bzcat "$1" > "${BASENAME%.*}"
  32.     fi
  33.     ;;
  34.   tgz|taz)
  35.     tar xvfz "$1"
  36.     ;;
  37.   tbz|tbz2)
  38.     tar xvfj "$1"
  39.     ;;
  40.   zip|jar)
  41.     mkdir -p "${BASENAME%.*}"
  42.     unzip "$1" -d "${BASENAME%.*}"
  43.   ;;
  44.   rar)
  45.     mkdir -p "${BASENAME%.*}"
  46.     unrar x "$1" "${BASENAME%.*}"
  47.   ;;
  48.   *)
  49.     echo "error: Sorry!I can't extract this Archive!"
  50.     exit 1
  51.   ;;

  52. esac
复制代码
发表于 2004-9-15 08:25:09 | 显示全部楼层
^_^,不错,收了。
发表于 2009-6-5 08:50:45 | 显示全部楼层
68486844
回复 支持 反对

使用道具 举报

发表于 2009-6-5 11:09:21 | 显示全部楼层
哈哈,懒得有水平。。。
回复 支持 反对

使用道具 举报

发表于 2009-6-6 22:30:47 | 显示全部楼层
参数不用这么复杂吧,xf 就可以解决大部分问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表