将所有行输出到文件中/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
命令时,该正在运行的实例本身是一个过程。
当你运行wc
命令时,这也是一个过程。
如果你cat
在管道中添加一些命令,那么每个命令也是一个进程,每个命令都会导致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
是完全无关的。