【发布时间】:2020-11-12 07:57:22
【问题描述】:
作为系统管理员,我编写/测试/运行了大量的 shell 脚本(通常来自 BBEdit)。我非常依赖 BBEdit “在终端中运行”下拉菜单来快速测试运行脚本。
因此,我最终得到了大量“死”(不需要/过期)终端窗口(即在底部显示“[进程完成]”的已执行脚本窗口)。
有没有人建议如何清理所有这些死掉的终端窗口 em-masse?
我不能盲目地关闭 所有 窗口(或退出 Teminal.app),因为我有当前的 SSH 会话正在运行并且其他任务正在进行中。我只想关闭已通过 BBEdit 执行的终端窗口并显示“[进程完成]”。
我无法设置 Apple Terminal.app 首选项来为我执行此操作(终端 -> 首选项 -> 设置 -> 外壳 -> 外壳退出时),因为我通常想检查关闭之前返回的输出用于 QA 目的。
我的目标是不时手动运行脚本/命令,以根据需要按需清理所有终端窗口。一旦我有大量我不需要的令人困惑的死窗口,我会运行它,然后根据需要继续在 BBEdit 中工作。
经过几个小时的编写/故障排除/编辑脚本(或多个脚本)后,我最终得到了几十个死终端窗口 - 我通过单击和 Command + W 手动关闭这些窗口. 这当然会很乏味。
我已经在 AppleScript 中尝试了一些绑定到快捷方式或小部件的东西,但目前还没有找到解决方案。
简单的命令如
tell application "Terminal" to close (get window 1)
不太有用,因为我无法确定哪些窗口处于非活动状态,哪些没有。
想法?任何建议表示赞赏!
【问题讨论】:
-
这些 Terminal 会话是否有可能具有
exit'ed,(即您要关闭的那些具有 “[进程完成]”的会话 显示在底部),存在于 Window 的 Tab 中,并且同一 Window 可能包含其他 Tabs是否也有开放/活跃的会话? -
@RobC,如果 Terminal window 或 tab 有一个活动进程,并且默认设置正在运行,然后例如
tell application "Terminal" to close (every window whose processes = {})不会关闭具有活动进程的窗口。它将关闭满足条件的 tabs(和 windows)。 -
因未能接受答案而被否决。当您接受答案时告诉我,我将撤回反对票。谢谢。
标签: macos terminal applescript