Pipe

-f 的 tar 靈活性

  • August 21, 2019

例如,在以下命令中,tar -xzv有效但tar -xzvf失敗:

wget ${target_url} -O - | tar -xzv --strip-components 1 -C ${web_application_root}/${domain}

我知道我將數據流下載到 STDOUTwget並將其作為 STDIN 管道以tar使用該數據創建(覆蓋)目錄文件。

我知道tar -xzvf失敗是因為未儲存到文件的數據流不是外殼的文件;所以告訴 tar -f“我使用文件”會破壞操作。

我有一個沒有註意到的情況,-f還有一個我忘記了我應該在管道時將其移除的情況;這些情況很可能發生,因為我幾乎總是使用-fwith tar

是否有 tar 的版本,或製作 tar 的調整,忽略-f數據流未儲存到文件的情況?

相關:

1.在 tar 中使用 -f 的基本原理是什麼

2.提取時沒有 -f 選項的 tar

3.將流從 wget 管道傳輸到 tar,並將其提取到特定位置失敗

-f不會改變tar’ 與流或文件或類似的行為有關的行為;它指定要使用的檔案的名稱

我不知道有任何變體tar可以處理-f選項沒有參數的情況,我也不知道有任何可靠的方法可以做到這一點。正如cas所說,你需要記住-f總是需要爭論。使其不易出錯的一種方法是始終將其分開。與單獨f的.-xzvf``-f

如有必要,最好始終使用-fwith ;-這避免了依賴於tar沒有-f選項的行為(這取決於編譯時選項和TAPE變數)。解決問題的一種方法是始終從-f -行動開始,並-在適當的情況下進行更改。

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