【问题标题】:Close Unwanted Mac Terminal Windows En-masse关闭不需要的 Mac Terminal Windows En-masse
【发布时间】: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,(即您要关闭的那些具有 “[进程完成]”的会话 显示在底部),存在于 WindowTab 中,并且同一 Window 可能包含其他 Tabs是否也有开放/活跃的会话?
  • @RobC,如果 Terminal windowtab 有一个活动进程,并且默认设置正在运行,然后例如tell application "Terminal" to close (every window whose processes = {}) 不会关闭具有活动进程的窗口。它将关闭满足条件的 tabs(和 windows)。
  • 因未能接受答案而被否决。当您接受答案时告诉我,我将撤回反对票。谢谢。

标签: macos terminal applescript


【解决方案1】:

终端中的每个“窗口”对象都有一个名为“进程”的属性,它是该窗口的活动进程列表。

如果“进程”列表为空(在 AppleScript 术语中,processes = {}),那么您可以安全地关闭窗口。

因此,这样的 AppleScript 应该可以工作:

tell application "Terminal"
    
    set windowsICanClose to (every window whose processes = {})
    
    repeat with windowToClose in windowsICanClose
        close windowToClose
    end repeat
end tell

您可以将其保存为脚本,将其放在 BBEdit 的“脚本”文件夹中,如果您愿意,可以为它分配一个等效的键盘,这样就可以了。

【讨论】:

  • 无需重复循环。
  • 谢谢里奇。那成功了。我忙于“修复”的那些烦人的事情之一。 COVID-19 让我深入研究了这些小事,并(希望)微调了我的日常管理工作流程。非常感谢。
【解决方案2】:

很简单:

tell application "Terminal" to close (every window whose processes = {})

这将关闭 Terminal 的每个窗口[Process completed]


只是为了清楚..如果例如你有一个 Terminal window 打开有多个 tabs,然后tell application "Terminal" to close (every window whose processes = {}) 只关闭有@987654324 的 tabs @ 而不是该窗口中的任何其他标签window 只有在 window 的唯一 tab 包含 [Process completed] 时才会关闭。也就是说,无论如何都是在ma​​cOS High Sierra下测试的结果。

【讨论】:

  • 这成功了。在 AppleScript 的上下文中没有正确使用动词 has。
猜你喜欢
  • 2019-07-24
  • 2011-05-27
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2015-09-18
相关资源
最近更新 更多