OSX-如何自动关闭终端窗口后的“退出”命令执行。

当我完成终端,我想退出它。现在,我有三个选择:

  1. 杀死终端。它将结束这个过程,但相当突然。我不认为这是最好的主意。

  2. 呼叫出口。我已经改变了设置,所以退出关闭终端。这个应用程序在 Dock 中仍然是打开的,并且不能做我想让它做的事情。

  3. 右键单击“退出”。但是,这不是退出的终端命令。

那么现在,我应该如何退出和关闭终端?我听说过一些关于 osascript 的事情,但是我不太确定。我想退出和关闭,以便终端不再打开,既作为一个窗口,也作为一个进程。

202442 次浏览

老指挥官怎么样?

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

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

使用代码中的 osascript命令,就像 icktofay 提到的那样: osascript -e 'tell application "Terminal" to quit'

然后,打开终端首选项,转到“设置”> “外壳”,并将“关闭前提示”设置为“从不”终端现在应该完全退出(不保持打开在您的坞) ,并忽略提示退出之前。如果您只有一个终端窗口打开,并且 osascript命令是您的最后一行代码,那么它应该等待您之前运行的任何命令完成。

如果您在同一个窗口或其他后台窗口中运行脚本(例如,您可能在后台运行一个命令,并继续使用当前窗口执行其他命令,如果第一个命令后面跟着一个与号) ,那么这将是不理想的;!

如果您将 osascript代码封装在一个 shell 脚本文件中,那么您可以使用任何简洁的文件名来调用它——只要它在 Terminal 的搜索路径中(运行 echo $PATH查看 Terminal 在哪里查找脚本)。

我一直在吸毒

退出终端

在我的脚本结束。你必须有终端设置,从来没有提示在首选项

所以终端 > 首选项 > 设置 > 外壳程序 当外壳退出的时候 把窗户关上 关门前提示 从来没有

在终端窗口中,您可以键入:

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

这将杀死 Terminal 应用程序进程,它是当前进程的父进程的父进程,如 kill 命令所示。

要从运行的脚本中关闭终端窗口,您需要在流程层次结构中上升一级,如下所示:

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

如果这是一台 Mac 电脑,你可以输入“ exit”,然后按回车键。

我一直在用 ctrl + d。它将您抛出到最初启动 sqlite3命令的目标位置。

在 Terminal. app 里

首选项 > 配置文件 > (选择配置文件) > Shell。

在“ When the shell exit”中选择“ Close the window”

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

这个命令很长,因此您可以在 bash 配置文件中定义别名(如 quit) :
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

这将允许您在终端中简单地键入 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"

这不给任何错误,并使终端干净地停止。

在终端应用程序中,偏好 > > 档案选项卡。

选择右边的 壳牌选项卡。 enter image description here

可以选择 从来没有“关闭前询问”来禁止显示警告。

创建一个脚本:

cat ~/exit.scpt

像这样:

  • 注意: 如果只有一个窗口,请退出应用程序,否则模拟 command + w关闭选项卡)

告诉应用程序“终端” 设置 WindowNum 以获取窗口计数 如果 WindowNum = 1,则 辞职 别的 通过向下命令告诉应用程序“ System Events”按键输入“ w” 结束如果 结束讲述

然后在你的 * shrc 中添加一个别名

就像 vi ~/.bashrc或者 zshrc(还有什么?)

再加上: alias exit="osascript ~/exit.scpt"

然后找到 ~/. bashrc 的源代码,或者重新打开 Terminal. app

实际上,你应该在你的终端设置一个配置,当你的终端启动时,按 + ,,然后你会看到下面的屏幕:

enter image description here

然后按 shell 选项卡,你会看到下面的屏幕:

enter image description here

现在为 当外壳退出的时候选择 Close if the shell exited cleanly

通过以上配置每次与 exit命令终端将关闭,但不会退出。

我在这里尝试了几种不同的答案。无论我尝试什么,我总能找到一个用例,其中用户被提示关闭终端。

由于我的脚本是一个简单的(drutil -drive 2 tray open——打开一个特定的 DVD 驱动器) ,用户需要在运行脚本时看到终端窗口。

我的解决方案是将脚本转换成一个应用程序,它运行脚本而不显示终端窗口。附加的好处是,任何已经打开的终端窗口保持打开状态,如果没有打开,那么终端不会在脚本结束后继续驻留。它似乎根本没有启动 Terminal 来运行 bash 脚本。

我按照这些说明将我的脚本变成了一个应用程序: https://superuser.com/a/1354541/162011

这就是我刚刚编写的命令所做的。我希望能够创建一个“快捷方式”到苹果配置器的备份目录,工作在不同的计算机上,但因为它是相对于用户的主目录,我需要使它成为一个 .command文件。以下是内容:

#!/usr/bin/env bash


open "${HOME}/Library/Application Support/MobileSync/Backup"
(sleep 0.1 ; osascript -e 'tell application "Terminal" to quit') &