换一种方式创建Linux下的自解压文件

本文介绍了如何利用Linux的tail和wc命令,结合C语言知识,创建一个自解压文件。通过在shell脚本中指定从文件的特定字节位置开始提取并解压压缩包,实现了自解压功能。对于不熟悉这种格式的用户,可以将文件扩展名改为.zip,并用常规方法加密码解压。
摘要由CSDN通过智能技术生成
看到Windows上的自解压程序双击后就自动将数据文件提取出来,很是便捷,那么如何在Linux创建自解压文件呢?方法自然是有很多的,有一天,小明又滚出去了,这回他没有想着怎样再回到教室,他很好奇,于是他搜索了一下关于如何在Linux下创建自解压文件的问题,他发现所有结果貌似都非常统一,用了tail的特性,而且用的是tail以行的方式输出。额,天下文章……,他表示深以为然。他跟我说了此事,我回他:“小明,GCQ!”

在本文中,笔者准备了2种方法创建自解压文件,其一,也是利用tail的特性,但是不使用行,而使用字节输出。其二,用C语言将zip粉饰一下门面。

tail命令有一个参数:c,可以输出最后给定数量的字节,如果应用于创建自解压文件,相比较通过行输出,笔者的强迫症使笔者觉得这样比较顺眼一些。wc命令也有一个参数:c,可以计算文件的字节数,配合awk加工一下输出便可提取出字节大小。大致思路是这样:通过创建一个含有有解压命令的shell脚本,与一个压缩包合并为一个文件,脚本中实现从自身指定位置中提取压缩包并解压。于是有了以下用于创建这个怪物的shell脚本:

#!/bin/bash
#
#make a self-decompress file
#version: 0.1
#
#Create by Daisuchuan on Ubuntu Linux.      Mar.26,2015
if [ $# != 1 ];then					#判断参数数量
echo "$0:Only support one argument."			#只支持1个参数
echo "USAGE: $0 file"					#打印帮助信息
exit 1							#异常退出
fi
tar -czf .data.tar.gz $1				#压缩文件,不加v选项
DATA_SIZE=`wc -c .data.tar.gz|awk '{print $1}'`		#取压缩文件大小
echo "#!/bin/bash">$1.run				#开始制作shell文件头
echo "tail -c $DATA_SIZE \$0 >>.data.tar.gz">>$1.run	#将最后的数据字节输出
echo "tar -xvzf .data.tar.gz">>$1.run			#解压数据,加v选项
echo "rm .data.tar.gz">>$1.run				#删除临时文件
echo "echo 'has been decompressed.'">>$1.run		#打印提示
echo "exit 0">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值