linux下怎样制作自解压缩文件
windows下有很多自解压缩的exe,很多安装程序,你可以直接用右键压缩出来,那么linux下能不能制作这些自解压缩的包呢?
其实我们遇到的很多bin文件都是类似得采用的前面脚本、后面tar.gz压缩包的形式,比如jre和GoogleEarth都是这样的,但是不是所有的都是这样,比如realplayer就是一个完全的二进制文件。
以下是一个自解压缩的例子:
#!/bin/bash
sed '1,/^#here/d' $0 >a.tar
tar xf a.tar
exit
#here
把上面四行文件保存到a.sh里面,然后cat a.sh a.tar >a.bin,把a.sh添加到a.tar的头部,并改名为a.bin,然后chmod a+x a.bin,再执行./a.bin,就能自动把a.tar的内容解压出来了。当然,你也可以使用tar.gz包,甚至是7z包。sed和exit中间部分的脚本你可以自己定义,比如解压到临时目录,然后运行下面的某个程序,运行完成后删除这个目录等。
还有,很多其他类型的文件,其实是使用zip格式的,比如MSOffice 2007的docx格式,和OpenOffice.org的odt格式,其实都是zip压缩的(早期的odt是gz压缩的,后来改成zip),你把后缀改成zip解压就能看到里面的东西,类似的还有qq表情包等。
windows下有很多自解压缩的exe,很多安装程序,你可以直接用右键压缩出来,那么linux下能不能制作这些自解压缩的包呢?
其实我们遇到的很多bin文件都是类似得采用的前面脚本、后面tar.gz压缩包的形式,比如jre和GoogleEarth都是这样的,但是不是所有的都是这样,比如realplayer就是一个完全的二进制文件。
以下是一个自解压缩的例子:
#!/bin/bash
sed '1,/^#here/d' $0 >a.tar
tar xf a.tar
exit
#here
把上面四行文件保存到a.sh里面,然后cat a.sh a.tar >a.bin,把a.sh添加到a.tar的头部,并改名为a.bin,然后chmod a+x a.bin,再执行./a.bin,就能自动把a.tar的内容解压出来了。当然,你也可以使用tar.gz包,甚至是7z包。sed和exit中间部分的脚本你可以自己定义,比如解压到临时目录,然后运行下面的某个程序,运行完成后删除这个目录等。
还有,很多其他类型的文件,其实是使用zip格式的,比如MSOffice 2007的docx格式,和OpenOffice.org的odt格式,其实都是zip压缩的(早期的odt是gz压缩的,后来改成zip),你把后缀改成zip解压就能看到里面的东西,类似的还有qq表情包等。