OSX - Как автоматически закрыть окно терминала после выполнения команды «выход». - PullRequest
86 голосов
/ 06 апреля 2011

Когда я закончу с Терминалом, я хочу выйти из него. Прямо сейчас у меня есть три варианта:

  1. Терминал killall. Это завершит процесс, но довольно резко. Я не думаю, что это лучшая идея.

  2. Вызов выхода. Я изменил настройки, поэтому выход закрывает терминал. Тем не менее, приложение все еще открыто в Dock и не выполняет то, что мне нужно.

  3. Щелкните правой кнопкой мыши> Выйти. Однако это не команда Терминала для выхода из него.

Итак, как мне выйти и закрыть Терминал? Я слышал кое-что об osascript, но я не слишком уверен. Я хочу выйти и закрыть, чтобы терминал больше не открывался как в виде окна, так и в виде процесса.

Ответы [ 13 ]

166 голосов
/ 28 июля 2013

в Terminal.app

Настройки> Профили> (Выбрать профиль)> Оболочка.

на «Когда оболочка выходит» выбрано «Закрыть окно»

29 голосов
/ 06 апреля 2011

Как насчет старого доброго Command-Q?

28 голосов
/ 19 ноября 2015

В приложении «Терминал» Предпочтения >> Профили * Вкладка .

Выберите справа вкладку Оболочка .enter image description here

Вы можете выбрать Никогда Спросить перед закрытием, чтобы подавить предупреждение.

9 голосов
/ 31 марта 2013

Я использовал ctrl + d.Он выбрасывает вас в пункт назначения, где вы в первую очередь запустили команду sqlite3.

9 голосов
/ 24 декабря 2012

В окне терминала вы можете набрать:

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

Это уничтожит процесс приложения терминала, который является родителем родительского процесса текущего процесса, как это видно из команды kill.

Чтобы закрыть окно терминала из запущенного скрипта, вам нужно подняться еще на один уровень в иерархии процессов, например:

kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=) 
8 голосов
/ 18 декабря 2018

На самом деле, вы должны установить конфигурацию на своем Терминале, когда ваш Терминал работает, нажмите + , , тогда вы увидите экран ниже:

enter image description here

Затем нажмите вкладку оболочки, и вы увидите экран ниже:

enter image description here

Теперь выберите Close if the shell exited cleanlyдля Когда оболочка выходит из системы .

В соответствии с вышеуказанным конфигом каждый раз с помощью команды exit Терминал закрывается, но не закрывается.

8 голосов
/ 06 апреля 2011

Вы можете использовать AppleScript с помощью команды osascript:

osascript -e 'tell application "Terminal" to quit'
4 голосов
/ 17 сентября 2015

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"

Это не дает никаких ошибок и заставляет Терминал полностью остановиться.

3 голосов
/ 17 марта 2014

Вы также можете использовать эту сложную команду, которая не вызывает предупреждение о завершении собственного процесса:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

Эта команда довольно длинная, поэтому вы можете определить псевдоним (например, quit) в вашем профиле bash:
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

Это позволит вам просто набрать quit в терминале, не прибегая к каким-либо другим настройкам.

2 голосов
/ 02 января 2012

Используйте команду osascript в своем коде, как упоминалось в icktoofay: osascript -e 'tell application "Terminal" to quit'

Затем откройте настройки терминала, перейдите в «Настройки»> «Оболочка» и установите для «Запрашивать перед закрытием:» значение «Никогда».Терминал должен завершиться полностью (не оставаться открытым в доке) и игнорировать запрос перед выходом.Если у вас открыто только одно окно терминала, а команда osascript является вашей последней строкой кода, она должна дождаться завершения выполнения любой команды, которую вы выполняли раньше.

Это не было бы идеально, если вы запускаете скрипты вто же самое окно или другие окна в фоновом режиме (например, вы можете запустить команду в фоновом режиме и продолжить использовать текущее окно для других команд, если за первой командой следует амперсанд);будьте осторожны!

Если вы поместите код osascript в файл сценария оболочки, вы, вероятно, сможете вызывать его с любым указанным вами точным именем файла - до тех пор, пока он находится в пути поиска терминала (запустите echo $PATH, чтобы увидеть, где терминал ищет скрипты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...