你能解释一下为什么这个命令(pgrep -d ',' -f cmdStr | top -c -p)不起作用吗?

你能解释一下为什么这个命令(pgrep -d ',' -f cmdStr | top -c -p)不起作用吗?

在寻找如何在top控制台中过滤命令时,我找到了答案。

top -c -p $(pgrep -d',' -f string_to_match_in_cmd_line)

它工作完美。

我认为它与命令相同,因为至少我认为pgrep -d ',' -f cmdStr | top -c -p它们将致力于将输出提供pgrep给输入。top

但是,正如您所期望的,它返回一个错误top: -p requires argument

他们之间有什么不同?

答案1

不,他们不一样。考虑一下echo命令。你期待吗

echo hello asleea

printf "asleaa\n" | echo hello

生产同样的东西?在这种top ... $(...)情况下,shell 首先运行 中的内容$(...),并将输出放置在运行时的参数列表中top

当然top 可以如果您给了它一个需要参数但没有给它的标志,则可以编写它以从 stdin 读取附加值,但这不是它的实现方式。

相关内容