是否可以获取并存储通过 applescript 或 bash 打开的终端的返回窗口 id?

是否可以获取并存储通过 applescript 或 bash 打开的终端的返回窗口 id?

我一直在研究这个“仪表板”,以帮助控制我的本地服务器环境。它已在 bin/bash 中编写了脚本以供参考。我最近发现我可以使用 bin 命令“osascript”通过终端执行“AppleScript”式命令,并且正在尝试将其合并到我的仪表板中。这样,我可以通过一个窗口执行命令并控制我的本地服务器,而在后台它可以打开单独的任务而不会妨碍主窗口。

这是我围绕这个概念的主要问题,我注意到在执行 osascript 命令时,它会返回以下信息:窗口 ID 11148 的选项卡 1。

这是我的.sh 脚本中的 bash 语句:

osascript -e "tell application \"Terminal\" to do script \"cd $devFolder;svn up\""

这是我在终端中看到的输出:

tab 1 of window id 11197

最初,我只想让它打开一个新选项卡,但只要让它工作,我就可以打开一个窗口。所以正如我的问题所述,是否可以以某种方式存储或检索刚刚创建的终端窗口的窗口 ID?允许我与该特定窗口交互并控制它?

答案1

从 AppleScript 编辑器:

tell application "Terminal"
    set windowInfo to do script "echo \"hi user273298\""
    do script "echo \"hi adayzdone\"" in windowInfo
end tell

编辑

osascript -e '
tell application "Terminal"
    set windowInfo to do script "echo \"hi user273298\""
    do script "echo \"hi adayzdone\"" in windowInfo
end tell
'

答案2

添加选项卡和窗口 ID 作为in说明符:

tab=$(osascript -e 'tell app "Terminal" to do script "uptime"');osascript -e 'tell app "Terminal" to do script "uptime" in '"$tab"

您还可以使用in window 1在现有窗口中运行命令:

osascript -e 'tell app "Terminal" to do script "uptime"';osascript -e 'tell app "Terminal" to do script "uptime" in window 1'

答案3

targetWindowName=$(osascript -e 'tell application "Terminal" to set newWindow to do script "bash -c echo Hello World"')

window_id=$(echo ${targetWindowName} | sed 's/.*window id \([0-9]*\).*/\1/')

echo ${window_id}

相关内容