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を残して生成したため)、作成されなかった。
Stdinからtar.gzファイルを抽出するので、f
オプションを指定する必要はありません。tar
はデフォルトでstdinからの読み取りになります。
内容を$ DESTDIRに抽出する場合は、GNU tar
の-C
(ディレクトリの変更)オプションも使用する必要があります。
$ SRC_URIまたは$ DESTDIRにスペースまたはシェルメタ文字が含まれている場合に備えて、変数を"
引用符で囲みます-&
、*
、?
およびお気に入り。
最後に、変数を囲む{}
中括弧はここでは厳密には必要ありませんが、とにかくそのままにしておきます。確かに害はありません。
それをすべてまとめると、次のようになります。
wget -q -O- "${SRC_URI}" | tar -xz -C "${DESTDIR}"
抽出する「ファイル」として-
を指定する必要があります。 wget
コマンドはSTDOUT(-O-
)に出力し、tarはSTDINを入力ファイルとして使用する必要があります:tar zxf -
を抽出します。