我想知道是否可以在启动 shell 脚本时关闭所有其他打开的控制台窗口,而不关闭运行 shell 脚本的控制台窗口。
我正在使用 Kubuntu 的 16.04 控制台。
提前致谢!
答案1
这与 Wayland 不兼容!如果您使用的是 Ubuntu 17.10 或更新版本,并且在登录时没有更改为使用 Xorg,则此解决方案不适合您。
对于我使用的此类任务xdotool
,您可能需要先安装它:
sudo apt install xdotool
这是我的脚本:
#!/bin/bash
search="--class xterm"
a=$(xdotool getactivewindow getwindowpid)
b="$(xdotool search $search getwindowpid %@)"
for i in $b; do
[[ $a -ne $i ]] &&
echo kill $i
done
由于您没有提到您使用哪个终端仿真器,因此我在此处编写了脚本xterm
,但您可以通过修改第二行中引用的部分轻松更改这一点。--class xterm
是与窗口类xdotool --search
的窗口匹配的选项xterm
。阅读“WINDOW COMMANDS”部分man xdotool
要了解这些选项,并测试它们,请使用
xdotool getactivewindow getwindowpid
获取活动终端窗口的 PID 和
xdotool search YOUROPTIONS getwindowpid %@
获取所有匹配的窗口的 PID YOUROPTIONS
,例如
xdotool search --all --name yourwindowsname --desktop 1 --class getwindowpid %@
匹配yourwindowsname
桌面上所有名为 的窗口1
。--all
表示两个条件都要满足(逻辑“与”),默认意思--any
相反。
当您一切就绪并且脚本输出正确的命令后,echo
从中移除以执行kill
操作。
事实证明,对于 KDE 来说,每个窗口konsole
报告的 PIDxdotool
都是相同的,所以我们需要这种略有不同的方法:
#!/bin/bash
search="--onlyvisible --class konsole"
a=$(xdotool getactivewindow)
b="$(xdotool search $search)"
for i in $b; do
[[ $a -ne $i ]] &&
xdotool windowclose $i
done