一个Linux的解压脚本

来源:互联网 发布:coincola 知乎 编辑:程序博客网 时间:2024/05/22 14:02

由于老是记不住各种压缩包的解压指令,于是就把解压的通用方式写到了脚本里面(只包含了部分压缩格式的解压,可以按需求自己添加即可),现在分享出来。使用方式很简单:

unpkg.sh ./aaabbb.tar.gz即可。

把unpkg放到/usr/bin下面(或者自己修改PATH也行),并添加可执行权限即可。

#!/bin/sh# 用于解压缩# 使用例子是:# ./unpkg.sh -p *****.****# 参数:-p 后面跟压缩包### 或者直接后面跟名字# ./unpkg.sh  *****.****## 作者:LeeFeng 474609810@qq.com# 时间:2014-07-07### 例如:如果PKG_NAME是123.456.789# 从开头,去掉最大匹配,得到 789# FILE_FMT=${PKG_NAME##*.}# echo "FILE_FMT = $FILE_FMT"# 从开头,去掉最小匹配,得到 456.789# FILE_FMT=${PKG_NAME#*.}# echo "FILE_FMT = $FILE_FMT"# FILE_FMT=${PKG_NAME%%*.tar.gz}# echo "FILE_FMT = $FILE_FMT"# 最小匹配# FILE_FMT=${PKG_NAME%*.tar.gz}# echo "FILE_FMT = $FILE_FMT"##B_DEBUG=0PKG_NAME=""B_HAVE_P=0# 是否有-p#遍历参数for((i=1;i<=$#;i++));doparam_value=$(eval echo \${${i}})#echo "param${i} : ${param_value}"if [ "$param_value" = "-p" ]theni_1=`expr $i + 1`;PKG_NAME=$(eval echo \${${i_1}});B_HAVE_P=1elif [ "$param_value" = "-d" ];thenB_DEBUG=1#echo "using debug"fidoneif [ $B_HAVE_P = 0 ];thenPKG_NAME=$1fi#echo "PKG_NAME = ${PKG_NAME}"# 检测if [ "$PKG_NAME" = "" ] ; thenecho "Error : program name is invalid,name is empty . use -p."exit 3fi# 确定文件的格式,从最复杂的方式开始匹配FILE_FMT=""CMD=""while truedo# 做最大匹配FILE_FMT=${PKG_NAME%%*.tar.gz}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.tar.gz"CMD="tar -xzf "breakfiFILE_FMT=${PKG_NAME%%*.gz}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.gz"CMD="gunzip "breakfiFILE_FMT=${PKG_NAME%%*.zip}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.zip"CMD="unzip "breakfiFILE_FMT=${PKG_NAME%%*.tar.bz2}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.tar.bz2"CMD="tar -xjf "breakfiFILE_FMT=${PKG_NAME%%*.tar.Z}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.tar.Z"CMD="tar -xZf "breakfiFILE_FMT=${PKG_NAME%%*.Z}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.Z"CMD="uncompress "breakfiFILE_FMT=${PKG_NAME%%*.rar}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.rar"CMD="unrar e "breakfiFILE_FMT=${PKG_NAME%%*.tar}if [ "$FILE_FMT" != "$PKG_NAME"  ] ; thenecho "the file format is: *.tar"CMD="tar -xvf "breakfibreakdoneif [ "$CMD" = "" ];thenecho "Error : unsurported compressed file : $PKG_NAME"exit 1fi# 开始运行echo "start unpackage : $CMD $PKG_NAME"$CMD $PKG_NAMEif [ $? != 0  ] ; thenecho "unpackage faild!"exit 2fiecho "unpackage end"



0 0
原创粉丝点击