[英]How to concat multiple bash commands?
拥有这个 bash_profile 命令,尝试在一个别名命令中运行后端和前端服务器,即ins
alias is='ivui && npm run start:backend'
alias ib='ivbe && npm run start:dev'
alias ins='ib && is'
指的是不同的项目文件夹并启动服务器,而 ib 也指的是不同的文件夹和服务器。 尝试连接两者,但第一个仅触发并且 && 的连接不执行。
Concat npm
有助于将两个服务器从单个项目文件夹中组合起来,但想知道我们如何使用bash_profile
来完成这项工作? 因此,通过只执行ins
,它必须先启动后端服务器,然后还要启动前端。
您的双重别名命令( ib && is
)不起作用的原因是,根据man bash
:
当字符串用作简单命令的第一个单词时,别名允许将字符串替换为单词。
按道理说,如果您运行ib && is
ib
和is
都是别名的地方,它只会运行ib
。
有了这一点,就有了一个不同的,我相信,更好的解决方案来解决您的问题。 您可以使用screen
在后台运行这两个命令,并且作为奖励,您可以随时观看他们的终端 output。
思路是这样的:1.启动一个screen
session; 2.在session里面打开两个windows; 3. 运行npm run start:backend
在第一个 window 并运行npm run start:dev
在第二个 Z05B8C74CBD972FBF2Z24。
这是您需要的:
screen -S Servers -t backend_window -A -d -m
screen -S Servers -X screen -t dev_window
这将启动一个screen
session,其中包含backend_window
和dev_window
。 现在您只需要在这些 windows 中运行 2 个命令:
screen -S Servers -p backend_window -X stuff $'npm run start:backend\n'
screen -S Servers -p dev_window -X stuff $'npm run start:dev\n'
现在您的两个 npm 命令同时在后台运行。 您可以将这 4 行放入您的.bashrc
文件中,它将在登录时启动。
但这种方法的最佳之处在于,您可以通过附加屏幕并查看 windows 内部来直观地看到这些 npm 命令发生了什么。 赶紧跑:
screen -rx Servers
这将默认显示您的第一个 window。 让我们拆分屏幕并并排显示 windows:
Ctr-A + | <- will split the screen into 2 sections
Ctr-A + Tab <- will shit cursor to the new section
Ctr-A + " <- will show you your 2 windows, just pick the dev
请记住,即使在您注销后,您的 npm 命令也将继续运行。 要杀死它们,请按照上述方法附加屏幕,然后按 Ctrl-C 两个进程。 或者只是运行killall screen
,他们就会死掉。
您可以创建一个 function 并在其中添加您的别名,例如,
stopdev () (
cd "$HOME/website" && {
make website_stop
ret=$?
make backend_stop && return $ret
}
)
这个例子也有一个返回码,并且有一个子shell调用来运行function,所以在调用function之后文件路径不是$HOME/website
。
有关以下网页的更多信息, https://unix.stackexchange.com/questions/266063/why-cant-i-call-two-aliases-with
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.