wgetを使用してダウンロードしたファイルをtarでどのようにパイプしますか?

wgetを使用してダウンロードしたファイルをtarでどのようにパイプしますか?

GNU Wget()を使用してダウンロードしたタールボール(.tar.gzこの場合はファイル)をパイプしたいのですが(明確ではない場合は解凍しました)方法がわかりません。私は試した:wgettar -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'

タールボールをダウンロードする前に、または何もダウンロードせずにパスセットが作成されたかどうかを確認します${DESTDIR}(タールを生成するためにタールを離れるため)。

ベストアンサー1

f標準入力からtar.gzファイルを抽出する場合は、このオプションを指定する必要はありません。このオプションtarは基本的に標準入力から読み取ることです。

コンテンツを$ DESTDIRに抽出するには、GNUtar-C(ディレクトリの変更)オプションも使用する必要があります。

また、"$ SRC_URIまたは$ DESTDIRにスペースやシェルメタ文字( - など)が含まれている場合は、変数の周りに引用符を付けました&*?

最後に、{}変数の周りの中かっこはここでは必ずしも必要ではありませんが、とにかくそのまま残しました。確かに何の害もありません。

これらすべてをまとめると、次のような結果が得られます。

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

おすすめ記事