我正在运行 Ubuntu 21.04 并且我想创建一个脚本,它将执行以下操作:
跑步:
cd && cd path/to/repo && git pull && npm i && code . && npm run dev
然后使用以下命令打开一个新的 GNOME 终端选项卡:
gnome-terminal --tab
然后切换到此选项卡并运行:
cd && cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev
所以基本上我想要一个带有 2 个选项卡的终端来运行 2 个开发服务器。
我尝试使用xdotool
和xte
,但是它不起作用(甚至没有按下键)。
我还能做我想做的事吗?
按照下面的建议我尝试了一下,它给了我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 个终端窗口(丑陋,我想要选项卡)。
确实不知道如何解决这个问题。