如何在 Linux bash 中创建采用位置参数的别名?

如何在 Linux bash 中创建采用位置参数的别名?

假设我有一个 bash 命令,带有几个选项和我感兴趣的变量(例如文件名):

my_cmd option1 option2 filename

我创建了一个别名:

alias my_cmd_12="my_cmd option1 option2"

这样我就不用输入所有选项了。不过我感兴趣的变量后面有一些标志(例如 filename):

my_cmd option1 option2 filename --flag1

如何创建一个采用所有选项和标志的别名:

my_alias filename相当于

my_cmd option1 option2 filename --flag1

答案1

您不能使用别名执行此操作。别名的工作原理是将字符串替换为另一个字符串。使用此别名定义

alias my_cmd_12="my_cmd option1 option2"

my_cmd_12 filename --flag1将扩大到

my_cmd option1 option2 filename --flag1

但你想调用my_alias filename以获得相同的结果。没有办法my_alias用另一个字符串替换,因此--flag1出现在最后

然而,一个函数应该起作用:

my_function() { my_cmd option1 option2 "$1" --flag1; }

请注意,这只是针对您的示例量身定制的最小解决方案。通常,您可以"$@"根据自己的具体需要使用更多位置参数或条件语句等。函数比别名灵活得多。

更多信息请点击这里:在 Bash 中,何时使用别名,何时使用脚本,何时编写函数?

相关内容