标签 解压 下的文章

从 Linux 系统的存档中提取文件没有拔牙那么痛苦,但有时看起来更复杂。在这篇文章中,我们将看看如何轻松地从 Linux 系统中可能遇到的几乎所有类型的存档中提取文件。

它们有很多格式,从 .gz 到 .tbz2,这些文件的命名方式都各有一些不同。当然,你可以记住所有从存档中提取文件的各种命令以及它们的选项,但是你也可以将所有经验保存到脚本中,而不再担心细节。

在本文中,我们将一系列提取命令组合成一个脚本,它会调用适当的命令根据文档名提取文件的内容。该脚本首先以一些命令来验证是否已经提供了一个文件名作为参数,或要求运行脚本的人提供文件名。

#!/bin/bash

if [ $# -eq 0 ]; then
    echo -n "filename> "
    read filename
else
    filename=$1
fi

if [ ! -f "$filename" ]; then
    echo "No such file: $filename"
    exit $?
fi

了解了么?如果未提供任何参数,脚本将提示输入文件名,如果存在则使用它。然后,它验证文件是否实际存在。如果不是,那么脚本退出。

下一步是使用 bash 的 case 语句根据存档文件的名称调用适当的提取命令。对于其中某些文件类型(例如 .bz2),也可以使用除 tar 之外的其它命令,但是对于每种文件命名约定,我们仅包含一个提取命令。因此,这是带有各种存档文件名的 case 语句:

 case $filename in
    *.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;;
    *)          echo "No extract option for $filename"
esac

如果提供给脚本的文件扩展名与脚本已知的扩展名都不匹配,那么会发出 “No extract option for $filename” 的消息。如果缺少你使用的任何存档类型,只需将它们与所需的提取命令一起添加即可。

将 bash 头添加到脚本顶部,使其可执行,然后就可以开始了。

#!/bin/bash

if [ $# -eq 0 ]; then
    echo -n "filename> "
    read filename
else
    filename=$1
fi

if [ ! -f "$filename" ]; then
    echo "No such file: $filename"
    exit $?
fi

case $filename in
    *.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

if [ $# -eq 0 ]; then
    echo -n "filename> "
    read filename
else
    filename=$1
fi

if [ ! -f "$filename" ]; then
    echo "No such file: $filename"
    exit $?
fi

case $filename in
    *.tar)      tar xvf $filename;;
    *.tar.bz2)  tar xvjf $filename;;
    *.tbz)      tar xvjf $filename;;
    *.tbz2)     tar xvjf $filename;;
    *.tgz)      tar xvzf $filename;;
    *.tar.gz)   tar xvzf $filename;;
    *.gz)       gunzip -v $filename;;
    *.bz2)      bunzip2 -v $filename;;
    *.zip)      unzip -v $filename;;
    *.Z)        uncompress -v $filename;;
    *)          echo "No extract option for $filename"
esac

总结

虽然可以为每个可能用到的提取命令创建别名,但是让脚本为遇到的每种文件类型提供命令要比自己停下来编写每个命令和选项容易。


via: https://www.networkworld.com/article/3564265/painless-file-extraction-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

RAR 是一种非常好的归档文件格式。但相比之下 7-zip 能提供了更好的压缩率,并且默认情况下还可以在多个平台上轻松支持 Zip 文件。不过 RAR 仍然是最流行的归档格式之一。然而 Ubuntu 自带的归档管理器却不支持提取 RAR 文件,也不允许创建 RAR 文件。

办法总比问题多。只要安装 unrar 这款由 RARLAB 提供的免费软件,就能在 Ubuntu 上支持提取 RAR 文件了。你也可以安装 rar 试用版来创建和管理 RAR 文件。

RAR files in Ubuntu Linux

提取 RAR 文件

在未安装 unrar 的情况下,提取 RAR 文件会报出“未能提取”错误,就像下面这样(以 Ubuntu 18.04 为例):

Error in RAR extraction in Ubuntu

如果要解决这个错误并提取 RAR 文件,请按照以下步骤安装 unrar

打开终端并输入:

sudo apt-get install unrar

安装 unrar 后,直接输入 unrar 就可以看到它的用法以及如何使用这个工具处理 RAR 文件。

最常用到的功能是提取 RAR 文件。因此,可以通过右键单击 RAR 文件并执行提取,也可以借助此以下命令通过终端执行操作:

unrar x FileName.rar

结果类似以下这样:

Using unrar in Ubuntu

如果压缩文件没放在家目录中,就必须使用 cd 命令移动到目标目录下。例如 RAR 文件如果在 Music 目录下,只需要使用 cd Music 就可以移动到相应的目录,然后提取 RAR 文件。

创建和管理 RAR 文件

Using rar archive in Ubuntu Linux

unrar 不允许创建 RAR 文件。因此还需要安装 rar 命令行工具才能创建 RAR 文件。

要创建 RAR 文件,首先需要通过以下命令安装 rar

sudo apt-get install rar

按照下面的命令语法创建 RAR 文件:

rar a ArchiveName File_1 File_2 Dir_1 Dir_2

按照这个格式输入命令时,它会将目录中的每个文件添加到 RAR 文件中。如果需要某一个特定的文件,就要指定文件确切的名称或路径。

默认情况下,RAR 文件会放置在家目录中。

以类似的方式,可以更新或管理 RAR 文件。同样是使用以下的命令语法:

rar u ArchiveName Filename

在终端输入 rar 就可以列出 RAR 工具的相关命令。

总结

现在你已经知道如何在 Ubuntu 上管理 RAR 文件了,你会更喜欢使用 7-zip、Zip 或 Tar.xz 吗?

欢迎在评论区中评论。


via: https://itsfoss.com/use-rar-ubuntu-linux/

作者:Ankush Das 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我想要解压一个tar文件到一个叫/tmp/data的指定目录。我该如何在Linux或者类Unix的系统中使用tar命令解压一个tar文件到不同的目录中?

你不必使用cd命令切换到其他的目录并解压。可以使用下面的语法解压一个文件:

语法

典型Unix tar语法:

tar -xf file.name.tar -C /path/to/directory

GNU/tar 语法:

tar xf file.tar -C /path/to/directory

tar xf file.tar --directory /path/to/directory

示例:解压文件到另一个目录中

在本例中。我解压$HOME/etc.backup.tar到/tmp/data目录中。首先,需要手动创建这个目录,输入:

mkdir /tmp/data

要解压$HOME/etc.backup.tar 到/tmp/data中,输入:

tar -xf $HOME/etc.backup.tar -C /tmp/data

要看到进度,使用-v选项:

tar -xvf $HOME/etc.backup.tar -C /tmp/data

示例输出:

Gif 01: tar Command Extract Archive To Different Directory Command

Gif 01: tar命令解压文件到不同的目录

你也可以指定解压的文件:

tar -xvf $HOME/etc.backup.tar file1 file2 file3 dir1 -C /tmp/data

要解压foo.tar.gz(.tgz扩展文件)包到/tmp/bar中,输入:

mkdir /tmp/bar
tar -zxvf foo.tar.gz -C /tmp/bar

要解压foo.tar.bz2(.tbz, .tbz2 和 .tb2 扩展文件)包到/tmp/bar中,输入:

mkdir /tmp/bar
tar -jxvf foo.tar.bz2  -C /tmp/bar

via: http://www.cyberciti.biz/faq/howto-extract-tar-file-to-specific-directory-on-unixlinux/

作者:nixCraft 译者:geekpi 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出