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

motam79

可以说我有一个bash命令,其中包含几个选项和我感兴趣的变量(例如,文件名):

my_cmd option1 option2 filename

我创建了一个别名:

alias my_cmd_12="my_cmd option1 option2"

这使我可以删除所有选项的键入。但是,在我感兴趣的变量之后有一些标志(例如,文件名):

my_cmd option1 option2 filename --flag1

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

my_alias filename 相当于

my_cmd option1 option2 filename --flag1

卡米尔·马乔洛夫斯基(Kamil Maciorowski)

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

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中,何时使用别名,何时编写脚本以及何时编写函数?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章