wcがps出力で誤った結果を得る理由

wcがps出力で誤った結果を得る理由

すべての行をファイルに出力/tmp/ps.txt

$ ps -e >/tmp/ps.txt    

計算するには、wc -lを使用してください。

$ wc -l /tmp/ps.txt
172

数を計算するためにファイルをエクスポートする必要はありません。

$ ps -e | wc -l
173

ps -e | wc -l 追加の行を追加するのはなぜですか?

私はそうは思わないCtrl-Dに正しい説明があります私の質問に。

$ echo "test" | wc -l
1

端末でこれを試してください。次のように2が生成されます。Ctrl-Dは言うでしょう

答え1

追加の行は実行中のwcプログラムです。 ps以降ではなく同時に実行されます。

答え2

Ctrl-Dへの回答そうだね

psコマンドが何であるかを理解していないようです。~のため。システムのプロセスを一覧表示します。

コマンドを実行すると、ps実行中のインスタンスがそれ自体それは一つのプロセスです。

コマンドを実行することもwc1つのプロセスです。

パイプラインにいくつかのコマンドを追加すると、各コマンドもcat1つのプロセスになり、各コマンドの結果はさらに1行ps出力されます。

[vagrant@localhost ~]$ ps | wc -l
4
[vagrant@localhost ~]$ ps | cat | wc -l
5
[vagrant@localhost ~]$ ps | cat | cat | wc -l
6
[vagrant@localhost ~]$ ps | wc -l
4
[vagrant@localhost ~]$ ps
  PID TTY          TIME CMD
22912 pts/0    00:00:00 bash
29651 pts/0    00:00:00 ps
[vagrant@localhost ~]$ 

「1」が表示されるという事実はecho "test" | wc -l全く関係がない。

関連情報