python( http://Pastebin.com/mjLDk7Gk )で記述された最小限のHTTPサーバーがあり、ステータス200と本文「完了」ですべてのGETリクエストに応答するだけです。 。
私が行った場合
wget "http://localhost:9001" -O - -q
Done
しかし、-qを省略した場合:
wget "http://localhost:9001" -O -
--2015-01-12 15:28:20-- http://localhost:9001/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:9001... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: ‘STDOUT’
[<=> ] 0 --.-K/s D
[ <=> ] 4 --.-K/s in 0s
2015-01-12 15:28:20 (670 KB/s) - written to stdout [4]
#blank line here
最初の「ステータスバー」行の終わりに「D」があります。これは実際には、目的の出力の最初の文字です。端末の更新中に出力がどこかで失われたと思います。これは、より長い応答ボディでも発生します。
別の観察:出力をファイルにリダイレクトすると、再び機能します:
wget "http://localhost:9001" -O - > /tmp/file
cat /tmp/file
Done
また、非常に幅の広い端末でも発生します。 「ステータスバー」は増え続けていますが、応答本文の文字はまだ1つしかありません。
これは私の側のどこかにあるバグまたは構成の誤りですか? gnome-terminalとxterm(Ubuntu 14.04.1 LTS)で同じ動作が得られます。
一方では、-O -
を使用して、受信したデータをwget
に書き込むようにstdout
に要求します。これは、バッファリングなしで実行します。一方、-q
で抑制しない限り、wget
は進行状況情報をstderr
に書き込みます。
(> some_file
を使用して)ストリームの1つをリダイレクトしない場合、それらは両方とも端末によって同時に同時に表示されます。特にwget
は特殊文字を使用してステータスバーを表示するため、よく混ぜます。
あなたが期待するのはwget
から:
これは一時ファイルで行うことができます:
wget "http://localhost:9001" -O /tmp/some_file && cat /tmp/some_file
おそらく使用することもできます buffer :
wget "http://localhost:9001" -O - | buffer -b 1 -s 100000