はじめに - 問題提起
wgetコマンドを使ってたら、そのデフォルトログが冗長で嫌になりませんか??
今回の記事では、その対策として、ログを非表示にする方法を紹介します。
wgetの使い方の基本は、過去の記事を参考のこと。
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
でバックグラウンド実行しておくのがオススメです。