从 tar 文件提取到 Bash 中的不同目录

Extract from tar file to different directory in Bash

我是 Bash 的新手,正在尝试解压缩 tarball。到目前为止的代码:

#!/bin/bash
tar="/cdrom/java/jre1-8u181-x64tar.gz"

# Unpack tarball
gunzip < $tar | tar xf -

这会在当前目录中提取存档。如何指定位置?

使用 Solaris 10,Bash 3.2.51

tar的-xf部分表示解压到"f"文件中。尝试将 tar 命令更改为

编辑

...| tar -xf - -C /path/to/your/desired/result/folder

抱歉,@pitseeker 是正确的。 -C 选项告诉 tar 更改目录然后执行提取

将文件解压到特定目录

gunzip < $tar | tar -xf - --directory /path/to/extract/to

gunzip < $tar | tar -xf - -C /path/to/extract/to

如您所写,您的命令正在当前目录中解压缩:

gunzip < $tar | tar xf -

添加“-C”选项为其提供备用 tar获取目录:

gunzip < $tar | tar xf - -C /another/target/directory

请注意,Solaris tar 不理解 --directory 选项。
Solaris tar manpage.

为了完整起见,如果你有 Gnu-Tar(也可用于 Solaris),你可以使用这个更简单的命令(一次解压和解包):

tar xzf $tar -C /another/target/directory

旁注:
许多人在 tar 命令参数中使用前导破折号。那是多余的。
如果您有兴趣,请参阅答案 to this question

这在任何地方都工作得很好 - 包括 Solaris,并且因为您只更改子目录中的目录shell,它不会影响您在当前会话中的位置:

gunzip < $tar | ( cd /some/where/else && tar xf -)