我有关于将命令链接到bash shell 中的一个特定二进制文件的一般性问题,示例来自 Magento(用例)
在 Magento 中,您通常希望将许多命令链接在一起 - 它们需要很长时间,因此为了以批处理方式运行,您可能会这样做:
bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush
最初我将这些命令链添加到 中~/.bash_aliases
,但获得一致的命令组并不像我想象的那么容易。
我已经将二进制文件添加到我的 PATH 中,但我想知道您是否可以链接命令,使其看起来像这样:
mag_chain setup:upgrade setup:di:compile cache:flush
这可能吗?
如果没有,是否有 bash 的解决方案可以让我朝着正确的方向前进?
bash 没有内置的方法来执行此操作,但是您可以编写脚本而不用太麻烦。主要的棘手问题是能够弄清楚一个命令在哪里结束,下一个命令从哪里开始。我不知道磁电机,所以这是一个难以置信的例子,但假设你要跑
...应该这样做
magento help && magento setup:upgrade
,还是只是magento help setup:upgrade
?一种可能性是使用引号将每个单独的命令作为单个参数传递:拆分单个命令的参数有点混乱。bash 有一个内置的方法来做到这一点,通过使用不带双引号的参数,但在某些情况下会出现奇怪的问题;
xargs
在拆分单词方面做得更合理,所以使用它。其他一些需要担心的事情:确保检查每个步骤是否有错误,如果有错误则取消链的其余部分。另外,我不确定实际的
magneto
命令本身应该是什么。您使用bin/magneto
了 ,但假设该magneto
文件是直接可执行的(即您不需要php bin/magneto
),并且它位于当前工作目录下的“bin”目录中。所以我把磁铁命令放在一个数组里,这样很容易改变。