在 xargs 中选择位置参数

在 xargs 中选择位置参数

我想打开安装python的位置。检查我使用的位置。

whereis python | xargs -n 1 echo

输出 :


/usr/bin/python3.8

/usr/bin/python3.8-config

/usr/bin/python

/usr/lib/python2.7

/usr/lib/python3.8

/usr/lib/python3.9

/etc/python3.8

/usr/local/lib/python3.8

/usr/include/python3.8

虽然我可以复制 xdg 的位置,但我不想这样做。我想使用管道运算符并使用 打开位置xdg-open。但是,有一个问题。如何从上面的列表中选择参数。假设我想选择第 3 个位置。有什么办法吗?

我考虑过效仿,但没有成功。

whereis python | xargs $3 xdg-open

答案1

在将输出传递给 xargs 之前,只需对其进行过滤:

whereis python | awk '{print $3}' | xargs xdg-open

awk命令将仅打印第三个单词,因此这就是您要传递给 的全部内容xargs。当然,xargs当您只有一个参数时,使用是没有意义的。也许您想要这个?

xdg-open $(whereis python | awk '{print $3}')

或者,只需使用which将返回第一的在您的搜索字符串中出现的$PATH

xdg-open $(which python)

请注意,您无法用 打开pythonxdg-open这是毫无意义的,因为没有图形程序可以有用地打开二进制文件,更不用说脚本语言的二进制文件了。

答案2

我不认为你能做到在 xargs 中- 但你可以用 shell 来做:

whereis python | xargs sh -c 'echo "$3"' sh

然而你的具体用例并没有真正的意义,因为钒指出

答案3

xargs 的目的是重复地将输入的每项提供给命令。它不会从输入中进行“选择”。如果你想这样做,你应该使用其他工具,如 head、tail、grep。例如:

whereis python | fmt -1 | tail -n +3 | head -1

相关内容