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