如何通过AppleScript在Mac终端同一窗口内执行多条命令
问题原因
AppleScript 调用「终端」的do script命令时,默认每次调用都会新建独立窗口执行指令,因此你当前的写法会触发两次窗口创建,分别执行两条cd命令。
解决方法
方法1:指定同一执行目标(推荐,适合命令逻辑需要拆分的场景)
第一次执行do script时会返回对应的终端标签页对象,后续命令指定该对象作为执行目标即可,修改后代码如下:
set desktop_folder to "$HOME/Desktop" tell application "Terminal" -- 执行第一条命令,保存对应的标签页对象 set currentTab to do script "cd ~/Desktop" -- 后续命令指定在当前标签页中执行 do script "cd myfolder" in currentTab end tell
如果需要复用已经打开的当前活跃窗口的标签页,也可以直接写成do script "xxx" in front window。
方法2:多条命令拼接一次性执行(适合短命令场景)
把所有要执行的命令用分号分隔,一次性传给do script即可,不需要额外指定执行目标:
set desktop_folder to "$HOME/Desktop" tell application "Terminal" do script "cd ~/Desktop; cd myfolder" end tell
注意:原代码中的
cd desktop是相对路径写法,依赖终端默认工作目录,建议替换为带~的用户目录写法或者绝对路径,避免执行失败。
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

