Bash Alias/Function 用于传递没有前置 space 的 arg

Bash Alias/Function for passing an arg without preceding space

这是我的 .bash_aliases:

function gga { git log --all --grep=; }

这是一个调用,其结果:

gga "remove private"
fatal: ambiguous argument 'remove private': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

我也试过了

function gga { git log --all --grep=""; }

function gga { git log --all --grep=''; }

function gga { git log --all --grep="$@"; }

结果完全相同。

以及我想要发生的事情:

$ git log --all --grep="remove private"
commit 1916fca1a5609cec7474b5d507fa8760d4877648
...

我做错了什么?有没有办法做到这一点? AFAICT 我正在做

中建议的事情

您尝试的以下代码应该可以正常运行。

function gga { git log --all --grep=""; }

然后这样称呼它:

gga "remove private"

如果没有按预期运行,请尝试运行 type gga,看看函数定义是否与您定义的相符。它还有助于捕捉其他 commands/aliases 等

的阴影

应该return像这样:

$ type gga
gga is a function
gga () 
{ 
    git log --all --grep=""
}
function gga { git log --all --grep="$@"; }

这是我尝试的第一个功能,是正确的。所有尝试都被别名隐藏。