You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Shell脚本在macOS的iTerm中打开3个终端并执行指定命令?

在macOS的iTerm中用Shell脚本打开多窗口并执行指定命令的可行方案

我之前也踩过open -a iTerm --args这个坑——iTerm对open命令的参数支持确实不太友好,因为它有自己的脚本接口体系。下面给你两个经过验证的可行方案,都能实现打开3个新窗口并各自执行特定命令的需求:

方案1:用AppleScript(系统自带,无需额外安装)

macOS自带的AppleScript可以直接调用iTerm的内部接口,灵活性很高。你可以把下面的代码保存成.sh脚本,修改命令数组里的内容即可:

#!/bin/bash

# 替换成你需要执行的3个命令
TARGET_COMMANDS=(
  "cd /path/foo && npm run dev"
  "cd /path/bar && python3 main.py"
  "tail -f /var/log/nginx/access.log"
)

for cmd in "${TARGET_COMMANDS[@]}"; do
  osascript <<EOF
tell application "iTerm"
  # 创建新窗口(使用默认配置文件)
  create window with default profile
  # 在新窗口的当前会话中执行命令
  tell current session of current window
    write text "$cmd"
  end tell
end tell
EOF
done

关键细节说明:

  • create window with default profile:如果想指定特定的iTerm配置文件(比如你自定义的带颜色的profile),可以把default profile改成你的profile名称,比如"My Dev Profile"
  • write text "$cmd":这个操作会模拟用户输入命令并回车,所以命令会直接执行
  • 如果命令里包含双引号,记得把数组里的命令用单引号包裹,避免解析错误,比如'echo "Hello from iTerm"'

方案2:用iTerm官方命令行工具iterm2

iTerm提供了官方的命令行工具,语法更简洁,适合不想写AppleScript的场景。不过需要先通过Homebrew安装:

brew install iterm2

安装完成后,脚本可以写成这样:

#!/bin/bash

TARGET_COMMANDS=(
  "cd /path/foo && npm run dev"
  "cd /path/bar && python3 main.py"
  "tail -f /var/log/nginx/access.log"
)

for cmd in "${TARGET_COMMANDS[@]}"; do
  # 新建窗口并执行命令
  iterm2 new-window --command "$cmd"
done

额外功能:

如果需要指定窗口使用的配置文件,或者调整窗口位置,可以加参数:

# 使用指定配置文件新建窗口
iterm2 new-window --profile "My Dev Profile" --command "$cmd"

执行iterm2 new-window --help可以查看所有支持的参数,比如设置窗口大小、是否全屏等。

内容的提问来源于stack exchange,提问作者Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:18:48