Shell-Script

如何通過 tar 管道傳輸使用 wget 下載的文件?

  • October 30, 2015

我想通過管道傳輸 tarball(.tar.gz在這種情況下為文件)我使用 GNU Wget ( wget)下載tar -xzf(解壓縮它們,如果不清楚的話),但我不知道如何。我試過了:

wget -q -O- ${SRC_URI} | tar -xzf > ${DESTDIR}

wget -q -O- ${SRC_URI} | `tar -xzf` > ${DESTDIR}

wget -q -O- ${SRC_URI} | 'tar -xzf' > ${DESTDIR}

甚至沒有人接近做我想做的事。我還嘗試省略輸出組件> ${DESTDIR},讓 tar 以預設方式提取 tarball 的內容。每次嘗試通常都會返回一個錯誤,例如:

tar: option requires an argument -- 'f'

在它下載 tarball 之前,或者什麼都沒有,然後我會檢查是否${DESTDIR}已經創建了設置的路徑(因為我要離開 tar 來生成它)並且它沒有。

當您從標準輸入中提取 tar.gz 文件時,您無需指定f選項,tar預設為從標準輸入中讀取。

假設您要將內容提取到 $DESTDIR,您還需要使用 GNUtar-C(更改目錄)選項。

我還在"變數周圍加上引號,以防萬一 $ SRC_URI or $ DESTDIR 包含任何空格或 shell 元字元 - &*?

最後,{}變數周圍的花括號在這裡並不是絕對必要的,但我還是把它們留在了原處——它們當然不會造成任何傷害。

把所有這些放在一起,你會得到:

wget -q -O- "${SRC_URI}" | tar -xz -C "${DESTDIR}"

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