OSX – 如何在执行“exit”命令后自动closuresterminal窗口。

当我完成terminal时,我想退出它。 现在我有三个select:

  1. 基亚尔terminal。 它会结束这个过程,但是会突然结束。 我不认为这是最好的主意。

  2. 呼叫退出。 我已经改变了设置,所以退出closuresterminal。 该应用程序仍然显示在Dock中打开,但没有做我想做的事情。

  3. 右键单击>退出。 但是,这不是terminal命令退出它。

那么现在,我应该怎样退出并closuresterminal呢? 我听说过一些关于osascript的内容,但我不太确定。 我想退出并closures,使terminal不再是开放的,既作为窗口,也作为一个过程。

在Terminal.app中

首选项>设置>shell

打开“当shell退出”select“closures窗口”

那么好的旧Command-Q怎么样?

在terminal应用程序中, 首选项 >> configuration文件选项卡。

select右边的Shell选项卡。 在这里输入图像说明

在closures之前,您可以select从不询问来抑制警告。

我一直在使用ctrl + d 它把你带到了你已经开始使用sqlite3命令的目的地。

在terminal窗口中,您可以键入:

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

这会终止当前进程的父进程的terminal应用程序进程,如kill命令所示。

要从正在运行的脚本中closuresterminal窗口,您需要像这样在stream程层次结构中再添加一个级别:

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

你可以通过osascript命令使用AppleScript:

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

在您的代码中使用osascript命令作为icktoofay提到: osascript -e 'tell application "Terminal" to quit'

然后,打开terminal首选项,进入设置>shell,并将“closures前提示:”设置为“从不”。 terminal现在应该完全退出(不在docker上保持打开状态),在退出前忽略提示。 如果只有一个“terminal”窗口打开,并且osascript命令是最后一行代码,那么它应该等待之前运行的任何命令完成。

如果您在同一个窗口或后台的其他窗口中运行脚本(例如,您可能在后台运行一个命令,并继续使用其他命令的当前窗口(如果第一个命令后面跟有一个&符号) ); 小心!

如果你将osascript代码包装在一个shell脚本文件中,那么你可以用任何简单的文件名来调用它,只要它在terminal的searchpath中(运行echo $PATH来查看terminal在哪里查找脚本)。

我一直在使用

退出-nterminal

在我的脚本结束。 您必须将terminal设置为从不提示首选项

所以Terminal> Preferences> Settings> Shell 当shell退出时closures窗口Prompt在closures之前 Never

您也可以使用这个复杂的命令,它不会触发关于终止自己的进程的警告:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

这个命令很长,所以你可以在你的bashconfiguration文件中定义一个别名(比如quit ):
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

这将允许您只需在terminal中键入quit而无需任何其他设置。

osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"

这模拟了CMD + w按键。

如果你想terminal完全退出你可以使用: osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"

这不会给出任何错误,并使terminal干净地停下来。

如果这是一个Mac你键入“退出”,然后按回车。