从 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 -)
我是 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 -)