Как поместить мои аргументы в команду псевдонима 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'. Если требуются аргументы, следует использовать функцию оболочки (* обратите внимание на функции оболочки::).

Функции - это то, что нужно, и их можно так же легко написать, как псевдоним. В этом случае это может быть

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }
Другие вопросы по тегам