Ответ 1
в Terminal.app
Настройки> Профили> (Выбрать профиль)> Оболочка.
на "Когда оболочка выходит" выбрал "Закрыть окно"
Когда я закончил с Terminal, я хочу выйти из него. Прямо сейчас у меня есть три варианта:
killall Terminal. Это закончит процесс, а скорее резко. Я не думаю, что это лучшая идея.
Выйти. Я изменил настройки, поэтому exit закрывает терминал. Приложение все еще остается открытым в Dock, хотя и не делает того, что я хочу, чтобы он делал.
Щелкните правой кнопкой мыши > Выход. Однако это не команда терминала для выхода из нее.
Итак, как я должен выйти и закрыть терминал? Я слышал что-то о osascript, но я не уверен. Я хочу выйти и закрыть, так что терминал больше не открывается, как окно, так и процесс.
в Terminal.app
Настройки> Профили> (Выбрать профиль)> Оболочка.
на "Когда оболочка выходит" выбрал "Закрыть окно"
Как насчет старой доброй Command-Q?
В приложении "Терминал" вкладка Предпочтение → Профили.
Выберите вкладку Shell справа.
Вы можете выбрать Никогда Задавать перед закрытием, чтобы пресечь предупреждение.
Я использовал ctrl + d
. Он выталкивает вас в место назначения, в котором вы сначала запустили команду sqlite3.
В окне терминала вы можете ввести:
kill -9 $(ps -p $PPID -o ppid=)
Это приведет к уничтожению процесса приложения терминала, который является родительским элементом родителя текущего процесса, как видно из команды kill.
Чтобы закрыть окно терминала из работающего script, вам нужно подняться еще на один уровень в иерархии процессов, например:
kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=)
Вы можете использовать AppleScript с помощью команды osascript
:
osascript -e 'tell application "Terminal" to quit'
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"
Это не дает никаких ошибок и делает терминал прекрасным.
Используйте команду osascript
в вашем коде как упомянутый icktoofay: osascript -e 'tell application "Terminal" to quit'
Затем откройте настройки терминала, откройте "Настройки" > "Шелл" и установите "Запрос перед закрытием": "Никогда". Терминал должен теперь полностью выйти (не оставаться открытым в док-станции) и игнорировать приглашение перед выходом. Если у вас открыто только одно окно терминала, а команда osascript
- это ваша последняя строка кода, она должна дождаться выполнения любой команды, которую вы выполнили до завершения.
Это не идеально, если вы используете сценарии в одном и том же окне или в других окнах в фоновом режиме (например, вы можете запустить команду в фоновом режиме и продолжить использование текущего окна для других команд, если выполняется первая команда амперсандом); будьте осторожны!
Если вы оберните код osascript
в файл оболочки script, вы, вероятно, можете вызвать его с помощью любого содержательного имени файла, которое вы ему даете --- пока он находится в пути поиска терминалов (запустите echo $PATH
чтобы увидеть, где Terminal ищет скрипты).
Я использовал
quit -n terminal
в конце моих скриптов. Вы должны иметь набор терминалов, чтобы никогда не запрашивать предпочтения
Итак, терминал > Настройки > Настройки > Оболочка Когда оболочка выходит из Закрыть окно Запрос перед закрытием Никогда
Вы также можете использовать эту свернутую команду, которая не вызывает предупреждения о завершении собственного процесса: 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
в терминал без необходимости возиться с любыми другими настройками.
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
так же, как vi ~/.bashrc
или zshrc
(что-нибудь еще?)
добавьте его: alias exit="osascript ~/exit.scpt"
На самом деле, вы должны установить конфигурацию на своем терминале, когда ваш терминал работает, нажмите ⌘ + ,, после чего вы увидите экран ниже:
Затем нажмите вкладку оболочки, и вы увидите экран ниже:
Теперь выберите Close if the shell exited cleanly
для параметра Когда оболочка выходит.
При вышеупомянутой конфигурации каждый раз с командой exit
Терминал закрывается, но не выходит.
Если это Mac, вы набираете "exit" и нажимаете return.