LinuxSir.cn,穿越时空的Linuxsir!

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

请大家帮忙完善解压缩脚本

[复制链接]
发表于 2009-4-24 15:46:44 | 显示全部楼层 |阅读模式
我用ROX的,参考网上的资料凑成了个解压缩脚本

可以实现:识别多种压缩文档,新建文件夹并解压进去

脚本不足:有密码的情况会死掉(今天发现的,郁闷死了),gz这种文件好像只能在当前目录解压,我的脚本解压不出来

希望改进:kill掉bug,多实现个功能:压缩档里只有一个文件或文件夹就直接解压,多个就解压到新建的文件夹

  1. #!/bin/sh

  2. filename="$@"
  3. bname=$(basename "$filename")
  4. dname=$(dirname "$filename")
  5. destdir1=${bname%.*}
  6. destdir2=${destdir1%.*}
  7. destdir=${destdir1}
  8. case "$bname" in
  9.         *.tar.gz | *.tar.bz2 ) destdir=${destdir2} ;;
  10. esac

  11. [ -w "$dname" ]  || dname=${HOME}

  12. if [ ! -d "$destdir" ]; then
  13.     cd "$dname"
  14.     mkdir "$destdir"
  15.     cd "$destdir"

  16.     case "$bname" in
  17.         *.tar.gz | *.tgz) tar xvzf "$filename" ;;
  18.         *.tar.bz2 ) tar xvjf "$filename" ;;
  19.         *.tar ) tar xvf "$filename" ;;
  20.         *.gz ) gzip -d "$filename" ;;
  21.         *.bz2 | *.bzip2 ) bzip2 -d "$filename" ;;
  22.         *.deb) ar x "$filename" ;;
  23.         *.zip ) unzip "$filename" ;;
  24.         *.rar ) unrar x "$filename" ;;
  25.         *.7z) 7zr x "$filename" ;;
  26.         * ) ;;
  27.     esac
  28. fi
复制代码
 楼主| 发表于 2009-6-8 18:18:09 | 显示全部楼层
gz这种文件好像只能在当前目录解压,我的脚本解压不出来
改用7z
有密码的情况会死掉
调用xterm

#!/bin/sh

filename="$@"
bname=$(basename "$filename")
dname=$(dirname "$filename")
destdir1=${bname%.*}
destdir2=${destdir1%.*}
destdir=${destdir1}
case "$bname" in
        *.tar.gz | *.tar.bz2 ) destdir=${destdir2} ;;
esac

[ -w "$dname" ]  || dname=${HOME}

if [ ! -d "$destdir" ]; then
    cd "$dname"
    mkdir "$destdir"
    cd "$destdir"

    case "$bname" in
        *.tar.bz2 | *.tbz | *.tb2 | *.tbz2) xterm -e tar xvjf "$filename" ;;
        *.tar.gz | *.tgz) xterm -e tar xvzf "$filename" ;;
        * ) xterm -e 7z x "$filename" ;;
    esac
fi
回复 支持 反对

使用道具 举报

发表于 2009-6-8 18:24:22 | 显示全部楼层
不懂,帮顶。。
回复 支持 反对

使用道具 举报

发表于 2009-6-8 22:28:06 | 显示全部楼层
。。。
我用xarchive,图形界面的,显示包里内容,选择文件解压,很方便
它使用脚本支持相应类型(相应软件另装):
/usr/share/xarchive/wrappers/zip-wrap.sh
/usr/share/xarchive/wrappers/tar-wrap.sh
/usr/share/xarchive/wrappers/rar-wrap.sh
/usr/share/xarchive/wrappers/7za-wrap.sh
/usr/share/xarchive/wrappers/arj-wrap.sh
/usr/share/xarchive/wrappers/ace-wrap.sh
/usr/share/xarchive/wrappers/deb-wrap.sh
/usr/share/xarchive/wrappers/rpm-wrap.sh
回复 支持 反对

使用道具 举报

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

本版积分规则

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