在终端中运行命令的脚本,然后打开新的终端选项卡并运行另一个命令

在终端中运行命令的脚本,然后打开新的终端选项卡并运行另一个命令

我正在运行 Ubuntu 21.04 并且我想创建一个脚本,它将执行以下操作:

  1. 跑步:

    cd && cd path/to/repo && git pull && npm i && code . && npm run dev
    
  2. 然后使用以下命令打开一个新的 GNOME 终端选项卡:

    gnome-terminal --tab
    
  3. 然后切换到此选项卡并运行:

    cd && cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev
    

所以基本上我想要一个带有 2 个选项卡的终端来运行 2 个开发服务器。

我尝试使用xdotoolxte,但是它不起作用(甚至没有按下键)。

我还能做我想做的事吗?

按照下面的建议我尝试了一下,它给了我failed to run cd所以我用谷歌搜索并得出了以下内容:

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && code . && npm run dev" --tab -- /bin/bash -e -c "cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev"

但问题是它npm run dev不应该停止,所以第二个终端选项卡永远不会打开。我需要同时运行它们……

答案1

虽然gnome-terminal表示该-e选项已被弃用,但它在 3.40.3 中仍然有效。

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.

开发人员似乎忘记了这是实现所需功能的唯一方法,即在选项卡中自动设置不同的工作环境。“新”语法在选项末尾添加要运行的命令,但--不允许这样做。一旦-e删除该选项,您将需要转到另一个终端仿真器才能执行此类操作。

例如,到目前为止,这个仍然有效:

gnome-terminal --tab -e "htop" --tab -e "top"

用您的自定义脚本替换命令htop和。top

答案2

所以sh脚本的内容是:

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

感谢@vanadium 帮助找到谷歌搜索的方向;)

它确实按预期工作。如果我打开终端并写入,sh myScript.sh它将打开 2 个额外的选项卡,其中运行后端和前端存储库。

一个小问题是,如果我双击执行 sh 文件,它将打开 2 个终端窗口(丑陋,我想要选项卡)。

确实不知道如何解决这个问题。

相关内容