为什么 wc 从 ps 的输出中得到错误的结果

sho*_*key 1 ps wc

将所有行输出到文件中 /tmp/ps.txt

$ ps -e >/tmp/ps.txt    
Run Code Online (Sandbox Code Playgroud)

用 wc -l 来计算

$ wc -l /tmp/ps.txt
172
Run Code Online (Sandbox Code Playgroud)

在不导出文件的情况下计算它。

$ ps -e | wc -l
173
Run Code Online (Sandbox Code Playgroud)

为什么ps -e | wc -l 要多一根线?

我不认为ctrl-d对我的问题有正确的解释

$ echo "test" | wc -l
1
Run Code Online (Sandbox Code Playgroud)

请在您的终端中尝试,它会像ctrl-d 所说的那样产生 2 。

ctr*_*l-d 11

额外的一行是正在运行的 wc 程序。它与 ps 同时执行,而不是在那之后执行。