Как закрыть Терминал в OSX из командной строки?

69

Почему «выход» не закрывает окно Terminal.app в Mac OS X?

$ exit
logout

[Process completed]

Есть ли способ закрыть окно, не используя мышь?

Флоренц Клей
источник

Ответы:

87

Окно, отображаемое Terminal.app, является лишь интерфейсом для процесса, который вы выбираете для запуска внутри него - в вашем случае, для оболочки Unix. Когда вы выходите из оболочки, Terminal.app по умолчанию не закрывает окно, поэтому у вас есть возможность проверить вывод любой команды, которую вы выполнили, после ее завершения.

Вы можете изменить свои настройки здесь

Настройки терминала -> Настройки -> Оболочка:

либо

  1. всегда закрывайте окно, каким бы ни был статус выхода оболочки
  2. закройте окно, если оболочка закрылась
  3. держать окно открытым (по умолчанию)

Кроме того, вы можете (почти) всегда закрывать окна в OSX с помощью Cmd-W, поэтому вам не нужна мышь, даже если она не закрывается автоматически.

Еще один совет: мне нравится нажимать Ctrl-D вместо ввода. Два ключа против пяти.

Amadan
источник
11
В Yosemite это: настройки -> профили -> оболочка -> «когда оболочка закрывается» ... оболочка - это оболочка, выбранная вами в общем-> при запуске открыть ...
cloudsurfin
После выхода из оболочки можно ли запустить новую оболочку в том же окне? Если так, то как?
Содвед
@ Содвед: Я так не думаю, но могу ошибаться.
Амадан
Это не отвечает на заданный вопрос, так как не предлагает операции командной строки .
Крис Страттон
@ChrisStratton Вы правы , что она непосредственно не ответить задан вопрос, но это действительно облегчит использование exitкоманды , которые OP использовал изначально.
jdersen
21

Command+ Q-> закрывает приложение / процесс.

Command+ W-> закрывает окно / экземпляр

Nisse Engström
источник
ОП запрашивает способ закрыть окно терминала "без использования мыши".
Джош Хабдас
10

Да, есть. Например, вы можете использовать AppleScript для достижения этой цели:

osascript -e 'tell application "Terminal" to close first window'

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

Перед закрытием окна Терминал может спросить вас, действительно ли вы хотите закрыть окно. Это зависит от ваших настроек. Возможно, вы решили «закрыть окно, только если оболочка завершена корректно или другие процессы не выполняются отдельно от…». (Это может быть настройка по умолчанию.) В этом случае добавление & exitк команде закрывает окно немедленно и без запроса.

osascript -e 'tell application "Terminal" to close first window' & exit
Thomas.S
источник
Это почти правильно, но на самом деле «первое окно» не всегда является тем, которое запускает команду.
Крис Страттон
Этот метод работает хорошо после openвызова, чтобы добавить новый профиль терминала.
Джош Хабдас
3

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

Когда терминал работает, нажмите +, ,чтобы открыть окно настроек. тогда вы увидите ниже экран:

введите описание изображения здесь

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

введите описание изображения здесь

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

Ваш терминал готов к выходу только с помощью exitкоманды.

AmerllicA
источник
1
Потрясающие! Искал это так долго. Спасибо 👍🏼
Винаяк
1

Я также предлагаю против предложения killall. Как предлагается изменить настройки в ваших предпочтениях, чтобы закрыть окно, если выход из оболочки был успешным. Если вы действительно ленивы (как и я), откройте свой профиль Bash и добавьте псевдоним. У меня есть мой набор, поэтому все, что мне нужно сделать, это набрать 'q'.

bran.io
источник
Дупе из killallответа.
Джош Хабдас
-1

Если вы хотите завершить само приложение из командной строки:

killall Terminal
Просто Джейк
источник
4
это считается вредным. Помимо того, что killall делает разные вещи на разных версиях Unix, нехорошо убивать приложение, вместо того чтобы просить его просто выйти.
Флоренц Клей
очень хорошее решение. Нам просто нужно выйти из терминала, чтобы не было вопросов !! лучший ответ.
Mehdico