tarコマンドへの入力にファイルをパイプする方法

tarコマンドへの入力にファイルをパイプする方法

以下を使用してパイプされたtarファイルを解凍しようとすると、次のエラーが発生します。

$ git archive --format=tar 0af62b1 | tar -xf -C /the/path/here/
tar: -C: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

最初の部分はgit archive --format=tar 0af62b1tarファイルを出力して画面に印刷します。この出力はパラメータを使用してファイルにキャプチャできます--output file_name

2番目の部分では、ファイルの内容を指定されたパスに抽出しようとします。個別に実行すると、両方が完全に実行されgit archive 0af62b1 --output file_nameますtar -xf file_name -C /the/path/here/

この場合、なぜ配管は不可能ですか?コマンドがパイプ入力を許可するかどうかはどうすればわかりますか?

答え1

gitあなたの入力をstdin同義語にリンクしてみましょうtar -xf - -C /the/path/here/-またはもっと簡単ですtar -xC /the/path/here-デフォルトファイルです)。

答え2

問題はエラー出力に表示されます。

$ gitアーカイブ --format=tar 0af62b1 |-xf-C/the/path/here/
タール:-C:開くことができません:そのファイルまたはディレクトリはありません。
tar:回復不能エラー:すぐに終了してください。

tarに-Cというファイルを使用するように指示しましたが、これは存在しないため失敗します。

作業状況では、file_nameというファイルが提供され、ファイルが存在し、すべてがうまく機能します。

考えられる修正:コマンドから「-f -C」を削除します。

関連情報