터미널을 통해 이미 실행중인 프로그램 열기


10

터미널을 사용하여 이미 실행중인 프로그램으로 어떻게 전환합니까?

예를 들어 :

firefox 새로운 파이어 폭스 창을 엽니 다.

이미 열린 파이어 폭스 창에 초점을 맞추는 명령이 있습니까?


1
수락 된 답변에 따라 새 창을 열지 않고 기존 창에 초점을 맞추고 싶었습니다. 명확히하기 위해 수정 사항을 제출했지만 검토 대기 중입니다.
jpaugh

답변:


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를 찾습니다 gedit(출력 결과 wmctrl -lp는 시간 순서대로 생성 된 순서대로 창 을 나열합니다 (응용 프로그램에 여러 창이 tail -1있는 경우 마지막 창을 반환 함)).

wmctrl -ia

그 후 창을 window-id

작은 스크립트에서

... 응용 프로그램을 인수로 실행하려면 다음을 수행하십시오.

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • 빈 파일에 다음과 같이 저장하십시오. switchto.sh
  • 그것을 실행 가능하게 만드십시오
  • 다음과 같이 실행하십시오 (예 :)

    /path/to/switchto.sh firefox
    

대안?

이론적 으로 명령 :

xdotool search --class gedit windowactivate

(같은 종류) 똑같이해야한다. 이 경우 처음 발견 된 창을 올려야합니다 gedit.
그러나 덜 견고 해 보입니다. 내 시스템 (Unity)에서는 전혀 아무것도하지 않았습니다.


1

당신이 사용하는 파이어 폭스를 runned 경우 firefox &사용할 수 jobs의 수를 볼 수 있습니다. 번호 %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.