Bash Alias / Function用于传递没有前面空格的arg

时间:2018-04-26 18:56:54

标签: bash git function alias

这是我在.bash_aliases中的内容:

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

这是一个电话,结果是:

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="$1"; }

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

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

具有完全相同的结果。

我想要发生的事情:

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

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

中建议的事情

2 个答案:

答案 0 :(得分:0)

您尝试过的以下代码应按预期运行。

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

然后这样称呼它:

gga "remove private"

如果它没有按预期工作,请尝试运行type gga,看看函数定义是否与您定义的匹配。它还有助于捕获其他命令/别名等的阴影。

应该返回这样的内容:

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

答案 1 :(得分:0)

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

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