在我的互联网研究上,我找到了以下命令作为查找窗口进程名称的解决方案:
xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`
我只是不明白第一次之后这里会发生什么|
。
我们假设xprop _NET_WM_PID
输出为进程 ID。接下来会发生什么?为什么后面1000
会有?我有点困惑。cat
ps
答案1
xprop ... | sed ...
首先执行,然后cat
读取其输出。由于使用了反引号,cat 的输出被替换,因此ps `cat`
命令变为ps 1000
。
可以产生相同结果的替代命令是:
ps $(xprop _NET_WM_PID | cut -d= -f2)
其工作原理如下:
执行
xprop _NET_WM_PID
以检索窗口的进程 ID。单击窗口后,它会输出类似以下内容:_NET_WM_PID(CARDINAL) = 12345
- 在处拆分
=
并取第二个字段。从标准输入cut -d= -f2
获取字符串并写入标准输出。_NET_WM_PID(CARDINAL) = 12345
12345
- 最后运行
ps
命令,用$(...)
替换 的输出...
,执行的命令是ps 12345
。(附注:`...`
也可以代替$(...)
,但是)存在一些差异)