wgetの出力を解凍された入力にリダイレクトする方法は?

wgetの出力を解凍された入力にリダイレクトする方法は?

ここからファイルをダウンロードする必要があります協会。ダウンロードしたファイルはzipファイルなので、現在のフォルダに解凍する必要があります。

通常、最初にダウンロードしてからunzipコマンドを実行します。

wget http://www.vim.org/scripts/download_script.php?src_id=11834 -O temp.zip
unzip temp.zip

temp.zipただし、この方法で2つのコマンドを実行し、次のコマンドを実行する前に最初のコマンドが完了するのを待ち、それを提供するファイル名を知る必要がありますunzip

wget出力をにリダイレクトできますかunzip?それはまるで

unzip < `wget http://www.vim.org/scripts/download_script.php?src_id=11834`

しかし、それはうまくいきませんでした。

bash: `wget http://www.vim.org/scripts/download_script.php?src_id=11834 -O temp.zip`: ambiguous redirect

また、wget2回実行され、ファイルが2回ダウンロードされました。

ベストアンサー1

次の理由で、ファイルを一時ファイルとしてダウンロードする必要があります(圧縮解除マニュアルページの引用)。

funzip(アーカイブの最初のメンバーのみを抽出できます)を除いて、標準入力から読み取られたアーカイブはまだサポートされていません。

次のコマンドを一緒に結合するだけです。

wget "http://www.vim.org/scripts/download_script.php?src_id=11834" -O temp.zip
unzip temp.zip
rm temp.zip

ただし、より柔軟にするには、入力を保存するためにスクリプトに入れる必要があり、誤って上書きしないようにするには、mktemp次のコマンドを使用して一時ファイルの安全なファイル名を作成できます。

#!/bin/bash
TMPFILE=`mktemp`
PWD=`pwd`
wget "$1" -O $TMPFILE
unzip -d $PWD $TMPFILE
rm $TMPFILE

おすすめ記事