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

来源:互联网 发布:深圳淘宝代运营 编辑:程序博客网 时间:2024/06/08 12:27
    本人也是接触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 0fiif [ $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)';;esacelse#解压至#匹配相应的文件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)';;esacfi
PS:我只写了四种解压方式,不过你要多少就可以加多少,在case里面加入即可。这种解压器自己用用就好,因为会考虑到有些系统没有安装相应的解压软件。就会报命令语法错误的warning,比如你要解压rar,系统就得装rar的解压器。如果有我写的不合理的地方,欢迎大神指教!
                                             
0 0
原创粉丝点击