专栏首页QB杂货铺自己封装Linux命令行万能解压命令

自己封装Linux命令行万能解压命令

问题背景

Linux下经常需要解压文件,直接在命令行敲命令解压是最便捷的。

但问题在于,不同的压缩格式,需要用不同命令和不同参数,完全记不住啊。

解决方式

既然记不住,那就换一种思路,假如有一条命令能解压所有文件,那就只需要记住这一条了。似乎可以写个脚本来处理,上网一搜,果然这么现实的需求早就有人想过并实现了。

看起来作者也是从别处学到的,就不继续溯源了。思路就是写个脚本来处理,如下

原文在 https://ynome.wordpress.com/2013/04/14/linux-%E9%80%9A%E7%94%A8%E8%A7%A3%E5%8E%8B/

    #写入.bashrc或.zshrc
    ex () {
        if [[ -z “$1” ]] ; then
               print -P “usage: \e[1;36mex\e[1;0m < filename >”
               print -P ”       Extract the file specified based on the extension”
        elif [[ -f $1 ]] ; then
           case $1 in
             *.tar.bz2)   tar xjfv $1    ;;
             *.tar.gz)    tar xzfv $1    ;;
             *.bz2)       bunzip2v $1    ;;
             *.rar)       rar x $1       ;;
             *.gz)        gunzip $1      ;;
             *.tar)       tar xf $1      ;;
             *.tbz2)      tar xjf $1     ;;
             *.tgz)       tar xzf $1     ;;
             *.zip)       unzip $1       ;;
             *.Z)         uncompress $1  ;;
             *.xz)        xz -d $1       ;;
             *.7z)        7z x $1        ;;
             *)           echo “‘$1’ cannot be extracted via extract()” ;;
           esac
       else
         echo “‘$1’ is not a valid file”
       fi
    }

将上述脚本,直接写到.bashrc中即可。 后续想要解压某个文件,直接执行ex+文件名即可。如果碰到不支持的,那搜索一下,加入此脚本,后面也就支持了。

我的修改

我为了方便管理,是单独建立了一个.autoex.sh,并在.bashrc中加了

.  ~/.autoex.sh

后面了解到,tar命令支持自动检测类型,于是把原脚本中tar系列的命令的参数,都改成了xvf.

ex () {
        if [[ -z “$1” ]] ; then
               print -P “usage: \e[1;36mex\e[1;0m < filename >”
               print -P ”       Extract the file specified based on the extension”
        elif [[ -f $1 ]] ; then
           case $1 in
             *.tar)       tar xvf  $1    ;;
             *.tbz2)      tar xvf  $1    ;;
             *.tgz)       tar xvf  $1    ;;
             *.tar.bz2)   tar xvf  $1    ;;
             *.tar.gz)    tar xvf  $1    ;;
             *.tar.xz)    tar xvf  $1    ;;
             *.tar.Z)     tar xvf  $1    ;;
             *.bz2)       bunzip2v $1    ;;
             *.rar)       rar x $1       ;;
             *.gz)        gunzip $1      ;;
             *.zip)       unzip $1       ;;
             *.Z)         uncompress $1  ;;
             *.xz)        xz -d $1       ;;
             *.lzo)       lzo -dv $1     ;;
             *.7z)        7z x $1        ;;
             *)           echo "'$1' cannot be extracted via extract()" ;;
           esac
       else
         echo “‘$1’ is not a valid file”
       fi
}

其他

用了两年了,确实方便。但也有需要注意的,那就是,这个脚本是靠后缀名来区分文件的,要是碰到不靠谱的压缩文件制作者,搞错后缀名,就可能搞不定了。 这个时候,可以用file命令查看下文件类型,再对症下药。 实在不行,就用xdg-open命令用GUI程序打开试试(xdg-open的介绍:https://www.cnblogs.com/zqb-all/p/10666474.html)。

目前脚本在我放到github上维护了,本文的脚本内容可能不是最新的,可查看 https://github.com/zqb-all/git-dot-files/blob/master/.autoex.sh

本文地址:https://www.cnblogs.com/zqb-all/p/10854199.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nor flash之频率限制

    支持一款nor flash时,出于性能考虑,一般会查看其nor支持的最高频率以及主控端spi控制器的最高频率,以选择一个合适的运行频率。

    zqb_all
  • cp: 无法创建普通文件 : 文件已存在

    看了下 Makefile,这句非常简单,就是 cp ./xxx ../xxx 而已,本身没什么问题。

    zqb_all
  • 命令行工具PathMarker

    大概的意思就是,显示在终端上的数据会经过匹配,如果符合一定的规则,则可以按住ctrl,使用鼠标单击以触发指定操作。

    zqb_all
  • 怎样用Python解压缩*.tgz文件

    KnightPython: 正如*大熊*所说,使用tarfile模块即可: import tarfile tarobj = tarfile.open("my_...

    py3study
  • Ubuntu--tar命令

    tar zxvf ut6410-android2.1.tgz tar zcvf ut6410-android2.1.tgz ut6410-android2.1/...

    cloudskyme
  • Hacker基础之Linux篇:基础Linux命令八

    我们开始学习Linux压缩和打包基础 tar 在Linux中,打包和压缩是分两步完成的 打包 打包是将多个文件归并到一个文件中 tar -cvf test.ta...

    用户1631416
  • Linux tar 用法

    -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件

    onety码生
  • Python|二分查找算法解决包裹最低运载问题

    传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第i个包裹的重量为 weights[i]。每一天,都会按给出重量的顺序往传送带上装载包裹。装...

    算法与编程之美
  • tar 压缩中的易错项

    其原因是tar默认为相对路径,使用绝对路径的话就回报这个错,可以使用-P参数(注意大写)解决这个问题 [root@localhost test]# tar ...

    柴银磊
  • 小白Linux入门--入门篇:Linux下搭建JavaWeb环境

    1. 下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-...

    浩Coding

扫码关注云+社区

领取腾讯云代金券