「ピング」、「カット」、「ティー」を一緒に使う

「ピング」、「カット」、「ティー」を一緒に使う

したがって、「tee」を使用すると、「ping」などのコマンドの出力をファイルだけでなく標準出力にリダイレクトできることがわかります。

たとえば、

> ping google.com | tee somefile

これにより、端末にping統計が表示され、「somefile」に書き込まれます。

「ping」の出力を修正するには、次のように「cut」を使用できます。

> ping google.com | cut -d' ' -f 1

ただし、3 つのコマンドをすべて一緒に使用する場合は、出力がなく、標準出力に空のファイルが表示されます。

> ping google.com | cut -d' ' -f 1 | tee somefile

私は何が間違っていましたか?もっと良い方法がありますか?なんだか「ティー」を正しく使わないような感じがします。どんな洞察力でも大変感謝いたします。

該当する場合は bash シェルを使用しています。

答え1

パイプコマンドが出力を非ターミナル宛先にバッファリングしています。最終的には表示されますが、出力がたくさん生成された場合、またはpingコマンドが終了した場合にのみ表示されます。

ping -c 5 google.com送信する特定の数のパケットを設定するために使用できます。これにより、pingは終了します。出力が返され、パイプは期待どおりに動作するはずです。

編集:stdbufパイプバッファリングを避け、awk一部の内部cutバッファリングを回避し、pingが継続的に実行されるようにするもう1つの回避策は次のとおりです。

ping www.google.com | stdbuf --output=0 awk '{print $1}' | tee /tmp/file

関連情報