zoukankan      html  css  js  c++  java
  • 自己封装Linux命令行万能解压命令

    问题背景

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

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

    解决方式

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

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

    原文在 https://ynome.wordpress.com/2013/04/14/linux-通用解压/

        #写入.bashrc或.zshrc
        ex () {
            if [[ -z “$1” ]] ; then
                   print -P “usage: e[1;36mexe[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;36mexe[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

  • 相关阅读:
    作业
    剑指Offer:链表中倒数第k个节点
    剑指Offer:反转链表
    剑指Offer:数值的整数次方
    剑指Offer:剪绳子Ⅰ和剪绳子Ⅱ
    剑指Offer:机器人的运动范围
    Linux下进程与线程的区别
    剑指Offer:调整数组顺序使奇数位于偶数前面
    剑指Offer:删除链表的节点
    剑指Offer:打印从1到最大的n位数
  • 原文地址:https://www.cnblogs.com/zqb-all/p/10854199.html
Copyright © 2011-2022 走看看