本人也是接触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的解压器。
如果有我写的不合理的地方,欢迎大神指教!

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

  1. zzlinux运维自动化shell脚本小工具

    from http://www.cnblogs.com/wang-li/p/5728461.html linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服 ...

  2. linux运维自动化脚本,linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  3. Linux命令行万能解压命令

    Linux命令行万能解压命令 Linux命令行万能解压命令 1.在用户目录创建一个.autoex.sh脚本 脚本的内容如: #copy from https://ynome.wordpress.com ...

  4. linux shell 脚本练习,shell脚本小练习

    shell脚本小练习 说明: 最近写了一些简单的小脚本,用到了一些逻辑判断语句.个人感觉挺好玩的,拿来跟大家分享下.同时也会做一些解释说明 脚本代码可能还有待优化,如果有冗余或者错误的地方还请批评指正 ...

  5. 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享

    前言 学习xss的时候翻阅资料发现了一个文件上传漏洞fuzz字典生成脚本小工具,试了试还不错,分享一下 配置 需要python2环境 使用方法 $ python upload-fuzz-dic-bui ...

  6. Linux shell脚本入门到实战详解(一)

    Linux shell脚本入门到实战详解 一.shell 入门简介 1.1 什么是 shell # 为啥介绍shell 上次出了一篇linux 命令详解,得到了很多小伙伴的认可,有部分粉丝私信我,让我 ...

  7. dmsetup remove_all 这命令干啥的_分一个小知识,服务器上的一个解压与压缩文件的命令....

    在服务器上对文件做解压操作,是一件非常常见的操作,如安装软件就有很多是要用的到这个操作的.去官网下载一个压缩包,然后解压,编译,再安装.当然网上是能找到相应的命令操作.但是每次都要去找命令,就算记住了 ...

  8. java zip加密压缩_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

  9. java zip 解压 密码_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

最新文章

  1. python单片机自动浇花_[MicroPython]TPYBoardv102自动浇花系统
  2. 多键开关 android8.0,手机桌面多键开关(SwitchPro Widget )
  3. python 在内网windows环境下pip三方包
  4. 你可能没看懂Supercell的新游戏
  5. ORACLE 错误:oralce record is locked by another user
  6. 简单选择排序_Python3三种简单排序(冒泡、插入、选择)的比较
  7. 存储图片到数据库中的一个异常信息
  8. VS2015图形界面YOLO3应用程序
  9. 微信小程序:自适应来电模拟器
  10. Python正态性检验(最简单的方法)
  11. Belief propagation
  12. 在C和C++定义最大最小整数值
  13. 【云原生之Docker实战】使用Docker部署phpMyAdmin数据库管理工具
  14. uniapp 录音_H5原生使用录音功能
  15. 疾病研究:荷兰进行的51号外显因子跳跃试验中4个孩子的肌肉中发现抗肌萎缩蛋白...
  16. 如何使用NPM来管理你的Node.js依赖
  17. git分支branch详解
  18. ORACLE中用for in 使用cursor
  19. Android多媒体(一) 音轨合成 我用双手成就你的梦想
  20. 数据库逻辑设计与物理设计

热门文章

  1. 去中心网络服务器,去IOE 去中心化_浪潮服务器_网络安全-中关村在线
  2. 相机模型-鱼眼模型/鱼眼镜头标定基本原理及实现(2)
  3. x264.exe下载
  4. C语言 找第一个只出现一次的字符
  5. on(submit,)
  6. 思维导图是什么?思维导图原理及其作用
  7. idea中Toggle Offline Mode是什么意思
  8. Pycharm配置环境本地训练yolov5(车辆检测)
  9. 32. 对c++中的smart pointer四个智能指针shared_ptr,unique_ptr,weak_ptr,auto_ptr的理解
  10. whistle 的使用