[总结]如何编写自解压脚本(脚本中嵌入二进制文件)

来源:互联网 发布:mac开机文件夹问号 编辑:程序博客网 时间:2024/06/03 12:29

   今天接手新的模块开发时,发现他们给我的归档脚本中有很多乱码,但是也能正常执行。

    我上网查了下,发现他们是在shell脚本中嵌入二进制字符。这样就可以在运行脚本时将二进制代码导出成一个程序,再执行

    于是我决定扩展一下,写个自解压脚本,在此之前,我们先来看学习下uudecode/uuencode命令。

    uuencode 将二进制文件进行编码,编码后的资料都以 begin 开始,以 end 作为结束。

    uudecode 将 uuencode 编码后的档案还原, uudecode 只会将 begin 与 end 标记之间的编码资料还原,程序会跳过标记以外的资料。


    示例:

          这句话是将/home/fesu/test1.tar包编码,并指定解码后生成的test2.tar文件存放到/home/fesu/target/目录下。生成的文件名可以随意指定,解码存放目录也是可以随意指定的。 编码的内容重定向到 /home/fesu/test.txt中,这个txt文本中的内容大致为:
  begin <模式> <指定的解码文件名> <数据> end
这段解码就比较简单,uudecode会根据test.txt中的begin到end块中的内容生成解码文件。解码文件就是uuencode中指定解码的文件,即/home/fesu/target/test2.tar,test2.tar其实跟test1.tar是一样的。
接下来我们开始正题,编写自解压脚本extract.sh 然后我们用/bin/uuencode /home/fesu/test1.tar /home/fesu/target/test2.tar >> extract.sh 这样我们就将归档包嵌入到脚本中,做成了一个自解压脚本。
扩展: 通过以上方法,也可以在shell脚本中嵌入其他二进制文件,做成自执行文件。
原创粉丝点击