如何从终端关闭新的 Firefox 窗口?

sgu*_*sgu 11 command-line firefox

我有多个 Firefox 实例在 Ubuntu 14.04 中运行。如何从终端关闭最近打开的窗口/实例?

我尝试使用在相关问题的答案中定义的 cfct 别名,但没有用。

Jac*_*ijm 14

要创建一个命令来查找idFirefox(并关闭它)创建的最后一个窗口的,您需要wmctrl安装:

sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)

命令

然后使用命令:

wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
Run Code Online (Sandbox Code Playgroud)


解释:

wmctrl -l
Run Code Online (Sandbox Code Playgroud)

列出所有窗口,但该命令的一个重要属性是它按照创建的顺序列出窗口。

所以:

wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)

将要:

命令:

wmctrl -ic
Run Code Online (Sandbox Code Playgroud)

然后将通过其 id(优雅地)杀死最近的 Firefox 窗口。

或者更可靠:

虽然远高于在几乎所有情况下,作品的命令,也就是名称冲突的可能性很小,如果例如用“Mozilla Firefox浏览器”在其名称中存在的另一个窗口,而不是从一个窗口Firefox(不太可能,但仍然)。

因此,什么应该工作“防水”是识别(使用窗口列表窗口wmctrl -lp由)PIDfirefox,而不是在窗口名称字符串,:

wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在这个命令中,

wmctrl -l | grep 'Mozilla Firefox'
Run Code Online (Sandbox Code Playgroud)

生成包含“Mozilla Firefox”的行被替换为:

wmctrl -lp | grep "$(pgrep firefox)"
Run Code Online (Sandbox Code Playgroud)

生成包含 Firefox pid 的行(作为 的输出pgrep firefox