Linux
如何通過管道將文件作為 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/
.為什麼在這種情況下管道是不可能的,我怎麼知道某個命令是否接受管道輸入?
我會嘗試將您
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”。