Linux下常常须要解压文件,直接在命令行敲命令解压是最便捷的。html
但问题在于,不一样的压缩格式,须要用不一样命令和不一样参数,彻底记不住啊。linux
既然记不住,那就换一种思路,假若有一条命令能解压全部文件,那就只须要记住这一条了。彷佛能够写个脚原本处理,上网一搜,果真这么现实的需求早就有人想过并实现了。git
看起来做者也是从别处学到的,就不继续溯源了。思路就是写个脚原本处理,以下github
原文在 https://ynome.wordpress.com/2013/04/14/linux-%E9%80%9A%E7%94%A8%E8%A7%A3%E5%8E%8B/bash
#写入.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+文件名便可。若是碰到不支持的,那搜索一下,加入此脚本,后面也就支持了。wordpress
我为了方便管理,是单独创建了一个.autoex.sh,并在.bashrc中加了命令行
. ~/.autoex.sh
后面了解到,tar命令支持自动检测类型,因而把原脚本中tar系列的命令的参数,都改为了xvf.code
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的介绍:http://www.javashuo.com/article/p-oaagewou-dg.html)。htm
目前脚本在我放到github上维护了,本文的脚本内容可能不是最新的,可查看 https://github.com/zqb-all/git-dot-files/blob/master/.autoex.shblog