我的 .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 ; }