`タールC| tar x` が予期しないパスにファイルを書き込みます。

`タールC| tar x` が予期しないパスにファイルを書き込みます。

次のコマンドを使用する場合:

cd /Users/you/foo 
tar c /Users/you/x/y/z | tar x

/Users/you/x/y/zローカルディレクトリに次のパスを書き込みます。

/Users/you/foo/Users/you/x/y/z

ファイルがここに書き込まれるようにtarコマンドの1つをどのように変更しますか?

/Users/you/foo/z

私のMacOSコンピュータのMan tarはこの問題に対する明確な解決策を提供しておらず、この動作を変更できるかどうかはわかりません。

ベストアンサー1

私が物をコピーするときにすることは次のとおりです。

tar c here/is/the/stuff | (cd /where/it/should/go; tar x)

説明:stdoutの最初のパッケージは、ディレクトリを変更してからtar2番目のコマンドを実行するサブシェルである2番目のコマンドにパイプされます。たとえば、ファイル補完を使用するには、混乱する名前を処理することをお勧めします。または、作業を実行する前にディレクトリを変更するオプションを使用できます。たとえば、次のようになります。(tar-C

tar c here/is/the/stuff | tar -C /where/it/should/go -x

おすすめ記事