我想知道是否可以在啟動 shell 腳本時關閉所有其他打開的控制台窗口,而不關閉運行 shell 腳本的窗口。
我正在使用 Kubuntu 的 16.04 konsole。
先致謝!
答案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
。閱讀“視窗命令”部分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