我是Bash的新手,正在尝试解压缩tarball。到目前为止的代码:
#!/bin/bash
tar="/cdrom/java/jre1-8u181-x64tar.gz"
# Unpack tarball
gunzip < $tar | tar xf -
这会将归档文件提取到当前目录中。如何指定位置?
使用Solaris 10,Bash 3.2.51
答案 0 :(得分:3)
要将文件提取到特定目录
gunzip < $tar | tar -xf - --directory /path/to/extract/to
或
gunzip < $tar | tar -xf - -C /path/to/extract/to
答案 1 :(得分:3)
这在包括Solaris在内的所有地方都很好用,并且由于您仅在子shell中更改目录,因此不会影响您在当前会话中的位置:
gunzip < $tar | ( cd /some/where/else && tar xf -)
答案 2 :(得分:0)
tar的-xf
部分意味着提取到“ f”文件中。尝试将tar
命令更改为类似
修改
...| tar -xf - -C /path/to/your/desired/result/folder
对不起,@ pitseeker是正确的。 -C
选项告诉tar更改目录然后执行提取
答案 3 :(得分:0)
在编写命令时,命令正在当前目录中解压缩:
gunzip < $tar | tar xf -
添加“ -C”选项以为其提供备用目标目录:
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。