将命令的输出传递给 xargs 的语法是什么?

将命令的输出传递给 xargs 的语法是什么?

作为一个例子,我用来xdotool获取桌面上的窗口列表,它输出一个数字列表,每行一个。

一个示例命令是: ,它列出了所有标题中xdotool search --name "a_program"包含该字符串的窗口。a_program

示例输出如下:

50853718
50853807
50859414

从数字获取窗口标题的示例命令是xdotool getwindowname 50854718

我将如何构建一个命令,xargs以便将每行的输出转换为xdotool getwindowname outputnumber

问题主要是关于,但欢迎xargs任何评论。xdotool

答案1

> echo "50853718 
50853807 
50859414" | xargs -n 1 echo xdotool getwindowname
xdotool getwindowname 50853718
xdotool getwindowname 50853807
xdotool getwindowname 50859414

如果这就是您所需要的,则删除echo.

xdotool search --name "a_program" | xargs -n 1 echo xdotool getwindowname

答案2

xargs为了完整起见:如果您使用的是 Bash 或兼容的 shell,您也可以不这样做。 (我不确定哪些其他 shell 接受此语法,但我想几个常见的 shell 会接受。)这样做的好处只是您不调用单独的程序(即xargs),但这在实践中不太可能被注意到。

for winid in $(xdotool search --name "a_program"); do
    xdotool windowname $winid;
done

间距并不重要,因此您可以将所有内容放在一行上。然而,这确实依赖于以下事实:返回的各个窗口 IDxdotool search中不包含任何空格。

相关内容