【问题标题】:How to avoid a zombie window when running MacOS shel/Applescript script运行 MacOS Shel/Applescript 脚本时如何避免出现僵尸窗口
【发布时间】:2016-10-03 00:02:52
【问题描述】:

我经常打开很多终端窗口,每个窗口都有一个 ssh 会话。为了简化流程,我有一系列如下所示的 shell 脚本:

#!/bin/sh
osascript <<EOS
tell application "Terminal"
    activate
    do script "set_background_color salmon; ssh alan@demo.znyx.com"
end tell
EOS

这行得通。我可以从 shell 提示符执行脚本,也可以在 Finder 窗口中单击它。 (为此,文件名后缀是 .command 而不是 .sh)

问题是,当我从 Finder 执行它时,我最终会在我打算打开的窗口后面看到一个死窗口(“进程完成”)。有什么办法可以摆脱它或一开始就不打开它?

更新:

other question 中的解决方案导致出现提供确认/审查/取消选项的对话框。这是不可取的。

【问题讨论】:

标签: macos applescript


【解决方案1】:

当您双击 .command 文件时,该文件将传递给终端,终端会创建一个窗口并执行其中的命令。 .command 文件中的命令使用 AppleScript 来告诉终端在另一个窗口中运行命令。

为什么不去掉中间人,把你想运行的终极命令——set_background_color salmon; ssh alan@demo.znyx.com——放在 .command 文件中?通过运行 AppleScript 删除这些东西。换句话说,你的 .command 文件的内容应该是:

set_background_color salmon
ssh alan@demo.znyx.com

或者,您可以从 .command 文件(&lt;&lt;EOS 和 EOS 之间的部分)中获取 AppleScript,将其放入 Script Editor.app,然后将其保存为小程序。

【讨论】:

  • 您的答案效果很好(越简单越好!),这就是我现在要使用的。我尝试使用 Applescript 的原因是我想最终以编程方式打开窗口——单击打开一整套类似于“打开窗口组”菜单选项的任何数字,除了已经建立的连接。不过那可以等一下。
猜你喜欢
  • 2012-10-12
  • 2011-09-20
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多