我知道这一定是以前问过的,我不确定要准确搜索什么,所以请原谅重复的问题。
当从上一个命令通过管道输入时,如何将变量“拉入”到正确的位置?我试图找到一个 PID,然后找到与该 PID 相关的打开文件,然后将其缩小到一个文件,然后对该文件执行命令。这是命令:
ps x | grep IINA | grep -v grep | awk '{print $1}'
好的,这给了我一个 PID,太好了。现在我想要lsof -p
那个 PID,但我不能简单地做ps x | grep IINA | grep -v grep | awk '{print $1}' | lsof -p
.
如果不做ps x | grep IINA | grep -v grep | lsof -p 'awk '{print $1}''
(再次,请原谅不正确的反引号),我该如何做我想做的事情?
该
lsof
实用程序需要命令行上的 PID,而不是其标准输入。您可以使用
这将作为其参数执行
pgrep
,IINA
并且其输出将lsof
作为选项参数传递给-p
使用命令替换的选项。如果
IINA
不是命令的名称,而是用于启动进程的命令行的一部分,则将-f
标志添加到pgrep
.如果您获得多次点击,
pgrep
您可能希望使用-n
(获取最近开始的匹配过程)或-o
(获取最旧的匹配过程),如果您的pgrep
实现支持这一点,或者您可以使用为 . 创建一个以逗号分隔的 PID 列表
lsof -p
。