Để tạo một lệnh tìm id
cửa sổ cuối cùng, được tạo bởi Firefox
(và để đóng nó), bạn sẽ cần wmctrl
phải được cài đặt:
sudo apt-get install wmctrl
Lệnh
Sau đó sử dụng lệnh:
wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
Giải trình:
wmctrl -l
liệt kê tất cả các cửa sổ, nhưng một thuộc tính quan trọng của lệnh là nó liệt kê các cửa sổ theo thứ tự chúng được tạo .
Vì thế:
wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
sẽ:
liệt kê tất cả các cửa sổ:
wmctrl -l
tìm những cái (dòng) với 'Mozilla Firefox' trong tên của chúng:
grep 'Mozilla Firefox'
tìm cái cuối cùng (cũng là cái cuối cùng được tạo):
tail -1
trích xuất chuỗi đầu tiên trong dòng (đó là window -id):
awk '{ print $1 }'
Lệnh:
wmctrl -ic
sau đó sẽ giết cửa sổ Firefox gần đây nhất bằng id của nó (duyên dáng).
Hoặc thậm chí đáng tin cậy hơn:
Trong khi lệnh trên hoạt động tốt trong hầu hết các trường hợp, có là một cơ hội nhỏ của cuộc đụng độ tên, nếu như một cửa sổ khác tồn tại với "Mozilla Firefox" trong tên của nó, nhưng không phải là một cửa sổ từ Firefox
(không, nhưng vẫn còn).
Do đó, những gì nên hoạt động "không thấm nước" là xác định các cửa sổ trong danh sách cửa sổ (sử dụng wmctrl -lp
) theo pid của firefox
, thay vì chuỗi trong tên cửa sổ:
wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
Như bạn có thể thấy, trong lệnh này,
wmctrl -l | grep 'Mozilla Firefox'
sản xuất các dòng chứa 'Mozilla Firefox', được thay thế bằng:
wmctrl -lp | grep "$(pgrep firefox)"
sản xuất các dòng chứa pid của firefox (là đầu ra của pgrep firefox
)