Подтвердить что ты не робот

OSX - Как автоматически закрыть окно терминала после выполнения команды "exit".

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

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

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

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

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

4b9b3361

Ответ 1

в Terminal.app

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

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

Ответ 2

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

Ответ 3

В приложении "Терминал" вкладка Предпочтение Профили.

Выберите вкладку Shell справа. введите описание изображения здесь

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

Ответ 4

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

Ответ 5

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

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

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

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

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

Ответ 6

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

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

Ответ 7

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"

Это не дает никаких ошибок и делает терминал прекрасным.

Ответ 8

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

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

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

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

Ответ 9

Я использовал

quit -n terminal

в конце моих скриптов. Вы должны иметь набор терминалов, чтобы никогда не запрашивать предпочтения

Итак, терминал > Настройки > Настройки > Оболочка Когда оболочка выходит из Закрыть окно Запрос перед закрытием Никогда

Ответ 10

Вы также можете использовать эту свернутую команду, которая не вызывает предупреждения о завершении собственного процесса:
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 в терминал без необходимости возиться с любыми другими настройками.

Ответ 11

Создать скрипт:

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 или откройте ваш терминал.app

Ответ 12

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

enter image description here

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

enter image description here

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

При вышеупомянутой конфигурации каждый раз с командой exit Терминал закрывается, но не выходит.

Ответ 13

Если это Mac, вы набираете "exit" и нажимаете return.