Untar、ungz、gz、tar - 你是如何记住所有有用的选项的?

dea*_*mer 83 linux mnemonics tar gz macos

我很确定我不是唯一一个遇到以下问题的人:每次我需要在 *nix 中解压缩文件时,我都不记得所有的开关,最终在谷歌上搜索它,考虑到我需要多久解压一次,这令人惊讶做这个。

你有一个好的压缩备忘单吗?或者 tar 中所有那些讨厌的开关的助记符怎么样?

我正在将这篇文章变成一个 wiki,以便我们可以在这里创建一个不错的备忘单。

哦,关于手册页:有没有一件事他们没有帮助,它是为了弄清楚如何解压缩文件。

小智 69

或者如何使用具有高级完成功能(如 zsh 或新版本的 bash)的 shell,它会在全面的帮助下为您完成选项?:))

关于焦油:只需看看“qwerty”键盘。旁边有字母“zxcvf”。您需要“tar czvf file.tar.gz files”或“tar xzvf file.tar.gz”。

  • 我已经使用了大约 100 亿次 tar,但从未注意到所有最常用的选项都在键盘上彼此相邻。*头晕* (12认同)
  • 另一个提示是使用现代版本的 tar 提取时不需要 `z` 选项(或 `.bz2` 文件的 `j` 选项)。它会自动解压缩文件。 (2认同)

Ada*_*rce 43

焦油选项摘要

欢迎大家编辑它以添加更多深奥的开关,但这里是基础知识:

  • x - 提取文件
  • c - 创建存档
  • t - 列出文件
  • v - 详细(在处理文件时列出文件)
  • j - 使用 bz2 压缩
  • z - 使用 gz 压缩
  • f - 读取或写入文件到磁盘

例子

解压 tar.gz 文件:tar zxf tarball.tar.gz

解压一个 tar.bz2 文件:tar jxf tarball.tar.bz2

创建 tar.gz 文件:tar zcvf tarvall.tar.gz mydir/*


小智 23

有一个名为“unp”的小型 Perl 脚本。

unp filename.tar.gz
Run Code Online (Sandbox Code Playgroud)

...它提取了一切。只要您拥有正确的二进制文件,就可以处理任何压缩文件。你只是忘记了语法或任何废话。检查您的 Linux 发行版的存储库。它应该在那里(至少在 Arch、Debian 和 Ubuntu 上)。


小智 8

真的经常使用,我在提取 (x) 数据和压缩 (c) 数据之间有所不同:

提取:

tar xzf data.tgz
Run Code Online (Sandbox Code Playgroud)

压缩:

tar czf data.tgz
Run Code Online (Sandbox Code Playgroud)

此外,您还可以在 .bashrc 中添加两个函数:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}
Run Code Online (Sandbox Code Playgroud)

还有另一个不错的提取功能,它检测压缩文件的扩展名并为您完成工作:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $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        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }
Run Code Online (Sandbox Code Playgroud)


Pai*_*ten 5

只需输入tar --help,就有你的备忘单。

  • 说真的,你有没有试过阅读那个手册页? (14认同)
  • 伟大的。然后你必须仔细阅读一个手册页(在你正在寻找的东西中)告诉你大量过时的流光命令和选项,除了开发人员需要。 (3认同)
  • 我真的不明白这有什么难的。要提取档案,只需找到提取选项并将 -x 添加到您的命令中。如果您想要详细说明,请找到该选项并添加 av 以获取 -xv。然后继续,直到获得所需的确切命令。它甚至还有用于常见操作的示例命令。 (2认同)
  • Jeremy,真正的问题是你可能并不总是知道正确的词汇。因此,很容易混淆并找到类似的选项并且使它们不起作用。然后,您必须按正确的顺序放置(一些)它们。对于从 Windows 迁移的人来说,这很重要。如果他们不知道 Windows 中的脚本,则更是如此。 (2认同)