shell脚本小工具之万能解压和压缩器---实现思路

    本人也是接触linux很久了。但是对系统的架构也是一知半解,平时的使用情况也就是一键安装lnmp,顶多装redis,自己一直都专注于web开发,很少去接触系统运维方面的知识。一直觉得linux是一个很高大上的系统,一出错我根本无从下手。只能把错误丢给百度,或者google。我花了近一周时间去学习shell,总结起来shell脚本是一个命令行解析器,帮助用户和操作系统打交道。也遇到很多坑,if [ $type = 'en' ] 我写个if语句括号和变量一定要用空格隔开,语法特殊,跟其它语言有一定差别,比如case,esac不过学习shell的过程,让我更熟悉了vi编辑器,也发现原来可以这么玩,可以开发很多小工具,提高效率。好了,不多说了。
    实现思路:其实很简单,用户选择压缩类型,然后判断是压缩还是解压,还有文件完整名称。shell取出后缀名,根据后缀名判断压缩类型。
贴代码:
#!/bin/bash
#脚本说明
#压缩案例: sh ./ext.sh en /root/a.zip ./test 压缩类型 压缩后的文件名 要压缩的文件或者目录
#解压案例: sh ./ext.sh de ./a.zip 压缩类型 解压的文件名 (默认当前目录)
type=$1 #压缩类型,en表示压缩,de表示解压
filename=$2 #文件名
to_filename=$3 #如果是压缩则是选择压缩的文件,解压则是输出的文件路径
ext="${filename##*.}" #获取到文件名的后缀
if [ ! $filename ]
then
	#没有传入参数
	echo 'error(100)not file(tar|gz|bz2|zip|rar)'
	exit 0
fi
if [ $type = 'en' ]
then
	#压缩至
	#匹配相应的文件
	case $ext in
	'tar')
		eval "tar cvf $filename $to_filename"
		;;
	'gz')
		eval "tar zcvf $filename $to_filename"
		;;
	'bz2')
		eval "tar jcvf $filename $to_filename" 
		;;
	'zip')
		eval "zip $filename $to_filename"
		;;
	*)
		#不支持该类型
		echo 'error(101)This type is not supported(tar|gz|bz2|zip)'
		;;
	esac
else
	#解压至
	#匹配相应的文件
	case $ext in
	'tar')
		eval "tar xvf $filename"
		;;
	'gz')
		eval "tar zxvf $filename"
		;;
	'bz2')
		eval "tar jxvf $filename"
		;;
	'zip')
		eval "unzip $filename"
		;;
	*)
		#不支持该类型
		echo 'error(101)This type is not supported(tar|gz|bz2|zip)'
		;;
	esac
fi
PS:我只写了四种解压方式,不过你要多少就可以加多少,在case里面加入即可。这种解压器自己用用就好,因为会考虑到有些系统没有安装相应的解压软件。就会报命令语法错误的warning,比如你要解压rar,系统就得装rar的解压器。
如果有我写的不合理的地方,欢迎大神指教!

                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值