如何将我的参数放入 Bash 别名命令?

如何将我的参数放入 Bash 别名命令?

我的 .bashrc 中通常有以下简单别名:

alias g="grep --color=always --exclude-dir=\*.svn\*"

但是现在我必须在仅有 GNU grep 2.5 的系统上工作,因此没有--exclude-dir争论。

现在我需要这样的东西来工作:

alias g="grep --color=always $1 $2 | grep -v .svn"

但当然,参数会附加到别名的末尾。 $1 和 $2 是在创建别名时解析的,而不是在调用别名时解析的,即使使用强引号。

我可以不借助额外的脚本或功能来解决这个问题吗?

答案1

不可以。正如 bash 手册所述:

没有在替换文本中使用参数的机制,如在“csh”中。如果需要参数,则应使用 shell 函数(*注释 Shell 函数::)。

函数是适合这种情况的,并且编写起来和别名一样简单。在这种情况下,它可以是

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }

相关内容