用shell写的一个文件打包和自解包脚本

用shell写的一个文件打包和自解包脚本

功能:实现对当前目录下的所有文件和文件夹打包,并通过打包后的文件自动解包!
复制内容到剪贴板
代码:
for file in `ls`
do
    if [ -f $file ]
    then
        echo "cat>$file<<\END_OF_DATA"
        cat $file
        echo "END_OF_DATA"
    else
        if [ -d $file ]
        then
            echo "mkdir $file"
            echo "cd $file"
            cd $file
            mytar
            echo "cd ../"
            cd ../
        fi
    fi
done
将以上内容保存至 mytar ;chmod +x mytar; cp mytar /bin/mytar
假设你现在处于目录 dir下,要想对该目录打包
mytar>../pack  (***输出的文件不能在当前目录中)
生成的pack文件中就包含了所有文件和目录

自解包
chmod +x pack
./pack
ok!!      
不错. 只是对于下面产生的文件就不能正常工作了:
复制内容到剪贴板
代码:
echo -n 12345 > file
另外, Linux 有个类似此功能的工具 shar 很好用的       
是的,的确有问题

不过如果把命令改成
sh  mytar>../pack
结果就对了      
ubu仓库的真不少东东
复制内容到剪贴板
代码:
[No.373 01:21:02 ~ ]# apt-cache show sharutils
Package: sharutils
Priority: optional
Section: utils
Installed-Size: 384
Maintainer: Santiago Vila <sanvila@debian.org>
Architecture: i386
Version: 1:4.2.1-11ubuntu2
Depends: libc6 (>= 2.3.2.ds1-4), debianutils (>= 1.6)
Conflicts: shar, uuencode
Filename: pool/main/s/sharutils/sharutils_4.2.1-11ubuntu2_i386.deb
Size: 110642
MD5sum: c950e59200e4196bc0e2429bb55f6e16
Description: shar, unshar, uuencode, uudecode
`shar' makes so-called shell archives out of many files, preparing
them for transmission by electronic mail services.  `unshar' helps
unpacking shell archives after reception.  Other related utility
programs help with other tasks.
.
`uuencode' prepares a file for transmission over an electronic
channel which ignores or otherwise mangles the eight bit (high
order bit) of bytes.  `uudecode' does the converse transformation.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu