如何透過管道將檔案作為 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 0af62b1輸出一個 tar 文件,印在螢幕上。可以使用參數 將該輸出捕獲到文件中--output file_name

在第二部分中,我嘗試將文件的內容提取到指定的路徑中。當單獨運行時,兩者都可以完美運行,git archive 0af62b1 --output file_name然後是tar -xf file_name -C /the/path/here/.

為什麼在這種情況下無法進行管道傳輸?

答案1

我會嘗試將您的管道輸入git到 標準輸入的同義詞tar -xf - -C /the/path/here/-或者更簡單tar -xC /the/path/here-是預設檔)。

答案2

問題在您的錯誤輸出中給出:

$ git 檔案 --format=tar 0af62b1 |柏油-xf-C/該/路徑/此處/
tar:-C:無法開啟:沒有這樣的檔案或目錄
tar: 錯誤不可恢復: 立即退出

您告訴 tar 使用名為 -C 的文件,該文件不存在,因此會失敗。

在工作情況下,您給予一個名為 file_name 的文件,該文件存在並且一切正常。

可能的修復:刪除命令中的“-f -C”。

相關內容