在 bash 中为具有默认参数的函数别名

Aliasing a function with default parameters in bash

我想为现有函数创建一个别名来传递一些参数。此外,别名应该能够获取原始函数的任何标志并正确解析它们。在我的具体情况下,我使用 ag.

当使用 zsh 时,我可以在我的 .zshrc 文件中添加

alias -g ag="ag --nogroup --smart-case"

如何在仅 bash 的环境中获得相同的效果?代码

myfunc() {
    ag --nogroup --smart-case "$*"
}

alias ag=myfunc

适用于基本情况(即 ag hello)但不接受 ag hello --context 2

中的参数

使用正确的参数替换很重要。

ag() {
  command ag --nogroup --smart-case "$@"
}

由于这种情况很简单(所有额外的参数都放在最后)别名就足够了:

alias ag="ag --nogroup --smart-case"

-g 选项对 bash alias 无效。