同じ数の引数に適用されたxargs -n2の出力がパイプを介しているのかキーボードを介しているのか、他の理由は何ですか?

同じ数の引数に適用されたxargs -n2の出力がパイプを介しているのかキーボードを介しているのか、他の理由は何ですか?

を実行してxargs -n2入力してクリックx x x x xすると、Enter4倍の結果のみが得られます。

$ xargs -n2
x x x x x 
x x 
x x 

x x x x xしかし、これを同じコマンドにパイプすると、同じ数のxが表示されます。

$ echo x x x x x | xargs -n2
x x 
x x 
x

最初のケースでは、引数の数が四捨五入または切り捨てられるのはなぜですか?

答え1

最初の行では、xargsまだ2番目の引数または入力が終了するのを待っています。Ctrl-xargs を押してD残りを続行すると、5 番目の引数が単一のx引数として表示されます。

この例では、これらの動作を説明できます。

(echo "x x x x x"; sleep 5; echo "x") | xargs -n2

出力:

x x
x x
x x     # after 5 seconds

x2番目のステートメントの6番目の項目の後にecho入力ストリームが完了し、xargs最後に2番目のパラメーターがありますが、それまでは5秒待ちます。

関連情報