假设我有一个 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 中,何时使用别名,何时使用脚本,何时编写函数?