创建归档和解压的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

创建归档和解压的脚本

#1

帖子 tusooa » 2010-07-15 13:52

基本所有类型的都支持了。

代码: 全选

tlcr: 0 庚寅年六月初七日 13:42:17  ~
>> ds ac-归档.bash
#!/bin/bash
# vim :set ft=bash
scriptName=ac-归档.bash
pkgver=0.1
. scriptFunctions

help()
{
    echog """
Usage: %s [options] [files to ca]
Options:
--help Print help info
--version Print version info
-o file, --output=file Set output file
""" "$0"
}

o=/dev/stdout

while [[ $# > 0 ]] ; do
    case "$1" in
        --help)help; exit;;
        --version)version; exit;;
        -o)shift ; o="$1" ;;
        --output=*)o="${1#--output=}";;
        --)
            shift
            break;;
        -*)
            dieg "$Ec_OptionError" "Error: Unknown option \`%s'" "$1" >&2;;
        *)break;;
    esac
    shift
done

case "$o" in
    *.tar.lzma|*.tlz)
        tar --lzma -cf "$o" "$@";;
    *.tar.gz|*.tgz)
        tar -zcf "$o" "$@";;
    *.tar.bz2|*.tbz2)
        tar -jcf "$o" "$@";;
    *.tar.lzip|*.tar.lz|*.tlzip)
        tar -c "$@" | lzip -9c > "$o";;
    *.tar)tar -cf "$o" "$@";;
    *.gz)gzip -9c "$1" > "$o";;
    *.bz2)bzip2 -9c "$1" > "$o";;
    *.lzma)lzma -9c "$1" > "$o";;
    *.lzip|*.lz)lzip -9c "$1" > "$o";;
    /dev/stdout)
        tar -c "$@";;
    *)
        warng "无法根据文件名判断文件类型。使用tar。" >&2
        tar -cf "$o" "$@";;
esac

tlcr: 0 庚寅年六月初七日 13:42:52  ~
>> ds ae-解压.bash
#!/bin/bash
# vim: ft=bash
scriptName=ae-解压.bash
pkgver=0.1
. scriptFunctions

help()
{
    echog """
Usage: %s [options] [file]
Options:
--help Print this help info
--version Print version info
""" "$0"
}

while [[ $# > 0 ]] ; do
    case "$1" in
        --help)
            help;exit;;
        --version)
            version;exit;;
        --)
            shift
            break;;
        #-C|--change-directory)
        #    [ "$2" ] && { directory="$2"; shift 1; } || { echog "Error: Option error" >&2 ; echog "Error: Arg for option \`%s'not found." "$1" ; exit 1 ;}
        #    ;;
        -*)
            dieg "$Ec_OptionError" "未知选项 \`%s'" "$1" >&2
            exit 1;;
        *)break;;
    esac
    shift
done

file="$1"
[ -z "$file" ] && { dieg "$Ec_ProgramError" "没有指定文件" >&2 ; exit 1; }
shift 1

case "$file" in
    *.tar)tar -xf "$file";;
    *.tar.gz|*.tgz)tar -zxf "$file";;
    *.tar.bz2|*.tbz2)tar -jxf "$file";;
    *.tar.lzma|*.tlz)tar --lzma -xf "$file";;
    *.tar.lzip|*.tar.lz|*.tlzip)lzip -dc "$file" | tar -x;;
    *.zip)unzip "$file";;
    *.rar)rar x "$file";;
    *.gz)zcat "$file";;
    *.bz2)bzcat "$file";;
    *.lzma)lzcat "$file";;
    *.lzip|*.lz)lzip -dc "$file";;
    *)
        warng "无法根据文件名判断文件类型,尝试tar。" >&2
        tar -xf "$file";;
esac
tlcr: 0 庚寅年六月初七日 13:43:37  ~
>> 
原来有bug,都没人看出来阿 --help的
估计都是回帖不看帖的,

代码: 全选

\e9nd
(完整在终端输入)
估计这个脚本用的人不多,不过吾自己就经常用
上次由 tusooa 在 2010-07-18 14:10,总共编辑 2 次。

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 创建归档和解压的脚本

#2

帖子 tusooa » 2010-07-16 11:26

沙发自己坐。

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 创建归档和解压的脚本

#4

帖子 tusooa » 2010-07-18 9:33

顶上去。
ps:为什么回帖的就这么少。看帖38,回帖就2个。
继续围观不回贴的。

代码: 全选

] ls -ld //
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 创建归档和解压的脚本

#5

帖子 ChenFengyuan » 2010-07-18 12:38

用 -a阿 :em11
头像
zhoucga
帖子: 246
注册时间: 2009-06-12 8:55

Re: 创建归档和解压的脚本

#6

帖子 zhoucga » 2010-07-18 12:48

:em11 顶顶
青春不是人生的一段时期,而是心灵的一种状况...
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 创建归档和解压的脚本

#7

帖子 xiooli » 2010-07-18 13:01

代码: 全选

xiooli@XIOOLI> which x
x () {
        if [ -f $1 ]
        then
                case $1 in
                        (*.tar.bz2) tar xjf $1 ;;
                        (*.tar.gz) tar xzf $1 ;;
                        (*.bz2) bunzip2 $1 ;;
                        (*.rar) unrar x $1 ;;
                        (*.gz) gunzip $1 ;;
                        (*.tar) tar xf $1 ;;
                        (*.tbz2) tar xjf $1 ;;
                        (*.tgz) tar xzf $1 ;;
                        (*.zip) unzip $1 ;;
                        (*.Z) uncompress $1 ;;
                        (*.7z) 7z e $1 ;;
                        ("") 没有输入文件名! ;;
                        (*) echo "'$1' 不能通过 x 解压" ;;
                esac
        else
                echo "'$1' 不是有效文件!"
        fi
}
zsh 函数,解压的有,压缩的尚无。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 创建归档和解压的脚本

#8

帖子 tusooa » 2010-07-18 13:41

ls,一些文件格式没有支持,比如Lzma,Xz,LZip
函数里面的$1,都给加上双引号吧。

代码: 全选

("") 没有输入文件名! ;;
多余。既然判断$1在不在,有能耐的人给创建一个叫""的文件吧。
(foo),浪费空间和打字时间。还是没必要的。foo)就行了。
虽然吾也是zsher,不过写脚本用Bash。
楼上执行一下(in Zsh)

代码: 全选

试一试中文=甲乙丙丁
echo "$试一试中文"

代码: 全选

] ls -ld //
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 创建归档和解压的脚本

#9

帖子 xiooli » 2010-07-18 13:52

tusooa 写了:ls,一些文件格式没有支持,比如Lzma,Xz,LZip
函数里面的$1,都给加上双引号吧。

代码: 全选

("") 没有输入文件名! ;;
多余。既然判断$1在不在,有能耐的人给创建一个叫""的文件吧。
(foo),浪费空间和打字时间。还是没必要的。foo)就行了。
虽然吾也是zsher,不过写脚本用Bash。
楼上执行一下(in Zsh)

代码: 全选

试一试中文=甲乙丙丁
echo "$试一试中文"
靠,zsh 可以用中文做变量名阿。
ps:不会 zsh 脚本,那个是改的 bash 的 :em03
回复