Pipe

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

  • August 20, 2019

我嘗試將流從 wget 傳輸到 tar 並將其提取到特定位置。

該文件由 wget 下載,但未使用 tar 解壓縮:

war="/var/www/html"
domain="example.com"
downloaded_file="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
wget -P "${war}" "${downloaded_file}" | tar -xzvf ${downloaded_file} --transform="s,^${downloaded_file},${domain},"

set -x錯誤:

焦油:無法辨識的選項:

`–transform=s,^ https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz,example.com,'

為什麼將流從 wget 傳輸到 tar 並將其提取到特定位置失敗?

您可以通過指示wget寫入文件的標準輸出來組合這兩個命令並跳過寫入文件:

wget https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz -O - |
tar -xzvf -

這將導致tar’ 的輸出與wget’ 進度指示器混合,因為它會在wget下載時開始提取 tarball,因此您可能需要調整輸出選項。

您可以使用tar-C選項來控制提取文件的位置:

wget https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz -O - |
tar -xzvf - -C /var/www/html

目標目錄需要在命令執行之前存在,所以mkdir如果需要,首先它。

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