繁体   English   中英

如何连接多个 bash 命令?

[英]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 ibis都是别名的地方,它只会运行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_windowdev_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM