作为一个例子,我用来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
中不包含任何空格。