Atom 텍스트 편집기가 닫힐 때 스크립트가 실행되도록 모니터링하고 싶습니다.
명령줄 구문을 사용하여 편집기를 열고 싶습니다 atom
. 편집기를 닫을 때 bash 스크립트를 실행하고 싶습니다.
어떻게 해야 하나요?
답변1
명령줄 구문을 사용하여 편집기를 열고 싶습니다
atom
. 편집기를 닫을 때 bash 스크립트를 실행하고 싶습니다.
atom
실제로 실행 되고 whatever
실행 되는 쉘 함수 또는 스크립트를 작성하십시오 .
예시 함수
atom () (
command atom "$@"
/path/to/whatever
)
오른쪽 시작 파일( ~/.bashrc
Bash의 경우)에 함수를 정의합니다. 새 셸을 엽니다. 이제부터 atom
셸에서 호출하면 함수가 실행됩니다. 이 방법은 셸 외부에는 영향을 미치지 않습니다.
샘플 스크립트
(참고: 스크립트와 함께 함수를 사용하는 것은 의미가 없습니다.)
#!/bin/sh
/path/to/real/atom "$@"
/path/to/whatever
스크립트 이름을 으로 지정 하고 실행 가능하게 만든 다음 다른 디렉터리보다 오래된 atom
디렉터리에 배치합니다 (이러한 디렉터리를 만들고 수정해야 할 수도 있음 ). 이제 변수를 사용하여 그것을 찾는 모든 것이 스크립트를 찾을 것입니다. 이 방법은 셸 외부에서 작동합니다.PATH
atom
PATH
PATH
atom
그러나 Atom을 일반적인 경로(즉, 경로가 아닌 경로)를 통해 실행하려고 하면 실제 스크립트처럼 실행 PATH
됩니다 . atom
실제 값을 다른 곳으로 옮기고 atom
모든 사람이 실제 값을 예상하는 곳에 스크립트를 배치할 수 있지만 atom
(그리고 /path/to/real/atom
스크립트가 자체적으로 호출되지 않도록 스크립트에서 조정) Atom을 업데이트하는 것은 매우 어렵기 때문에 권장하지 않습니다. 스크립트를 덮어쓸 수 있습니다.
가능한 개선
위 함수나 위 스크립트는
whatever
마지막 명령이기 때문에 종료 상태로 종료됩니다. 어쩌면 실제 종료 상태로 종료되기를 원할 수도 있습니다atom
. 이는 특히 스크립트에 해당됩니다. 이 이름의 스크립트는atom
실제 프로그램을 실행하려는 모든 프로그램에 의해 호출될 수 있으며 호출 프로세스 중 일부가 종료 상태를 사용하여 특정 작업을 수행한다는atom
점을 배제할 수 없습니다 .atom
종료 상태를 유지하는 함수는 다음과 같습니다.
atom () ( command atom "$@" status="$?" /path/to/whatever exit "$status" )
(이 함수는 의도적으로 서브쉘에서 실행되므로 해당
status
변수는 메인 쉘에 영향을 미치지 않습니다.)동일한 스크립트:
#!/bin/sh /path/to/real/atom "$@" status="$?" /path/to/whatever exit "$status"
함수나 스크립트가 실제로 종료된 후 가능한 한 빨리 종료되기를 원할 수도
atom
있고 비동기적으로 시작하기를 원할 수도 있습니다whatever
. 그/path/to/whatever &
대신 함수/스크립트를 실행해 보세요/path/to/whatever
.
일반적인 주의사항
함수나 스크립트는
whatever
다음 이후에 실행됩니다.노력하다Running realatom
.atom
Real이 창을 표시하거나 시작하는지 여부는 중요하지 않습니다. 종료 상태를 테스트하면 몇 가지 예외(예:/path/to/real/atom
트리거된 경우No such file or directory
종료 상태127
)를 감지하고 조건부로 이를 억제할 수 있습니다whatever
. "응용 프로그램이 닫힐 때"가 "창이 닫힐 때"를 의미한다면 상황은 그렇게 간단하지 않습니다.일반적으로 브라우저나 텍스트 편집기와 같은 프로그램을 두 번째 호출하면 다른 인스턴스가 이미 실행 중임을 감지하고 자체 작업을 다른 프로세스에 위임할 수 있습니다. 실제로 새 탭이나 이전 창에 뭔가가 생성되는 것과 같습니다. 작업이 넘겨진 후 즉시 새 프로세스가 종료됩니다. 작업은 이전 인스턴스의 책임이 됩니다. Atom이 이 작업을 수행하면
whatever
작업 자체가 완료/종료되지 않았더라도 새 프로세스가 작업을 위임하고 종료한 직후에 작업(새 프로세스와 연결된)이 실행되는 것을 볼 수 있습니다 . 저는 Atom을 모르고, 이렇게 작동할 수 있는지도 모르겠습니다.일반적으로 프로세스는 자체 실행 파일이나 이름을 호출하여 다른 인스턴스를 생성할 수 있습니다(아마도 창 없이 자동으로). Atom(즉, 실제)이
atom
위치에 사용되는 방식으로 이 작업을 수행하고 스크립트를 찾으면 예상보다 더 많은 인스턴스를 관찰하게 됩니다. 일부 방법은 사용되지 않습니다. 다시 말하지만 저는 Atom을 모릅니다. 이 작업을 수행하는지 또는 어떤 방식으로 수행하는지 모릅니다.PATH
atom
whatever
PATH