在不同选项卡中并发执行脚本 windows
Concurrent execution of script in different tab windows
我正在尝试在不同的 Mac 终端选项卡中同时克隆 git 存储库,因为它们需要很长时间才能克隆下来。
我尝试了下面的很多变体,但似乎无法获得每个单独的克隆,然后在 3 个单独的终端选项卡中同时执行命令,运行,关于如何做的任何想法我可以更改以下内容以实现这一点,而无需安装诸如 ttab 之类的外部内容?
cwd=$(pwd)
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone git@github.com:me/myrepo1.git && cd myrepo1 && git pull && nvm use && npm install &" in selected tab of the front window' &
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone git@github.com:me/myrepo3.git && cd myrepo2 && git pull && nvm use && npm install" in selected tab of the front window' &
git clone git@github.com:me/myrepo3.git && cd myrepo3 && git pull && nvm use && npm install
这样就可以了。
#!/bin/bash
declare -a repos=("myrepo1" "myrepo2" "myrepo3")
me="git@github.com:me"
pwd=`pwd`
for i in "${repos[@]}"
do
osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"cd $pwd; git clone $me/$i.git && cd $i && git pull && nvm use && npm install\" in front window" -e "end tell" > /dev/null
done
备注:
- 你不应该在克隆一个 repo 后使用
git pull
,但我还是将它保留在脚本中,因为它不会造成任何伤害。
- 如果您使用
nvm use
,请确保您在每个项目的根目录中都有一个包含指定节点版本的 .nvmrc
文件。否则 nvm use
将不起作用。
- 您可能已经知道这一点,但我想在
如果您的脚本没有 运行.
我正在尝试在不同的 Mac 终端选项卡中同时克隆 git 存储库,因为它们需要很长时间才能克隆下来。
我尝试了下面的很多变体,但似乎无法获得每个单独的克隆,然后在 3 个单独的终端选项卡中同时执行命令,运行,关于如何做的任何想法我可以更改以下内容以实现这一点,而无需安装诸如 ttab 之类的外部内容?
cwd=$(pwd)
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone git@github.com:me/myrepo1.git && cd myrepo1 && git pull && nvm use && npm install &" in selected tab of the front window' &
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone git@github.com:me/myrepo3.git && cd myrepo2 && git pull && nvm use && npm install" in selected tab of the front window' &
git clone git@github.com:me/myrepo3.git && cd myrepo3 && git pull && nvm use && npm install
这样就可以了。
#!/bin/bash
declare -a repos=("myrepo1" "myrepo2" "myrepo3")
me="git@github.com:me"
pwd=`pwd`
for i in "${repos[@]}"
do
osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"cd $pwd; git clone $me/$i.git && cd $i && git pull && nvm use && npm install\" in front window" -e "end tell" > /dev/null
done
备注:
- 你不应该在克隆一个 repo 后使用
git pull
,但我还是将它保留在脚本中,因为它不会造成任何伤害。 - 如果您使用
nvm use
,请确保您在每个项目的根目录中都有一个包含指定节点版本的.nvmrc
文件。否则nvm use
将不起作用。- 您可能已经知道这一点,但我想在 如果您的脚本没有 运行.