在bashrc中添加别名以运行多个命令并传递变量?

时间:2015-03-13 16:00:44

标签: bash shell command-line alias

不擅长创建别名,但我有几个命令要运行,我想一次完成所有这些。

$ activator
$ clean
$ compile
$ run 9002

我想将所有这些命令组合成一个命令,如:

$ activate 9002

通常我认为我会知道如何做到这一点但这里的问题是它需要等到上一个命令完成并且提示返回。此外,如果我执行$ activate 9000,则最后一个命令将运行$ run 9000

有没有办法在我的别名中执行此操作?

4 个答案:

答案 0 :(得分:3)

您可以使用分号在别名中组合多个命令:

alias name_goes_here='activator; clean; compile; run'

然后您可以使用name_goes_here 9002

或者,如果您需要更复杂的东西,请考虑改为使用函数。它们更加灵活。

答案 1 :(得分:1)

如果你想继续后面的命令只有当前者成功使用&&而不是;时才这样:

alias activate="activator && clean && compile && run"

答案 2 :(得分:0)

您可以使用2 bash语法系统:

  • &#34 ;;"分开命令
  • " $ 1和#34;作为你的第一个论点。

它为您提供以下别名:

alias activate="activator;clean;compile;run $1"

希望有所帮助。

编辑

我的坏。您可以将$ 1与函数一起使用,而不是别名。

答案 3 :(得分:0)

对于一般情况,别名是此作业的错误工具。

它将在这种特定情况下工作,因为它只是传递参数的最后一个命令,并且不需要条件逻辑,但函数是更安全的方法。 / p>

例如,对别名具有完全相同用途的shell函数可以这样编写:

activate() { activator; clean; compile; run "$@"; }

...但你也可以在命令参数之后添加其他步骤,别名不允许:

activate() { activator; clean; compile; run "$@"; cleanup; }