京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

Mac版wgetコマンドのプログレス・ログ詳細を表示させないTips

はじめに - 問題提起

wgetコマンドを使ってたら、そのデフォルトログが冗長で嫌になりませんか??

今回の記事では、その対策として、ログを非表示にする方法を紹介します。

wgetの使い方の基本は、過去の記事を参考のこと。

skume.net

skume.net

Googleドライブからのファイルダウンロード

Googleドライブに置いてあるZipファイル(10MBくらい)のwgetダウンロードを試しにやってみます。

まずは、Macのターミナルを起動します。

#ターミナル上でのwgetダウンロード実行
wget -r "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo"
#OR
wget -r "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -O test.zip

#-r, --recursive: ダウンロードを再帰的に行う
#-O: 複数ファイルを一つに連結して別名保存

##(以下、出力ログ)
#--2021-08-09 17:28:54--  https://drive.google.com/uc?export=view&id=
#1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo
#drive.google.com (drive.google.com) をDNSに問いあわせています... 
#2404:6800:4004:80a::200e, 172.217.161.78
#drive.google.com (drive.google.com)|2404:6800:4004:80a::200e|:443 
#に接続しています... 接続しました。
#HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
#場所: https://doc-14-4o-docs.googleusercontent.com/docs/securesc/
#ha0ro937gcuc7l7deffksulhg5h7mbp1/48tuvarfgjr41bb25vc44vm2nots5rtq/
#1628497725000/15705379774912454503/*/1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo?e=view [続く]
#警告: HTTPはワイルドカードに対応していません。
#--2021-08-09 17:28:55--  https://doc-14-4o-docs.googleusercontent.com/
#docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/48tuvarfgjr41bb25vc44vm
#2nots5rtq/1628497725000/15705379774912454503/*/1MRdPXshHQshYszUpcLvNf-
#FjCkPCGdLo?e=view
#doc-14-4o-docs.googleusercontent.com (doc-14-4o-docs.googleusercontent.com) 
#をDNSに問いあわせています... 2404:6800:4004:821::2001, 172.217.25.97
#doc-14-4o-docs.googleusercontent.com (doc-14-4o-docs.googleusercontent.com)|
#2404:6800:4004:821::2001|:443 に接続しています... 接続しました。
#HTTP による接続要求を送信しました、応答を待っています... 200 OK
#長さ: 特定できません [application/zip]
#`drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo' に保存中
#
#drive.google.com/u     [       <=>    ]  12.60M  8.62MB/s 時間 1.5s     
#
#2021-08-09 17:28:57 (8.62 MB/s) - `drive.google.com/uc?
#export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo' へ保存終了 [13208722]
#
#終了しました --2021-08-09 17:28:57--
#経過時間: 3.7s
#ダウンロード完了: 1 ファイル、13M バイトを 1.5s で取得 (8.62 MB/s)

うーん、ログが多い。これは冗長だ。。。問題だ!!

デフォルトログ表示への対策

結局のところ、wgetのオプションで、-q-dあるいは-oオプションを付与すると解決します。

以下に、それらのオプションについて説明します。

  • -q, --quiet: 処理結果の非表示

  • -b, --background: 処理をバックグラウンド実行。また、-oオプションが非指定の場合、処理結果をwget-logに書き込む。

  • -o, --output-file=: 処理結果の別名保存

次に、それらのオプションを付けて、wgetの実行をしてみます。

#q実行
wget -q "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -O test.zip
#(何も出ない)

#b実行
wget -b "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -O test.zip
#バックグラウンドで継続します、pidは 2597。
#出力を `wget-log' に書き込みます。

#o実行
wget "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -o test.zip
#(何も出ない、、一時ファイル?)

-bだと出力ログのメッセージが少しでるものの、 これらオプションをつけることで、ログ表示はほぼ無くなりました!勝利!!

あと、-oだと、一時ファイルが現在のディレクトリに残るのが気になりますが。

以上をまとめると、ターミナル実行の場合には、-q(あるいは-b)をオプションとして付与しておくのが無難と思います。

R言語でのwget実行

次に、R環境での実行例を示します。

これで、Rコンソールでの実行エラーも減るので助かります。

#Rでの実行例
system('wget -q "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -O test.zip')

#OR

system('wget -b "https://drive.google.com/uc?export=view&id=1MRdPXshHQshYszUpcLvNf-FjCkPCGdLo" -O test.zip')

R環境だと、wget実行中に、Rコンソールが占有されるので、 -bでバックグラウンド実行しておくのがオススメです。

参考資料

www.itsenka.com