我一直在研究这个“仪表板”,以帮助控制我的本地服务器环境。它已在 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}