blog
blog copied to clipboard
Linux终端extract即解压功能
在终端下工作,有时需要使用解压功能,当然你可以使用xarchiver,ark等解压软件,但是对于依赖终端的各位来说更好的办法是shell里定义解压功能. 网上的sh,bash,zsh版本有很多,但是我google一圈之后发现没有fish shell 的版本,因此我根据bash版本修改为fish版本. 下面是bash或zsh版本.
# Archives
function extract {
if [ -z "$1" ]; then
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
else
if [ -f $1 ]; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.tar.xz) tar xvJf $1 ;;
*.lzma) unlzma $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x -ad $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*.xz) unxz $1 ;;
*.exe) cabextract $1 ;;
*) echo "extract: '$1' - unknown archive method" ;;
esac
else
echo "$1 - file does not exist"
fi
fi
}
alias extr='extract '
function extract_and_remove {
extract $1
rm -f $1
}
alias extrr='extract_and_remove '
下面是我根据上面修改的fish的终端解压版本.
function extract
if test -z $argv
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
else if test -f $argv
switch $argv
case "*.tar.bz2"
tar xvjf $argv
case "*.tar.gz"
tar xvzf $argv
case "*.tar.xz"
tar xvJf $argv
case "*.lzma"
unlzma $argv
case "*.bz2"
bunzip2 $argv
case "*.rar"
unrar x -ad $argv
case "*.gz"
gunzip $argv
case "*.tar"
tar xvf $argv
case "*.tbz2"
tar xvjf $argv
case "*.tgz"
tar xvzf $argv
case "*.zip"
unzip $argv
case "*.Z"
uncompress $argv
case "*.7z"
7z x $argv
case "*.xz"
unxz $argv
case "*.exe"
cabextract $argv
case "*"
echo "extract: $argv - unknown archive method"
end
else
echo "$argv - file does not exist"
end
end
alias extr "extract "
function extract_and_remove
extract $argv
rm -f $argv
end
alias extrr "extract_and_remove "
方便依赖终端的各位使用.