我使用的是运行Ubuntu的Windows终端。我的目标是打开5个不同的选项卡,导航到每个选项卡中的特定目录,并在其中启动某些服务。
作为奖励,为了整洁起见,我想给标签上色并命名,但这不是至关重要的。
#!/usr/bin/env sh
# simple demo script for launching all desired services at once
cd /main/directory
sudo service redis-server start
sudo service postgresql start
# Note this does not yet work as desired. The tabs are generated, but the command after the color value execute in the current tab, and not the newly created tab.
cmd.exe /c "wt.exe" --window 0 new-tab --title "APIService" --tabColor "#E74C3C" && cd apiserv/ && npm start
cmd.exe /c "wt.exe" --window 0 new-tab --title "AuthServ" --tabColor "#F39C12" && cd authserv/ && npm start
cmd.exe /c "wt.exe" --window 0 new-tab --title "MainServ" --tabColor "#F4D03F" && cd mainserv/ && rails s
cmd.exe /c "wt.exe" --window 0 new-tab --title "Sidekiq" --tabColor "#3498DB" && cd mainserv/ && sidekiq
cmd.exe /c "wt.exe" --window 0 new-tab --title "ClientServ" --tabColor "#27AE60" && cd clientserv/ && yarn start
我认为我已经拥有了实现预期结果所需的大部分(或至少部分)组件——让服务单独运行没有问题——但显然我缺乏一些bash知识,无法让它们一起正常工作。它将打开一个选项卡,颜色和(暂时)名称,但命令的其余部分(例如。",,CD apiserv/&&NPM start')在原始选项卡中执行,并且没有到达其他命令。
目前,如果我省略颜色值后面的命令(在每次出现时,从&&开始),将创建5个选项卡并着色。它们的标题会出现,但很快就会被默认名称覆盖。这是不理想的,但它不是一个主要的优先级。
下面给出了您需要的代码结构:
#!/usr/bin/env sh
wt.exe -w -1 new-tab --title "APIService" --tabColor "#E74C3C" bash -c "cd /tmp\; read -pEnter" ;
new-tab --title "AuthServ" --tabColor "#F39C12" bash -c "cd /tmp\; read -pEnter"
# ...
我现在没有wsl来测试(所以你可能需要一些调整),但是它在git-bash中工作。
您可能需要将bash -c
更改为wsl -e
或wsl -e bash -c