当 shell 位于其他地方时,使用 tar 将文件解压到目录

当 shell 位于其他地方时,使用 tar 将文件解压到目录

我以为这是一个很容易回答的问题,但无论我走到哪里,每个人都希望 tar 与 shell 位于同一目录中。

我的文件位于:

/tmp/my_file.tar.gz

我想将其解压到以下目录:

/opt/

我的 shell 目前位于:

~/

答案1

  1. GNUtar有一个-C(或--directory)选项可供您使用。例如

    tar -C /opt -x -z -f /tmp/my_file.tar.gz
    

    或者

  2. 你可以使用一个简单的子shell。例如

    (cd /opt; tar -xvzf /tmp/my_file.tar.gz)
    

    在此之后,您的当前目录仍为~/cd只会影响子 shell。此方法对于缺少选项或等效选项的命令和实用程序很有用-C

请注意,必须确保 tar 文件中存储的路径是相对路径不是绝对路径。这由用于创建 tar 文件的命令决定。您可以使用tar -tzf ...并检查路径的第一个字符来检查这一点(例如/foo/...是绝对路径,foo/...还是./foo/...相对路径)。如果以 root 身份运行此操作,请特别小心。如果在一长串相对路径中出现/etc/passwd或更糟糕的情况,您将会陷入困境。但请参阅GNU tar -P 选项- 这可能在您的特定平台上不会出现问题。我会在继续操作之前仔细检查。

相关内容