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

如何编写zsh脚本在新终端标签运行多条命令 支持跨操作系统

跨操作系统多命令执行解决方案

跨平台原生创建终端标签没有完全统一的通用实现,不同系统的默认终端程序差异较大,以下提供两种可行方案:

方案1:使用跨平台进程管理工具(更推荐)

该方案无需适配不同终端的接口,稳定性和兼容性更强,不需要单独开标签也可以统一管理所有进程:

  • 首选concurrently工具,属于Node生态的跨平台命令并发管理工具
    1. 安装:执行npm install -g concurrently全局安装
    2. 单条命令即可启动所有任务:
    concurrently "node index.js" "./gradlew run" "其他命令1" "其他命令2"
    
    特性:不同进程的输出日志会用不同颜色区分,按下Ctrl+C会统一终止所有运行中的进程,完全兼容Windows、macOS、Linux三大系统。
  • 如果你不想依赖Node环境,Linux和macOS可以使用tmux工具,支持拆分窗格或者开启标签管理不同进程,提前写好tmux会话配置即可一键启动所有任务,Windows可以通过WSL使用tmux。

方案2:分系统适配终端标签启动逻辑

如果你确实需要每个命令运行在独立的终端标签中,可以在脚本中判断当前操作系统,调用对应终端的开标签命令,示例bash脚本如下(Windows可以通过Git Bash、WSL运行,也可以对应改写成PowerShell脚本):

#!/bin/bash

# 优先执行执行完成后自动结束的短命令
echo "开始执行一次性任务"
# 替换为你自己的其他命令
your-command-1
your-command-2
echo "所有一次性任务执行完毕"

# 根据操作系统启动长期运行的命令
if [[ "$OSTYPE" == "darwin"* ]]; then
  # macOS 原生Terminal适配
  osascript -e 'tell application "Terminal" to do script "node index.js"'
  osascript -e 'tell application "Terminal" to do script "./gradlew run"'
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
  # Linux Gnome Terminal适配,使用其他终端可替换为对应命令
  gnome-terminal --tab -- bash -c "node index.js; exec bash"
  gnome-terminal --tab -- bash -c "./gradlew run; exec bash"
elif [[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
  # Windows Terminal适配,没有安装Windows Terminal可替换为CMD/PowerShell对应命令
  wt.exe new-tab powershell -NoExit node index.js
  wt.exe new-tab powershell -NoExit ./gradlew run
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:57:01