一个用来提取各种类型的文件的Bash函数

时间:2020-03-21 11:42:33  来源:igfitidea点击:

有许多应用程序可用于提取各种类型的存档文件。
对我们而言,记住每个存档工具的所有选项和参数将很困难。
下面是一个简单的Bash函数,用于提取Linux中各种类型的文件档案。

此Bash函数能够提取最常用的存档格式,例如.tar.bz2,.tar.bz,.bz2,.rar,.zip和.7z等。
我们无需使用实际的存档应用程序提取存档文件!只需将此函数添加到“~/bashrc”文件中,然后调用它以提取存档文件即可。
它将自动查找并使用适当的存档工具来提取文件。
无需记住标志和选项!

Bash函数提取各种类型的文件档案

打开“~/.bashrc”文件:

$nano ~/.bashrc

在末尾添加以下代码段:

# Bash Function To Extract File Archives Of Various Types
extract () {
     if [ -f  ] ; then
         case  in
             *.tar.bz2)   tar xjf      ;;
             *.tar.gz)    tar xzf      ;;
             *.bz2)       bunzip2      ;;
             *.rar)       rar x        ;;
             *.gz)        gunzip       ;;
             *.tar)       tar xf       ;;
             *.tbz2)      tar xjf      ;;
             *.tgz)       tar xzf      ;;
             *.zip)       unzip        ;;
             *.Z)         uncompress   ;;
             *.7z)        7z x     ;;
             *)           echo "'' cannot be extracted via extract()" ;;
         esac
     else
         echo "'' is not a valid file"
     fi
}

按“ Ctrl + o”,然后按Enter以保存文件,然后按“ Ctrl +” x退出文件。
运行以下命令以使更改生效:

$source ~/.bashrc

从现在开始,我们只需调用此函数即可提取各种类型的存档文件。

例如,我将使用命令提取“ .7z”存档文件类型:

$extract archive.7z

输出示例:

7-Zip [64] 16.02 : Copyright (c) 1999-2015 Igor Pavlov : 2015-05-21
p7zip Version 16.02 (locale=en_IN,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz (206A7),ASM)
Scanning the drive for archives:
1 file, 16013693 bytes (16 MiB)
Extracting archive: archive.7z
-
Path = archive.7z
Type = 7z
Physical Size = 16013693
Headers Size = 1204
Method = LZMA:23
Solid = +
Blocks = 1
Everything is Ok                                                               
Folders: 21
Files: 37
Size:       16625007
Compressed: 16013693

同样,要提取“ .zip”类型的文件,命令将是:

$extract archive.zip

请注意,在使用此功能之前,我们必须已经安装了适当的存档管理器。
如果系统上没有安装受支持的存档工具,我们将收到以下错误消息:

$extract archive.zip 
bash: /usr/bin/unzip: No such file or directory

该脚本的原始作者是未知的。
Internet上的多个地方都提到了此脚本。