将别名添加到 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; }
不擅长创建别名,但我有几个命令要 运行,我想一次完成它们。
$ 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; }