为什么这个 wmctrl 脚本不移动 windows
Why does this wmctrl script not move the windows
wmctrl -l | awk '{ if ( == "Android") print " "" "" "" "}' | while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done
好的,我知道这有点难读,让我分解一下。
wmctrl -l
将列出所有由 wmctrl 控制的 windows。我的输出如下。
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 ( == "Android") print " "" "" "" "}'
) 抓取第 4 个元素是 "Android" 的所有行并打印接下来的 4 个元素产生以下...
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558
这些都是正确的windows我要搬家,wmctrl需要带-r参数传入
最后我用| while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done
使用每个window像Android Emulator - droid8:5554
用wmctrl命令移动window。
否 WINDOWS 移动!!
如果我将代码更改为 wmctrl -l | awk '{ if ( == "Android") print " "" "" "" "}' | 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
如果我然后将任何行复制并粘贴到终端并执行终端正确运行它并移动 window.. 所以我想知道为什么脚本不起作用!
预先感谢您的帮助,我猜这是 when/how bash evals 命令和变量替换值的问题。
感谢您的帮助!
删除“$line”周围的转义符,即将 ...do wmctrl -r \"$line\"...
更改为 ...do wmctrl -r "$line"...
。
wmctrl -l | awk '{ if ( == "Android") print " "" "" "" "}' | while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done
好的,我知道这有点难读,让我分解一下。
wmctrl -l
将列出所有由 wmctrl 控制的 windows。我的输出如下。
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 ( == "Android") print " "" "" "" "}'
) 抓取第 4 个元素是 "Android" 的所有行并打印接下来的 4 个元素产生以下...
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558
这些都是正确的windows我要搬家,wmctrl需要带-r参数传入
最后我用| while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done
使用每个window像Android Emulator - droid8:5554
用wmctrl命令移动window。
否 WINDOWS 移动!!
如果我将代码更改为 wmctrl -l | awk '{ if ( == "Android") print " "" "" "" "}' | 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
如果我然后将任何行复制并粘贴到终端并执行终端正确运行它并移动 window.. 所以我想知道为什么脚本不起作用!
预先感谢您的帮助,我猜这是 when/how bash evals 命令和变量替换值的问题。
感谢您的帮助!
删除“$line”周围的转义符,即将 ...do wmctrl -r \"$line\"...
更改为 ...do wmctrl -r "$line"...
。