ターミナルで既に実行中のプログラムを開く


10

端末を使用して既に実行中のプログラムに切り替えるにはどうすればよいですか?

例:

firefox 新しいFirefoxウィンドウを開きます。

すでに開いているFirefoxウィンドウをフォーカスするコマンドはありますか?


1
受け入れられた答えに基づいて、新しいウィンドウを開くのではなく、既存のウィンドウに焦点を当てたいと思います。明確にするために編集内容を送信しましたが、審査待ちです。
jpaugh 2016

回答:


14

ワンライナーとして

wmctrlがインストールされていると仮定します(インストールされてsudo apt-get install wmctrlいない場合は実行します)。

コマンド:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"

最後に開いたgeditウィンドウを上げます。他のアプリケーションと交換してください。

説明

pgrep gedit

geditのpidを取得します

wmctrl -lp

すべてのウィンドウとそれらが属するpidをリストします

awk '{ print $1 }'

window-id(行の最初の文字列)を分割します。

$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')

したがって、最後に作成されたウィンドウのwindow-idを見つけますgeditwmctrl -lpアプリケーションの出力に複数のウィンドウがある場合、出力には、作成順にウィンドウがリストされますtail -1)。

wmctrl -ia

続いてそのウィンドウを上げる window-id

小さなスクリプトで

...アプリケーションを引数として実行します:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • 空のファイルに保存します switchto.sh
  • 実行可能にする
  • (eg)として実行する

    /path/to/switchto.sh firefox
    

代替案?

理論的には、コマンド:

xdotool search --class gedit windowactivate

同じことをするべきです この場合、最初に見つかったウィンドウが表示されますgedit
ただし、堅牢性は低くなります。私のシステム(Unity)ではまったく何もしませんでした。


1

firefox &を使用jobsしてFirefoxを実行している場合は、その番号を確認するために使用できます。それをフォアグラウンドに書き込む%n firefoxnは、その数を表します。例:

sabrina@ubuntu:~$ jobs
[1]+ Stopped      firefox
sabrina@ubuntu:~$ fg %1

また、プログラムを「強制終了」することもできます。

sabrina@ubuntu:~$ kill %1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.