ในการสร้างคำสั่งที่ค้นหาid
หน้าต่างสุดท้ายที่สร้างโดยFirefox
(และเพื่อปิด) คุณจะต้องwmctrl
ติดตั้ง:
sudo apt-get install wmctrl
คำสั่ง
จากนั้นใช้คำสั่ง:
wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
คำอธิบาย:
wmctrl -l
แสดงรายการหน้าต่างทั้งหมด แต่คุณสมบัติที่สำคัญของคำสั่งก็คือว่ามันจะแสดงรายการหน้าต่างในลำดับที่พวกเขาสร้างขึ้น
ดังนั้น:
wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
จะ:
แสดงรายการ windows ทั้งหมด:
wmctrl -l
ค้นหารายการ (บรรทัด) ด้วย 'Mozilla Firefox' ในชื่อ:
grep 'Mozilla Firefox'
ค้นหาอันสุดท้าย (ซึ่งเป็นอันสุดท้ายที่สร้างขึ้น):
tail -1
แยกสตริงแรกในบรรทัด (ซึ่งเป็นหน้าต่าง -id):
awk '{ print $1 }'
คำสั่ง:
wmctrl -ic
จากนั้นจะฆ่าหน้าต่าง Firefox ล่าสุดด้วยรหัส (สง่างาม)
หรือน่าเชื่อถือมากยิ่งขึ้น:
ในขณะที่คำสั่งดังกล่าวทำงานได้ดีในทางปฏิบัติทุกกรณีที่มีเป็นโอกาสเล็ก ๆ ของการปะทะกันชื่อถ้าเช่นหน้าต่างอื่นอยู่ด้วย "Mozilla Firefox" ในชื่อของมัน แต่ไม่ได้เป็นหน้าต่างFirefox
(ไม่แน่ แต่ยังคง)
สิ่งที่ควรใช้ "กันน้ำ" คือการระบุหน้าต่างในรายการหน้าต่าง (โดยใช้wmctrl -lp
) โดยpidของfirefox
แทนที่จะเป็นสตริงในชื่อหน้าต่าง:
wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
อย่างที่คุณเห็นในคำสั่งนี้
wmctrl -l | grep 'Mozilla Firefox'
การผลิตบรรทัดที่มี 'Mozilla Firefox' จะถูกแทนที่ด้วย:
wmctrl -lp | grep "$(pgrep firefox)"
การผลิตเส้นที่มี pid ของ firefox (เป็นผลลัพธ์ของpgrep firefox
)