Aby wykonać polecenie wyszukujące id
ostatnie okno utworzone przez Firefox
(i aby je zamknąć), musisz wmctrl
zainstalować:
sudo apt-get install wmctrl
Komenda
Następnie użyj polecenia:
wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
Wyjaśnienie:
wmctrl -l
wyświetla listę wszystkich okien, ale ważną właściwością polecenia jest to, że wyświetla listę okien w kolejności, w jakiej zostały utworzone .
W związku z tym:
wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
będzie:
wyświetl wszystkie okna:
wmctrl -l
znajdź te (wiersze) z „Mozilla Firefox” w ich nazwie:
grep 'Mozilla Firefox'
znajdź ostatni (który jest również ostatnim utworzonym):
tail -1
wypakuj pierwszy ciąg z wiersza (którym jest okno -id):
awk '{ print $1 }'
Komenda:
wmctrl -ic
następnie zabije ostatnie okno przeglądarki Firefox za pomocą swojego identyfikatora (z gracją).
Lub jeszcze bardziej niezawodny:
Chociaż powyższe polecenie sprawdza się w praktycznie wszystkich przypadkach nie jest mała szansa nazwy starć, jeśli istnieje np kolejne okno z „Mozilla Firefox” w nazwie, ale nie z okna Firefox
(mało prawdopodobne, ale jednak).
Co powinno działać „wodoodporny” jest zatem zidentyfikowanie Windows na liście okna (za pomocą wmctrl -lp
) przez PID z firefox
, zamiast napisu w nazwie okna:
wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
Jak widać, w tym poleceniu
wmctrl -l | grep 'Mozilla Firefox'
produkujący wiersze zawierające „Mozilla Firefox” otrzymuje brzmienie:
wmctrl -lp | grep "$(pgrep firefox)"
produkując linie zawierające pid firefox (jako wynik pgrep firefox
)