将别名添加到 bashrc 到 运行 多个命令并传递一个变量?

Adding alias to bashrc to run multiple commands and pass a variable?

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

$ activator
$ clean
$ compile
$ run 9002

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

$ activate 9002

通常我想我会知道如何执行此操作,但这里的问题是它需要等到上一个命令完成并出现提示 returns。另外,如果我执行 $ activate 9000 那么最后一个命令将 运行 $ run 9000

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

您可以使用分号将多个命令合并到一个别名中:

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

那你可以用name_goes_here 9002.

或者,如果您需要更复杂的东西,请考虑创建一个函数。它们更加灵活。

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

  • ";"分隔命令
  • “$1”作为您的第一个参数。

它给你以下别名:

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

希望有所帮助。

编辑:

我的错。您可以将 $1 用于函数,而不是别名。

如果你只想在前者成功完成后才继续执行后面的命令,请使用 && 而不是 ;,如下所示:

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

对于一般情况,别名对于这项工作来说是错误的工具。

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

例如,一个 shell 函数与别名的用法完全相同,可以这样写:

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

...但您还可以添加其他要执行的步骤命令接受参数之后,别名不允许:

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