这个“... | ps `cat`”命令有什么作用?

这个“... | ps `cat`”命令有什么作用?

在我的互联网研究上,我找到了以下命令作为查找窗口进程名称的解决方案:

xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`

我只是不明白第一次之后这里会发生什么|

我们假设xprop _NET_WM_PID输出为进程 ID。接下来会发生什么?为什么后面1000会有?我有点困惑。catps

答案1

xprop ... | sed ...首先执行,然后cat读取其输出。由于使用了反引号,cat 的输出被替换,因此ps `cat`命令变为ps 1000

可以产生相同结果的替代命令是:

ps $(xprop _NET_WM_PID | cut -d= -f2)

其工作原理如下:

  1. 执行xprop _NET_WM_PID以检索窗口的进程 ID。单击窗口后,它会输出类似以下内容:

    _NET_WM_PID(CARDINAL) = 12345
    
  2. 在处拆分=并取第二个字段。从标准输入cut -d= -f2获取字符串并写入标准输出。_NET_WM_PID(CARDINAL) = 1234512345
  3. 最后运行ps命令,用$(...)替换 的输出...,执行的命令是ps 12345。(附注:`...`也可以代替$(...),但是)存在一些差异

相关内容