Linux

如何通過管道將文件作為 tar 命令的輸入

  • November 1, 2021

嘗試使用以下命令解壓縮管道 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/.

為什麼在這種情況下管道是不可能的,我怎麼知道某個命令是否接受管道輸入?

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

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

$ git 存檔 –format=tar 0af62b1 | tar -xf -C /the/path/here/

tar:**-C:無法打開:**沒有這樣的文件或目錄

tar:錯誤不可恢復:現在退出

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

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

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

引用自:https://unix.stackexchange.com/questions/675709