gpt4 book ai didi

linux - 为什么这个 wmctrl 脚本不移动窗口

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:54 33 4
gpt4 key购买 nike

wmctrl -l | awk '{ if ($4 == "Android") print $4" "$5" "$6" "$7" "}' | while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done

好吧,我知道这有点难读,让我分解一下。

wmctrl -l

将列出所有由 wmctrl 控制的窗口。我的输出如下。

0x00800024 -1 DarkNetLab xfce4-panel
0x02c00006 -1 DarkNetLab Desktop
0x06806427 0 DarkNetLab mac@DarkNetLab: /opt/Analysis
0x06000008 0 N/A Emulator
0x06000003 0 N/A Android Emulator - droid8:5554
0x0b800009 0 N/A Emulator
0x0b800003 0 N/A Android Emulator - droid11:5556
0x05400009 0 N/A Emulator
0x05400003 0 N/A Android Emulator - droid9:5558

然后 awk (| awk '{ if ($4 == "Android") print $4""$5""$6""$7""}') 获取第 4 个元素的所有行是“Android”并打印接下来的 4 个元素,产生以下...

Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558

这些都是我想要移动的正确窗口,需要使用 wmctrl 的 -r 参数传入

最后我使用| while read -r line;do wmctrl -r\"$line\"-e 1,0,0,100,100; done 使用每个窗口,例如 Android Emulator - droid8:5554 使用 wmctrl 命令移动窗口。

没有 WINDOWS 移动!!

如果我将代码更改为 wmctrl -l | awk '{ if ($4 == "Android") 打印 $4""$5""$6""$7""}' | while read -r line;do echo "wmctrl -r\"$line\"-e 1,0,0,100,100"; done 为了回显应执行的命令,我得到以下信息。

wmctrl -r "Android Emulator - droid8:5554" -e 1,0,0,0,100,100
wmctrl -r "Android Emulator - droid11:5556" -e 1,0,0,0,100,100
wmctrl -r "Android Emulator - droid9:5558" -e 1,0,0,0,100,100

如果我然后将任何行复制并粘贴到终端并执行终端正确运行它并移动窗口..所以我想知道为什么脚本不起作用!

在此先感谢您的帮助,我猜这是 bash 何时/如何评估命令并用变量值替换值的问题。

感谢您的帮助!

最佳答案

删除“$line”周围的转义符,即将 ...do wmctrl -r\"$line\"... 更改为 ...do wmctrl -r "$line"....

关于linux - 为什么这个 wmctrl 脚本不移动窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860168/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com