Когда я закончу с Терминалом, я хочу выйти из него. Прямо сейчас у меня есть три варианта:
killall Терминал. Это закончит процесс, но довольно резко. Не думаю, что это лучшая идея.
Вызов выхода. Я изменил настройки, поэтому выход закрывает Терминал. Однако приложение по-прежнему отображается открытым в Dock и не выполняет то, что я хочу.
Щелкните правой кнопкой мыши> Выйти. Однако это не команда терминала для выхода из него.
Итак, как мне выйти и закрыть Терминал? Я что-то слышал об osascript, но не совсем уверен. Я хочу выйти и закрыть, чтобы Терминал больше не открывался и как окно, и как процесс.
kill
, поkillall
умолчанию отправкаSIGTERM
, которую можно поймать. Некоторые программы улавливают это, убирают за собой и корректно завершают работу. Не знаю, есть лиTerminal.app
среди них. Тем не менее, я подозреваю, что в крайнем случае это было бы лучше для « Спроси другого» или «Суперпользователя», поскольку там, похоже, нет никакого программного контента.Ответы:
в Terminal.app
Настройки> Профили> (Выбрать профиль)> Оболочка.
на "Когда оболочка выходит" выбрано "Закрыть окно"
источник
Как насчет старого доброго Command-Q?
источник
В приложении «Терминал» перейдите на вкладку « Настройки» >> « Профили ».
Выберите вкладку Shell справа.
Вы можете выбрать « Никогда не спрашивать перед закрытием», чтобы отключить предупреждение.
источник
When shell exits:
«На самом деле, вы должны установить конфигурацию в своем терминале, когда ваш терминал включен, нажмите ⌘+, ,после чего вы увидите экран ниже:
Затем нажмите вкладку оболочки, и вы увидите экран ниже:
Теперь выберите
Close if the shell exited cleanly
для При выходе из оболочки .По приведенной выше конфигурации каждый раз с помощью
exit
команды Терминал закрывается, но не закрывается.источник
Вы можете использовать AppleScript с помощью
osascript
команды:источник
.bashrc
(или эквивалент, если вы используете другую оболочку). Я все еще думаю над ответом на 2.exit
после запуска демонизированного процесса. После того, как демонизированный процесс подождал секунду, он может вызвать,osascript
как описано.osascript
:tell application "System Events" to keystroke "a" using command down
. Это, вероятно, тоже будет проблемой.В окне терминала вы можете ввести:
Это убьет процесс приложения Терминала, который является родителем родительского процесса текущего процесса, как видно из команды kill.
Чтобы закрыть окно терминала из запущенного скрипта, вам необходимо подняться еще на один уровень в иерархии процессов, например:
источник
kill -9
если не знаете, что другие сигналы не работают.Я пользуюсь
ctrl + d
. Он выбрасывает вас в пункт назначения, где вы в первую очередь запустили команду sqlite3.источник
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 -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
в терминал без необходимости возиться с любыми другими настройками.источник
Используйте
osascript
команду в своем коде, как указано в icktoofay:osascript -e 'tell application "Terminal" to quit'
Затем откройте настройки терминала, перейдите в «Настройки»> «Оболочка» и установите «Запрашивать перед закрытием:» на «Никогда». Теперь терминал должен полностью выйти (не оставаться открытым в доке) и проигнорировать приглашение перед выходом. Если у вас открыто только одно окно терминала, а
osascript
команда является вашей последней строкой кода, она должна дождаться завершения любой команды, которую вы выполняли ранее.Это было бы не идеально, если вы запускаете сценарии в том же окне или других окнах в фоновом режиме (например, вы можете запустить команду в фоновом режиме и продолжить использование текущего окна для других команд, если за первой командой следует амперсанд ); быть осторожен!
Если вы заключите
osascript
код в файл сценария оболочки, вы, вероятно, сможете вызвать его с любым лаконичным именем файла, которое вы ему дадите - пока оно находится в пути поиска Терминала (запустите,echo $PATH
чтобы увидеть, где Терминал ищет сценарии).источник
Создайте скрипт:
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 или снова откройте свой terminal.app
источник
Я использовал
выйти -n терминал
в конце моих скриптов. У вас должен быть установлен терминал, чтобы никогда не запрашивать в настройках
Итак, Терминал> Настройки> Настройки> Оболочка При выходе из оболочки Закройте окно Запрашивать перед закрытием Никогда
источник
Я попробовал несколько вариантов ответов здесь. Что бы я ни пытался, я всегда могу найти вариант использования, когда пользователю предлагается закрыть Терминал.
Поскольку мой сценарий простой (
drutil -drive 2 tray open
- открыть конкретный DVD-привод), пользователь не нужно видеть окно терминала во время выполнения сценария.Мое решение заключалось в том, чтобы превратить сценарий в приложение, которое запускает сценарий без отображения окна терминала. Дополнительным преимуществом является то, что любые окна терминала, которые уже открыты, остаются открытыми, а если ни одно из них не открыто, то Терминал не остается в постоянном режиме после завершения скрипта. Кажется, что терминал вообще не запускается для запуска сценария bash.
Я выполнил эти инструкции, чтобы превратить свой скрипт в приложение: https://superuser.com/a/1354541/162011
источник
Если это Mac, вы набираете «выход» и нажимаете return.
источник