Linux上的无痛文件提取

Thinkstock.

从Linux系统中的档案中提取文件的文件比牙齿提取相当不那么痛苦,但有时似乎更复杂。在这篇文章中,我们将看一下您如何轻松地从任何类型的存档中解压缩文件,您可能会在Linux系统上遇到。

它们有一堆 - 从.gz到.tbz2文件的一切都有一些文件命名的一些变体。当然,您可以记住可用于从存档中提取文件的所有各种命令以及它们所提供的选项,但您也可以将所有诀容存入脚本并停止担心详细信息。

在此帖子中,我们将一系列提取命令组装成一个脚本,调用正确的命令,根据存档文件名取决于提取文件归档的内容。该脚本从某些命令开始验证文件名是否已作为参数提供,或者要求运行脚本的人提供一个。

#!/ bin / bash如果[$#-eq 0];然后echo-n“filename>”读取文件名else filename = $ 1 fi如果[!-f“$ filename”];然后回显“没有这样的文件:$ filename”退出$?FI.

知道了?如果没有提供参数并使用提供的参数,则该脚本提示文件名。然后验证文件实际存在。如果没有,脚本退出。

下一步是使用BASH CASE语句来调用归档的适当提取命令,具体取决于其名称。对于其中一些文件类型(例如,.bz2),其他命令比tar也会有效,但我们只包含每个文件命名约定的一个提取命令。因此,这是具有各种存档文件名的案例语句。

案例$ filename在* .tar)tar xf $ filename ;;* .tar.bz2)tar xjf $ filename ;;* .tbz)tar xjf $ filename ;;* .tbz2)tar xjf $ filename ;;* .tgz)tar xzf $ filename ;;* .tar.gz)tar xzf $ filename ;;* .gz)gunzip $ filename ;;* .bz2)bunzip2 $ filename ;;* .zip)解压缩$ filename ;;* .z)解压缩$ filename ;; *) echo "No extract option for $filename" esac

如果向脚本提供的文件具有与脚本已知任何已知的文件的文件扩展名,则会发出“$ filename的未提取选项”消息。如果缺少任何使用的存档类型,只需将它们添加到所需的提取命令。

将BASH标头添加到脚本的顶部,使其可执行,您应该准备好。

#!/ bin / bash如果[$#-eq 0];然后echo-n“filename>”读取文件名else filename = $ 1 fi如果[!-f“$ filename”];然后回显“没有这样的文件:$ filename”退出$?fi case $ filename在* .tar)tar xf $ filename ;;* .tar.bz2)tar xjf $ filename ;;* .tbz)tar xjf $ filename ;;* .tbz2)tar xjf $ filename ;;* .tgz)tar xzf $ filename ;;* .tar.gz)tar xzf $ filename ;; *.gz) gunzip $filename;; *.bz2) bunzip2 $filename;; *.zip) unzip $filename;; *.Z) uncompress $filename;; *.rar) rar x $filename ;; *)

如果您希望脚本显示归档的内容,请在提取归档时,将详细选项(-v)添加到每个命令参数中:

#!/ bin / bash如果[$#-eq 0];然后echo-n“filename>”读取文件名else filename = $ 1 fi如果[!-f“$ filename”];然后回显“没有这样的文件:$ filename”退出$?fi case $ filename in * .tar)tar xV.f $ filename ;;* .tar.bz2)tar xV.jf $ filename ;;* .tbz)tar xV.jf $ filename ;;* .tbz2)tar xV.jf $ filename ;;* .tgz)tar xV.zf $ filename ;;* .tar.gz)tar xV.zf $ filename ;;* .gz)gunzip-v.$ filename ;;* .bz2)bunzip2-v.$ filename ;;* .zip)解压缩-v.$ filename ;;* .z)解压缩-v.$ filename ;;*)回显“$ filename的提取选项”esac

包起来

虽然它当然可以为您可能使用的每个提取命令创建一个别名,但更容易让脚本为您遇到的每个文件类型提供的命令,而不是不必停止并解决每个命令和选项。

加入网络世界社区有个足球雷竞技appFacebook.linkedin评论是最重要的主题。
有关:

版权所有©2020.Raybet2

IT薪水调查:结果是