1. 概要

wget は、WebからデータをダウンロードするためのLinuxコマンドです。 このチュートリアルでは、 wget の出力をカスタマイズし、プログレスバーのみを表示します。

2. wgetオプションの使用

Webサイトからページをダウンロードすることから始めましょう:

$ wget https://www.baeldung.com
--2021-10-27 21:23:19--  https://www.baeldung.com/
Resolving www.baeldung.com (www.baeldung.com)... 104.26.12.74, 172.67.72.45, 104.26.13.74, ...
Connecting to www.baeldung.com (www.baeldung.com)|104.26.12.74|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length:  102117 (100K) [text/html]
Saving to: ‘index.html’

index.html          100%[===========================================================================>]  99.72K   352KB/s    in 0.3s

2021-10-27 21:23:20 (352 KB/s) - ‘index.html’ saved [102117/102117]

ご覧のとおり、wgetコマンドは端末に多くの情報を出力します。

2.1. プログレスバーのみを表示

プログレスバーを除くすべての出力行を削除したい場合は、 –show-progressオプションと-qオプションの組み合わせを使用できます。

$ wget https://www.baeldung.com -q --show-progress
index.html          100%[===========================================================================>] 99.72K 231KB/s in 0.4s

-qオプションはwget出力をオフにし、–show-progressオプションはwgetに任意の詳細度でプログレスバーを表示するように強制します –show-progress オプションは、 GNU wget1.16以降でのみ使用可能であることに注意してください。

インストールされているwgetのバージョンは、 –versionオプションを使用してシステムで見つけることができます。

$ wget --version
GNU Wget 1.20.1 built on linux-gnueabihf

2.2. 進行状況インジケーターの変更

wget では、ダウンロードの進行状況を表示するためのインジケーターはバーとドットです。 デフォルトでは、バーインジケーターが使用されます。 ただし、出力がTTYでない場合は、デフォルトでドットインジケーターが使用されます

–progressオプションで進行状況のタイプを設定できます。

$ wget https://www.baeldung.com -q --show-progress --progress=dot 
 0K .......... .......... .......... .......... .......... 50% 363K 0s
50K .......... .......... .......... .......... ......... 100% 751K=0.2s

各ドットは、ダウンロードされたデータの固定量を表します。

3. grepを使用する

下の場合 wget バージョン(<1.16)、 –show-progress オプションは使用できません。よりクリーンな出力にしたい行をフィルタリングできます。 たとえば、wget出力のには、ダウンロードの進行状況を示す「%」記号の行があります。 これらの行はgrepで見つけることができます。

$ wget https://www.baeldung.com  2>&1 | grep '%'
 0K .......... .......... .......... .......... .......... 50% 339K 0s
50K .......... .......... .......... .......... ......... 100% 436K=0.3s

URLに「」記号がある場合、その行も端末に出力されることに注意してください。 この場合、「=」のような別の記号を検索できます。

この場合、ドット記号がデフォルトのインジケータとして使用されます。 したがって、barパラメーターを使用し、いずれにせよドットインジケーターをオーバーライドする場合は、forceパラメーターを使用できます。

$ wget https://www.baeldung.com  2>&1 --progress=bar:force| grep '%' 
index.html    100%[===================>] 99.72K 259KB/s in 0.4s

force パラメーターは、バーインジケーターでのみ使用できることに注意してください。

4. 結論

この記事では、プログレスバーのみを設定し、wget出力の他の行を無効にする方法を学びました。 最近のwgetバージョンでは、出力行を制限する –show-progressオプションがあります。 古いバージョンでは、よりクリーンな結果を得るために、grepなどのコマンドで出力行をフィルタリングする必要がある場合があります。