OSX- "exit"명령이 실행 된 후 터미널 창을 자동으로 닫는 방법.


104

터미널 작업이 끝나면 종료하고 싶습니다. 지금은 세 가지 옵션이 있습니다.

  1. killall 터미널. 프로세스가 종료되지만 오히려 갑자기 종료됩니다. 이것이 최선의 아이디어라고 생각하지 않습니다.

  2. 종료를 호출합니다. 설정을 변경 했으므로 종료는 터미널을 닫습니다. 그래도 앱이 Dock에 열려있는 것처럼 보이지만 원하는 작업을 수행하지 않습니다.

  3. 오른쪽 클릭> 종료. 그러나 이것은 그것을 종료하는 터미널 명령이 아닙니다.

이제 터미널을 나가고 닫는 방법은 무엇입니까? osascript에 대해 들어 봤지만 잘 모르겠습니다. 종료하고 닫고 싶습니다. 터미널이 더 이상 창과 프로세스로 열리지 않도록합니다.


처럼 kill, killall기본값은 send SIGTERM로 설정되어 있으며 잡을 수 있습니다. 일부 프로그램은이를 포착하고 스스로 정리하고 정상적으로 종료합니다. Terminal.app그들 사이에 있는지 모르겠습니다. 그러나 나는 이것이 어떤 프로그래밍 콘텐츠도 가지고 있지 않은 것처럼 보이므로 Ask Different 또는 Super User에서 더 나을 것이라고 생각 합니다.
dmckee --- ex-moderator kitten 2011

1
질문은 "마지막 쉘이 종료 된 후 터미널을 종료하는 방법"이라는 문구가 더 나을 것이라고 생각합니다.
크리스 페이지

답변:


194

Terminal.app에서

기본 설정> 프로필> (프로필 선택)> 셸.

'쉘이 종료 될 때'에서 '창 닫기'를 선택했습니다.


당신이 나에 대해 수행 quife의 벌금을 가질 것이라고 피드 사용자 출력에 공간이 있지만, 그렇지 않으면 insanikov의 답변을 사용하기를 원한다면 @PrabhuKonchada 너무 끔찍한 일을 wouldnt
Frankenmint

명확하고 깨끗하고 완벽합니다.
aydinugur

12
최신 버전의 OS X에서이 옵션은 '환경 설정> 프로필> (프로필 선택)> 셸에서 찾을 수 있습니다.
XtraSimplicity

당신은 더에 대한 링크를 사용하고 현명한 단계 정보 단계 수 cnet.com/news/terminal-tip-close-windows-after-clean-exit
크리 샨 쿠마르 Mourya

1
또한 모든 프로필을 선택하고 한 번에 모두 변경할 수 있습니다.

31

좋은 오래된 Command-Q는 어떻습니까?


그는 명령 Q를 의미합니다. 그래도 좋은 방법입니까? 그것은 나에게 killall과 다르지 않은 것 같습니다.
darksteel 2011-04-06

@darksteel : Command-Q는 Mac에서 앱을 닫는 적절한 방법입니다. Killall을 수행하는 것도 앱이 깨끗하게 종료되도록 지시되기 때문에 괜찮을 것입니다.
tomlogic 2011

2
네, "Command"를 입력하려고했지만 Ctrl로 나왔습니다. PEBBAF (뇌와 손가락 사이에 문제가 있음)의 경우라고 말하고 싶습니다.
holygeek 2011

일반적으로 kill / killall은 응용 프로그램을 종료하는 좋은 방법이 아닙니다. 저장되지 않은 상태를 버리거나 응용 프로그램을 종료하면 응용 프로그램의 모양을 올바르게 반영하지 않는 상태를 저장할 수 있습니다. Mac OS X에는 프로그램이 (사실 SIGKILL을 사용하여) 안전하게 죽일 수있는 상태에있을 때 프로그램이 표시 할 수있는 "Sudden Termination"기능이 있으며, Activity Monitor가있는 터미널의 상태를 확인하여 먼저 종료하는 것이 안전합니다 ( "Sudden Termination"열을 표시하고 "Yes"를 찾습니다). 그러면 그렇게 할 수 있지만 해당 워크 플로를 쉽게 자동화 할 수는 없습니다.
Chris Page

모든 프로세스를 닫고 터미널을 닫는 종료 후 항상 command-Q를 사용할 수 있습니다.
Optimus Prime

29

터미널 앱에서 기본 설정 >> 프로필 탭.

오른쪽 에서 탭을 선택합니다 . 여기에 이미지 설명 입력

닫기 전에 묻지 않음 을 선택 하여 경고를 표시 하지 않을 수 있습니다 .


5
나는 When shell exits:"창 닫기"로 이것을 달성했다
Anup

1
이 대답은 "안함"을 선택하면 효과가 없었습니다. 그러나 "창 닫기"에 대한 @Anup의 의견이 나에게 트릭을 제공했습니다.
Ultimater

12

실제로 터미널에서 구성을 설정해야합니다. 터미널이 작동 중일 때 + ,를 누르면 아래 화면이 표시됩니다.

여기에 이미지 설명 입력

그런 다음 쉘 탭을 누르면 아래 화면이 표시됩니다.

여기에 이미지 설명 입력

이제 When the shell exits를 선택 Close if the shell exited cleanly합니다 .

위의 구성에 따라 exit명령을 사용할 때마다 터미널이 닫히지 만 종료되지는 않습니다.


10

다음 osascript명령을 통해 AppleScript를 사용할 수 있습니다 .

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

나는 osascript 명령을 시도하지 않았지만 이것에 대해 두 가지 문제가 있습니다. 1. 명령을 종료하는 데 다소 시간이 걸립니다. 더 간단하지 않습니까? Windows에서 exit가 명령 프롬프트를 종료하는 방법을 좋아합니다. 2. 여전히 터미널을 종료하라는 메시지가 표시됩니다. 나는 그것이 단지 동작을 거치기를 원합니다. 정말 그만두고 싶은지 묻는 창이 뜹니다.
darksteel

1
@darksteel : 1. 별칭을 추가합니다 .bashrc(또는 다른 셸을 사용하는 경우 이와 동등한 항목). 2에 대한 답을 아직 생각 중입니다.
icktoofay 2011

명령 Q가 가장 잘 작동한다고 생각합니다. 하지만 별칭을 올바르게 설정하는 방법이 궁금합니다. 별칭을 선호 할 수있을만큼 자주 수행하는 "ping google.com"과 같은 몇 가지 명령이 있습니다.
darksteel 2011-04-06

@darksteel : 이것은 지나치게 생각하는 방법이지만 2를 방지하기 위해 약 1 초 동안 잠자는 데몬 화 된 프로세스를 exit시작한 다음 데몬 화 된 프로세스를 시작한 후에 시작할 수 있습니다. 데몬 화 된 프로세스가 잠시 기다린 후 osascript설명 된대로 호출 할 수 있습니다.
icktoofay 2011

@darksteel : 당신은 또한을 통해 키 누르기를 트리거 할 수 있습니다 osascript: tell application "System Events" to keystroke "a" using command down. 이것에도 문제가있을 것입니다.
icktoofay 2011

9

터미널 창에서 다음을 입력 할 수 있습니다.

kill -9 $(ps -p $PPID -o ppid=)

이것은 kill 명령에서 볼 수 있듯이 현재 프로세스의 부모 인 터미널 응용 프로그램 프로세스를 종료합니다.

실행중인 스크립트 내에서 터미널 창을 닫으려면 다음과 같이 프로세스 계층에서 한 단계 더 위로 이동해야합니다.

kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=) 

7
참고로이 솔루션은 다른 터미널 창도 종료합니다.
tresf

그리고 kill -9다른 신호가 작동하지 않는다는 것을 알지 못하면 사용 하지 마십시오 .
tripleee

9

나는 ctrl + d. 처음에 sqlite3 명령을 시작한 목적지로 당신을 던집니다.


5

osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"

이것은 CMD+ w키 누르기를 시뮬레이션합니다 .

터미널을 완전히 종료하려면 다음을 사용할 수 있습니다. osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"

이것은 오류를 일으키지 않고 터미널을 깨끗하게 멈 춥니 다.


4

자체 프로세스 종료에 대한 경고를 트리거하지 않는이 복잡한 명령을 사용할 수도 있습니다.
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

이 명령은 매우 길기 때문에 quitbash 프로필에 별칭 (예 :)을 정의 할 수 있습니다.
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

이렇게 quit하면 다른 설정을 조작하지 않고도 터미널 에 간단히 입력 할 수 있습니다 .


2

osascripticktoofay가 언급 한대로 코드 에서 명령을 사용하십시오 .osascript -e 'tell application "Terminal" to quit'

그런 다음 터미널 환경 설정을 열고 설정> 셸로 이동 한 다음 "닫기 전에 확인 :"을 "안함"으로 설정하십시오. 이제 터미널이 완전히 종료되고 (도크에서 열린 상태로 유지되지 않음) 종료하기 전에 프롬프트를 무시합니다. 터미널 창이 하나만 열려 있고 해당 osascript명령이 코드의 마지막 줄인 경우 이전에 실행 한 명령이 완료 될 때까지 기다려야합니다.

동일한 창이나 백그라운드의 다른 창에서 스크립트를 실행하는 경우에는 적합하지 않습니다 (예를 들어 백그라운드에서 명령을 실행하고 첫 번째 명령 다음에 앰퍼샌드가 오는 경우 다른 명령에 대해 현재 창을 계속 사용할 수 있습니다. ); 조심해!

osascript쉘 스크립트 파일에 코드 를 래핑하면 터미널의 검색 경로 ( echo $PATH터미널이 스크립트를 찾는 위치를 확인하기 위해 실행) 에 있는 한 어떤 파일 이름을 지정하든간에 코드를 호출 할 수 있습니다 .


1

스크립트 생성 :

cat ~/exit.scpt

이렇게 :

  • 참고 : 창이 하나만있는 경우 응용 프로그램을 종료하고 그렇지 않으면 시뮬레이션 command + w하여 탭을 닫습니다.

tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell

그런 다음 * shrc에 별칭을 추가하십시오.

그냥 vi ~/.bashrc또는zshrc (무엇?)

그것을 추가하십시오 : alias exit="osascript ~/exit.scpt"

그리고 ~ / .bashrc를 소싱하거나 터미널을 다시 엽니 다.


0

나는 사용하고있다

-n 터미널 종료

내 대본 끝에. 기본 설정에서 메시지를 표시하지 않도록 터미널을 설정해야합니다.

터미널 그래서> 환경 설정> 설정> 쉘은 쉘이 종료가되면 창을 닫습니다 폐쇄하지 전에 프롬프트를 절대로


0

여기에서 여러 가지 답변을 시도했습니다. 내가 무엇을 시도하든 항상 사용자에게 터미널을 닫으라는 메시지가 표시되는 사용 사례를 찾을 수 있습니다.

(내 스크립트가 간단하기 때문에 drutil -drive 2 tray open- 특정 DVD 드라이브를 엽니 다)는, 사용자가 수행 되지 스크립트가 실행되는 동안 터미널 창을 볼 필요 .

내 해결책은 스크립트를 터미널 창을 표시하지 않고 스크립트를 실행하는 앱으로 바꾸는 것이 었습니다. 추가 된 이점은 이미 열려있는 모든 터미널 창이 열려 있고 열려 있지 않은 경우 터미널이 스크립트 종료 후 상주하지 않는다는 것입니다. bash 스크립트를 실행하기 위해 터미널을 전혀 시작하지 않는 것 같습니다.

다음 지침에 따라 스크립트를 앱으로 전환했습니다. https://superuser.com/a/1354541/162011


-3

Mac 인 경우 'exit'를 입력 한 다음 Return을 누르십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.