Programing

쉘 스크립트 (Unix)에서 터미널 창을 닫으시겠습니까?

lottogame 2021. 1. 11. 07:30
반응형

쉘 스크립트 (Unix)에서 터미널 창을 닫으시겠습니까?


쉘 스크립트 내에서 터미널 창을 닫는 방법이 있습니까? 일단 완료되면 .command 파일이 있습니다.


사용 exit 0하면 스크립트가 완전히 종료됩니다.

터미널 창이 열려 있는지 여부는 사용자가 구성 할 수 있습니다. 기본값은 항상 열려있는 것입니다. 이를 변경하려면 :

Terminal.app > Preferences > Profiles > Shell
    - "When the shell exists:"
        > Close if the shell exited cleanly
    - "Ask before closing:"
        (•) Never
        -- OR --
        (•) Only if there are....

"셸이 깨끗하게 종료되면 닫기"를 사용하는 경우 종료 결과가 0이면 스크립트가 창을 닫고, 아무 문제가 없으면 기본값이됩니다.


모든 터미널 창을 삭제하지 않으려면 먼저 창 이름을 "Terminal"에서 다른 이름으로 변경하십시오.

echo -n -e "\ 033] 0; 내 창 이름 \ 007"

그런 다음 스크립트 끝에서 다음을 사용하십시오.

osascript -e '응용 프로그램 "터미널"을 닫으라고 알려줍니다 (이름에 "내 창 이름"이 포함 된 모든 창)'&


당신은 사용 apple script하기 종료terminal app. 스크립트에 다음을 추가하십시오-

osascript -e 'tell application "Terminal" to quit'

그러면 앱 종료를 확인하는 팝업이 표시됩니다. 터미널 환경 설정에서 비활성화 할 수 있습니다.

또는 killall명령을 사용 하여 앱을 종료 할 수도 있습니다 . 다음도 잘 작동합니다.

killall Terminal

노트 :

참고로 위의 명령을 스크립트에 자유롭게 추가 할 수 있으며 원하는대로 작동합니다. 그러나 몇 가지주의 사항이 있습니다. 먼저 다른 상자에서 작동하는 스크립트의 기능을 제한합니다. 둘째 , nohup현재 실행중인 모든 명령이 .NET Framework 종료로 인해 종료되지 않도록 사용하는 것이 더 안전 합니다 Terminal app.


이것은 나를 위해 작동합니다.

#!/bin/sh

{your script here}

osascript -e 'tell application "Terminal" to close (every window whose name contains ".command")' &
exit

이것은 .command 파일로 열린 창만 닫을 때 작동하지만 다른 터미널 창에서는 이미 실행중인 상태로 둡니다. 나는 거의 항상 sass 또는 grunt watch가 있다는 것을 알고 있으므로 터미널을 완전히 종료하고 싶지 않습니다.


closeWindow() {
    /usr/bin/osascript << _OSACLOSE_
    tell application "Terminal"
        close (every window whose name contains "YourScriptName")
    end tell
    delay 0.3
    tell application "System Events" to click UI element "Close" of sheet 1 of window 1 of application process "Terminal"
_OSACLOSE_
}

그러면 스크립트에 대한 터미널 창이 닫히고 창 제목이 일치하지 않는 한 다른 터미널 창은 계속 열려 있습니다. 작동하려면 터미널이 접근성 프레임 워크를 사용하도록 허용 된 애플리케이션 목록에 추가되어야합니다. 또한 반복 명령을 사용하여 터미널 창을 순환하고 시트 1에 UI 요소 "닫기"가 포함 된 모든 창 x를 닫을 수 있습니다.


이에 대한 최상의 솔루션은 Automator를 사용하여 시스템 구성 방식에 관계없이 동일한 방식으로 작동하는 진정한 OSX 응용 프로그램을 만드는 것입니다. Automator에서 쉘 스크립트를 실행하도록하거나 Automator에 쉘 스크립트 자체를 임베드 할 수 있습니다.

방법은 다음과 같습니다.

  1. Automator를 실행합니다 (응용 프로그램에서).
  2. "새 문서"를 선택하고 "문서 유형 선택"메시지가 나타나면 "응용 프로그램"을 선택합니다.
  3. In the left panel, select "Utilities" then "Run Shell Script".
  4. Type in your script commands in the workflow item in the right panel. You can either call another shell script, or just put your commands in their directly.
  5. Save the Application, which will be a full-fledged Mac App. You can even cut-and-paste icons from other apps to give your script some personality.

ReferenceURL : https://stackoverflow.com/questions/8798641/close-terminal-window-from-within-shell-script-unix

반응형